数据类型转换
——————正方向————————>
char -> int -> long -> float ->double
byte -> short -> int -> long -> float -> double
<———————负方向————————
自动类型转换
正方向,小类型到大类型会自动完成。自动类型转换也叫"隐式类型转换",是自动发送的
规则是:符号位会自动扩增,负数补1,整数补0,保证补码数值不变。(整数到浮点转换会损失精度)
例
1 public class Demo { 2 public static void main(String[] args) { 3 char c = 'A'; //A对应的ASC编码为65 4 int i = c; //自动类型转换 5 System.out.println(i); //输出65 6 } 7 }
强制类型转换
强制类型转换,也叫显示类型转换,是按照反方向进行的转换,这种转换会溢出,或者损失精度,要注意数据的范围。
例:
1 public class Demo { 2 public static void main(String[] args) { 3 int i1 = 128+256;//00000000 00000000 00000001 10000000 4 byte b = (byte)i1;//砍掉前24位,剩余的部分100000000 5 System.out.println(b); //输出-128(所以需注意,强转要注意类型取之范围) 6 7 int i2 = 65; 8 char c = (char)i2; 9 System.out.println(c);//输出A 10 } 11 }