Java基础04
类型转换
-
由于Java是强类型转换,所以要进行有些运算的时候是需要用到类型转换到的。
低------------------------------------->高
byte,short,char-> int -> long -> float -> double
-
运算中,不同类型的数据先转换成同一类型,然后进行运算。
-
类型转换分为强制类型转换,自动类型转换。
-
从高容量转换到低容量需要强制类型转换,比如int类型转换成byte类型。
public class Demo { public static void main(String[] args){ int i = 100; byte b = (byte)i; } }
-
从低容量转换到高容量则进行自动类型转换,比如double类型转换成int类型。
public class Demo { public static void main(String[] args){ int i = 100; double b = i; } }
-
注意点:
- 不能对布尔值进行转换。
- 不能把对象类型转换成不相干的类型。
- 转换的时候可能存在内存溢出或者精度问题!
public class Demo { public static void main(String[] args){ int i = 128; byte b = (byte)i; // 内存溢出,输出-128 System.out.println((int)23.7); // 丢失精度,输出23 System.out.println((int)-45.89f);// 丢失精度,输出-45 } }
- 操作比较大的数的时候注意溢出问题。
public class Demo { public static void main(String[] args){ int money = 10_0000_0000; int years = 20; int total = money * years; // 计算时溢出,输出-1474836480 long total2 = money * years; // 还是溢出,转换前就已经存在溢出问题了? long total3 = money * ((long)years); // 先把一个数转换成long类型,正确输出 } }
- long类型一般会在数字后面加上L表示,建议使用大写L,小写l容易被误认为数字1。
-