类型转换
类型转换
-
java是强类型语言 ,所以要进行运算时要进行转换;
低--------------------------------------------------->高(指容量)
byte,short,char-->int-->long-->float-->double
-
小数的优先级一定大于整数
-
这里的从低到高,是指容量
-
-
运算中,不同类型的数据先转化为同一类型,然后进行运算;
-
public class Demo03 { public static void main(String[] args){ int i=128; //Byte byte b =(byte)i;//内存溢出 byte -128~127 //这里是 由int-->byte //强制转换 (类型)变量名 高——>低 //自动转换 低——>高 System.out.println(i); System.out.println(b); System.out.println("========================"); //低--------------------------------------------------->高(指容量) //byte,short,char-->int-->long-->float-->double int m=128; //Byte double n =(double) m; //这里是 由int-->double System.out.println(m); System.out.println(n); /* att: 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';//97 int d=c+1; System.out.println(d); System.out.println((char)d);//把 d转换为数字 //操作数比较大的时候注意溢出问题 //JDK7新特性,数字之间可以使用下划线分割,且不会被输出 int money =10_0000_0000; int years = 20 ; int total = money*years ;//-1474836480 计算时溢出 虽然是从低到高自动转换,但是因为这里溢出所以要强制转换 long total2=money*years ;//默认是int,转换之前已经存在问题了? long total3=(long)money*years ;//先把一个数转化为long //long total3=money*(long)years ;??为啥也可以 是因为优先级么 int*long=long 么? System.out.println(total); System.out.println(total2); System.out.println(total3); } }
浙公网安备 33010602011771号