类型转换
由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类转换
低 ---------------------------------------- > 高 byte,short,char->int->long->float->double
运算中,不同类型的数据先转化为同一类型,然后进行运算.
强类型转换
自动类型转换
小转大自动转,大转小强制转
Public class Demo04{ Public static void main(String [] args){ // int i =128; //dyte b= (byte)i;//内存溢出 //强制转换 (类型)变量名 高到低 System.out.println(i); System.out.println(b); //自动转换 低----高 System.out.println("========") int i=128; double b =i; System.out.println(i); System.out.println(b); /* 注意点: 1.不能对布尔值进行转换 2.不能把对象类型转换为不相干的类型 3.在把高容量转换为低容量的时候强制转换 4.转换的时候可能存在内存溢出,精度问题! */ System.out.println("========="); System.out.println((int)23.3); System.out.println((int)45.523f); System.out.println("=========="); char c='a';//a有自己的编码 int d=c+1; //System.out.println(d); 输出结果:98 System.out.println((char)d); 输出结果:b } }
拓展: public static void main(String[]args){ //操作比较大的数时注意溢出问题 //JDK7新特性 数字之间可以用下划线分割,但输出之后不会出现下划线 int money=10_0000_0000; int years=20; int total=money*years;//-1474836480 ,计算时溢出了 long total1=money*years;//还是-1474836480,默认int 因为计算之前就出问题了 long total2=money*((long)years);输出正常了,把任意一个先转化为long类型 System.out.println(total2); //long 后面尽量大写L,因为默认会把小写l认成1 }