类型转换由低到高依次是:
byte,short,char——>int——>long——>float——>double
运算中,不同类型的数据先转换为同一类型再进行计算
两类:
强制类型转换 /自动类型转换
public class Demo4 { 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("================================="); 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);//98 System.out.println((char) d);//b } }
public class Demo5 { public static void main(String[] args) { //操作数比较大的时候,注意溢出问题 //JDK7新特性,数字之间可以用下划线分割 int money=1000000000; int years=20; int total=money*years;//-1474836480,计算的时候出错了 long total2=money*years;//默认是int,转换之前就已经出错了 long total3=money*((long)years);//先把一个数转换为long System.out.println(total3); } }