【类型转换】
📅 2026/7/8 3:46:04
👁️ 阅读次数
📝 编程学习
类型转换
- 自动类型转换(隐式转换)
- 算术运算中的自动提升
- 强制类型转换(显式转换)
- 类型转换规则表
自动类型转换(隐式转换)
- 发生在取值范围更小的类型赋值给取值范围更大的类型时。
- 顺序(从小到大):
byte→short→int & char→long→float→double
// 从char到int的自动转换charch='A';intcharUnicode=ch;// 'A'的Unicode值是65System.out.println("'A'的Unicode值: "+charUnicode);// 65算术运算中的自动提升
- byte & short & char→int→long→float→double
- 不同类型一起运算时,向更大的类型提升:
inta=10;doubleb=3.5;doublesum=a+b;- 方法参数传递也会自动提升:
publicstaticvoidprintNumber(doublex){System.out.println(x);}inta=10;printNumber(a);// 输出10.0强制类型转换(显式转换)
- 将取值范围大的类型转换为取值范围小的类型时,需要强制转换,可能丢失数据。
- 强制类型转换语法:(目标类型) 值
publicclassTest{publicstaticvoidmain(String[]args){//double→intdoubled=9.99;inti=(int)d;// 直接截断取整数部分,结果为9System.out.println("int d"+i);// 9(精度丢失)//long→bytelongl=130L;byteb=(byte)l;// 130超出byte范围-128~127,溢出System.out.println("byte l"+b);// -126(数据溢出)// 溢出原理解释:// byte范围:-128 ~ 127(共256个数)// 130 - 256 = -126//float→intfloatf=2.6F;inti2=(int)f;System.out.println("int f"+i2);// 2// int→charintunicode=97;charch=(char)unicode;System.out.println("Unicode 97对应的字符: "+ch);// 'a'// 常见的实用转换// int → Stringintnum=100;// 方法一:String.valueOf()Stringstr1=String.valueOf(num);// 方法二:拼接空字符串Stringstr2=num+"";System.out.println("int → String: "+str1);System.out.println("int → String: "+str2);// String → int :Integer.parseInt()Stringstr3="100";intnum3=Integer.parseInt(str3);System.out.println("String → int: "+num3);// String → double:Double.parseDouble()Stringstr4="3.1415926";doublenum4=Double.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和其他类型互相转换 | 不能转换 | / |
编程学习
技术分享
实战经验