public class dome1 { public static void main(String[] arge){ System.out.println("------------------------------"); int i =128; byte b =(byte)i; System.out.println(i); System.out.println(b); /*输出结果不对, 应该是一致的,结果不是一致的,说明有问题。内存溢出。 这是时候就需要用到强制转换,方法:(类型)变量名 强制转换 (类名)变量名 高--低 自动转换 低--高 */ /* 注意点: 不能对布尔值进行转换 不能把对象类型转换为不相干的类型 在把高容量转换到低容量的时候,强制转换 转换的时候可能跟存在内存溢出,或者精度问题! */ System.out.println("---------------------"); System.out.println((int)23.7);//实际输出是23 System.out.println((int)-45.89F);//实际输出是-45 //这里是精度问题,小数转整数会遇到的问题。 System.out.println("---------------------"); char c ='a'; int d =c+1; System.out.println(d); System.out.println((char)d); /*这里输出d是因为char是编码表, a在编码表里的数值是97,所以执行c+1会等于98 下面这里((char)d)输出的是b 是因为强制转换,c=a,d=c+1 因转换关系,所以输出b */ System.out.println("------------------------"); int money = 10_0000_0000;//JDK7新特性,数字之间可以用下划线分割 int years = 20; int tota1 = money*years; long tota2 = money*years; System.out.println(tota1);//输出值为-1474836480, // 结果是不对的,很显然,计算的时候内存溢出了 System.out.println(tota2); //现在是long类型了,输出依旧是-1474836480,原因是默认是int类型,转换之前就存在问题了 long tota3 = money*((long)years);//先把一个数据转换为Long类型 System.out.println(tota3); //先把一个数据转换为Long类型,就解决了内存溢出问题。 } }