【类型转换】

发布时间:2026/7/8 3:34:05
【类型转换】 类型转换自动类型转换隐式转换算术运算中的自动提升强制类型转换显式转换类型转换规则表自动类型转换隐式转换发生在取值范围更小的类型赋值给取值范围更大的类型时。顺序从小到大byte→short→int char→long→float→double// 从char到int的自动转换charchA;intcharUnicodech;// A的Unicode值是65System.out.println(A的Unicode值: charUnicode);// 65算术运算中的自动提升byte short char→int→long→float→double不同类型一起运算时向更大的类型提升inta10;doubleb3.5;doublesumab;方法参数传递也会自动提升publicstaticvoidprintNumber(doublex){System.out.println(x);}inta10;printNumber(a);// 输出10.0强制类型转换显式转换将取值范围大的类型转换为取值范围小的类型时需要强制转换可能丢失数据。强制类型转换语法(目标类型) 值publicclassTest{publicstaticvoidmain(String[]args){//double→intdoubled9.99;inti(int)d;// 直接截断取整数部分结果为9System.out.println(int di);// 9精度丢失//long→bytelongl130L;byteb(byte)l;// 130超出byte范围-128~127溢出System.out.println(byte lb);// -126数据溢出// 溢出原理解释// byte范围-128 ~ 127共256个数// 130 - 256 -126//float→intfloatf2.6F;inti2(int)f;System.out.println(int fi2);// 2// int→charintunicode97;charch(char)unicode;System.out.println(Unicode 97对应的字符: ch);// a// 常见的实用转换// int → Stringintnum100;// 方法一String.valueOf()Stringstr1String.valueOf(num);// 方法二拼接空字符串Stringstr2num;System.out.println(int → String: str1);System.out.println(int → String: str2);// String → int :Integer.parseInt()Stringstr3100;intnum3Integer.parseInt(str3);System.out.println(String → int: num3);// String → doubleDouble.parseDouble()Stringstr43.1415926;doublenum4Double.parseDouble(str4);System.out.println(String → double: num4);}}类型转换规则表转换方向是否强制转换是否丢失数据byte→short否否byte→char需要可能负数short→int否否int→long否否int→float否是精度long→float否是精度float→double否否double→int需要是char→int否否int→char需要可能超范围boolean和其他类型互相转换不能转换/