类型转换
由于JAVA是强类型语言,所以要有些运算进行的时候,需要用到类型转换
优先级从低到高
byte,short,char->int->long->float->double(小数的优先级大于整数)
-
强制类型转换 高--低
-
自动类型转换 低--高
int i=128; byte b=(byte)i;//强制 double c=i;//自动 //强制转换 (类型)+变量名 高--低 //自动转换 低--高 System.out.println(i); System.out.println(b);//因为byte最高只可以127内存溢出 System.out.println(c); /* * 注意点: * 1.不能对布尔值进行转换 * 2.不能把对象类型转换为不相干的类型 * 3.在把高容量转换到低容量的时候,强制转换 * 4.转换的时候可能存在内存溢出,或者精度问题! * */ System.out.println("============"); System.out.println((int)23.7); System.out.println((int)-45.89f); System.out.println("============"); char c='a'; int d=c+1; System.out.println(d);//自动转换 System.out.println((char)d);//强制转换
=========================================================================================================
//操作比较大的数的时候,注意溢出问题 //JDK7新特性,数字之间可以用下划线分割 int money=10_0000_0000; System.out.println(money); int years=20; int total=money*years; System.out.println(total);//出现负数,发生溢出 long total2=money*years; System.out.println(total2);//还是负数,没用 //因为money和years都是int,转换之前就出现问题了 //解决方法 long total23=money*((long)years);//先把一个数转换为long System.out.println(total23); //L l 尽量用大写字母表示long