Java类型转换
byte, short, char -> int -> long ->float ->double
内存容量
低----------------------------------------------------------->高
注:浮点型优先级比整数型优先级高
强制转换
高—低 需要强制转换(类型)变量名
自动转换
低—高 直接自动转换
public class Demo01{
public static void main(String[] args)
{
int ia = 32;
long la = ia; //低 -- 高 ok
float fa = ia;//低 -- 高 ok
//byte ba = ia;//error 高 -- 低 需要强制转换
byte ba = (byte)ia;
/*
byte, short, char 内存容量相同
byte类型的值赋给char类型需要强制转换
char类型的值赋给byte类型需要强制转换
*/
short sa = 96;
byte ba = 100;
//char ca = sa;//error 需要强制类型转换
//char cb = ba;//error 需要强制类型转换
char ca = (char)sa;//ok
char cb = (char)ba;//ok
char cc = 'a';
//short sb = cc;//error 需要强制类型转换
//byte bb = cc;//error 需要强制类型转换
short sb = (short)cc;//ok
byte bb = (byte)cc;//ok
}
}
转换时需要注意的问题
1. 转换后溢出
2. 转换后丢失精度
public class Demo02{
public static void main(String[] args)
{
int i = 200;
byte b = (byte)i;
System.out.println("s=" + b);
float f = 32.8f;
int i2 = (int)f;
System.out.println("i2=" + i2);
}
}
结果:
s=-56
i2=32
JDK7新特性
数字之间可以加下划线(_)分割
输出10_0000_0000不会有下划线