类型转换:
由于Java是强类型语言,所以要进行运算的时候,需要用到类型转换。
图中优先级从低到高,小数优先级大于整数。
运算中,不同类型的数据需要转换为同一类型,然后进行运算。
强制类型转换:(类型)变量名 高--低
自动类型转换:不用写 低--高
1 public class Demo04 { 2 public static void main(String[] args) { 3 int i = 128; 4 byte b = (byte) i;//内存溢出,Byte范围-128~127 5 6 //强制类型转换:(类型)变量名 高--低 7 //自动类型转换:不用写 低--高 8 9 double c = i; 10 System.out.println(i);//128 11 System.out.println(b);//-128 高到低 12 System.out.println(c);//128.0 低到高 13 14 /* 15 注意点: 16 1.不能对布尔值进行转换 17 2.不能把对象类型转换为不相干的类型。例如不能把人变成猪,但是可以把一个男人变成一个女人 18 3.在把高容量转换为低容量的时候,强制转换,反之不用管。 19 4.转换的时候可能存在内存溢出(高-低),或者精度问题(小数,精度丢失问题) 20 */ 21 22 System.out.println((int) 23.7); //23 23 System.out.println((int) -45.99f);//-45 24 25 System.out.println("======================"); 26 char d = 'a'; 27 int e = d + 1; 28 System.out.println(e); //98 29 System.out.println((char) e);//b 30 31 } 32 }
注意:
public class Demo05 { public static void main(String[] args) { //操作比较大的数的时候,注意溢出问题 //JDK7新特性,数字之间可以用_分割,而且下划线不会被打印出来 int money = 10_0000_0000; int years=20; System.out.println(money);//1000000000 int total=money*years; long total2 =money*years; System.out.println(total);//-1474836480,计算的时候溢出了 System.out.println(total2);//默认是int,计算完后默认是int数你转换成long没用,还是-1474836480怎么解决呢? long total3=money*((long)years);//在计算前转换,将一个数转换为long类型就可以了。 System.out.println(total3);//20000000000 //L l 用L表示long类型,容易看成1。需要注意代码规范,从刚开始就抓起。 } }