Java基础03:类型转换
类型转换
-
由于Java是强类型语言,所以进行有些运算时,需要类型转换
低------------------------------------------------------------------>高
byte,short,char—>int—>long—>float—>double
-
运算中,不同类型的数据先转化成同一类型的数据,然后再运算
-
强制类型转换 (类型)变量名 高-->低
-
自动转换 低-->高
注意点:
- 不能对布尔值进行转
- 不能把对象类型转换为不相干的类型(男-->女
人-->猪) - 在把高容量变为低容量时强制转换,反之不用动
- 转换时可能出现内存溢出,或精度问题
-
内存溢出,进度丢失,强行转换
public class Demo04 { public static void main(String[] args) { int i=128; byte b=(byte) i;//内存溢出 byte:-128~127 double c=i; System.out.println(i); //输出128 System.out.println(b); //输出-128 内存溢出 byte:-128~127 System.out.println(c); //输出128.0 System.out.println("====================================="); System.out.println((int) 23.7); //输出23 精度丢失 System.out.println((int) -45.89f);//输出-45 精度丢失 System.out.println("====================================="); char d='a'; int e=d+1; System.out.println(e); //输出98 System.out.println((char) e);//输出b } }
-
关于大型数字之间的乘法
public class Demo05 { public static void main(String[] args) { //操作比较大的数的时候,注意溢出问题 //JDK7的新特性,数字之间可以用下划线分割,下划线不会被输出 int money=10_0000_0000; int years=20; int total=money*years; System.out.println(total);//输出-1474836480,计算时溢出 long total2=money*years;//先计算int*int=int,在转换成long,转换前已经出问题了 System.out.println(total2);//输出-1474836480,计算时溢出 long total3=money*((long)years);//先把一个数转换成long System.out.println(total3);//输出20000000000 //L和l,尽量写成大写的L,小写的可能会被看成1 } }