-
由于Java强类型语言,进行运算时,要用到类型转换。
byte、short、char→int→long→float→double
(低—————————————————高)
-
运算中,不同类型的数据先转换为同一类型,然后进行运算。
-
强制类型转换
-
自动类型转换
public class Demo04 { public static void main(String[] args) { int i = 128; byte b = (byte)i;//内存益处 //强制转换(高→低) 格式:(类型)变量名 //自动转换(低→高) System.out.println(i); System.out.println(b); /* 注意: 1.不能对布尔值进行转换; 2.不能把对象类型转换为不相干的类型; 3.在把高容量转换到低容量的时候,要强制转换; 4.转换的时候可能存在内存益出,或者精度问题。 */ System.out.println((int)23.7); System.out.println((int)-45.89f); char c = 'a'; int d = c+1; System.out.println(c);//输出显示:a System.out.println(d);//自动转换int类型 输出显示:98 System.out.println((char)d);//强制转换char类型 输注显示:b } }
public class Demo05 { public static void main(String[] args) { //操作比较大的书的时候,注意溢出问题; //JDK7新特性,数字之间可以用下划线分割 int money = 10_0000_0000; int years = 20; int total1 = money*years;//内存益处 输出显示:-1474836480 long total2 = money*years;//money、years默认是int类型,money*years计算的值也是int类型,money*years计算的值超过int类型的内存,int类型转换成long类型之前已经出现内存益处 输出显示:-1474836480 long total3 = ((long)money)*((long)years);//先把money、years转换成long类型,在计算long类型的money、years 输出显示:200_0000_0000 System.out.println(total1); System.out.println(total2); System.out.println(total3); } }