java Day04-1
类型转换
-
运算中,不同类型的数据先转化为同一类型,然后进行运算
-
低到高
byte,short,char-->int --> long --> float --> double
-
案例1
public class Demo05 { public static void main(String[] args) { int i = 128; byte b = (byte)i; //内容溢出 // 强制转换 (类型)变量名 高--低 System.out.println(i); System.out.println(b); System.out.println("========================="); // 自动转换 低--高 int i1 = 128; double b1 =i1; //内容溢出 System.out.println(i1); System.out.println(b1); /* * 注意点: * 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); System.out.println((char)d); } } -
答案1
128
-128
================
128
128.0
================
23
-45
================
98
b
-
案例2
public class Demo06 { public static void main(String[] args) { //操作比较大得数的时候,注意溢出问题 //JDK新特性,熟悉之间可以用下划线分割 int money = 10_0000_0000; int years = 20; int total = money * years;//-1474836480,计算的时候溢出 long total2 = money * years; //默认int,转换之前已经存在问题 long total123 = money *((long) years); //先把一个数转换为Long System.out.println(money); System.out.println(total); System.out.println(total2); System.out.println(total123); //转换用L 尽量不用l } } -
答案2
1000000000
-1474836480
-1474836480
20000000000

浙公网安备 33010602011771号