类型转换
-
由于java是强类型的语言,所以要进行有些运算的时候,需要用到类型转换
低-----------------------------------------------------------------------------》高
byte,short,char----> int ----> long----> float ----> double
容量占比从低到高
-
运算中,不同类型的数据先转化为同一类型,然后再进行运算
public class Conversion { public static void main(String[] args) { int i =128; byte b =(byte) 128;//强制转换 (类型)变量名 高到低需要强制转换 //double b = 128; //自动转换 由低到高转换不需要强制 输入对应的变量类型加名字即可自动转换 //double i =128; //int b =128; //这是个错误代码,如果要运算不同类型的数,则必须要将类型转换为一样才能运算。 System.out.println(i); System.out.println(b); //得出结果是i = 128 b = -128 为什么会出现这样的结果呢?因为byte是JAVA中最小的整数类型,对着Byte按CTRL键可以看到byte最大只能表示 //最大只能表示127 出现-128的原因是内存溢出。 //--------------------------------------------------------------------------------------------------------------------- /*对于强制转换和自动转换的注意点: 1.不能对布尔值进行转换 2.不能把对象类型转换为不相干的类型 3.把大容量转换到低容量的时候需要强制转换 4.转换的时候可能遇到内存溢出,或者精度问题 */ System.out.println("---------------------------------------------------------------------------------------------"); System.out.println((int) 23.7); System.out.println((int) 45.89f); //得出的结果是 23 和 45 说明数据类型转换会存在精度问题 //以上是精度问题的举例 System.out.println("-----------------------------------------------------------------------------------------------"); char c=‘a‘; int d=c+1; System.out.println(d); System.out.println((char)(d)); //类型转换举例 //----------------------------------------------------------------------------------------------------------------------- int money = 1000_000_000;//数字之前可以用下划线分割,更好区分数字 int year = 20; int total = money*year; long total2 =money*year; long total3 =money*((long)(year)); System.out.println(total);//得出的结果是-1474836480 应该是2000000000 20亿 所以是计算的时候溢出了 System.out.println(total2);//得出的结果同样是-1474836480 由于是默认int 所以转换之前已经出现问题了 System.out.println(total3);//结果是200亿,