类型转换
- 强制类型转换
小数的优先级大于整数
例如
int a=100;
byte b=(byte)a;
- 自动类型转换
自动类型转换就是从低到高之间的转换。
int c=500;
double s=c;
注意点
1.不能对布尔值进行转换
2.不能类型转换为不相干的类型
3.把高容量类型转换为低容量类型的时候,强制转换。反之,自动转换。
4.转换的时候可能存在内存溢出或存在精度问题
例如:以下就是存在精度问题
System.out.println("==================");
System.out.println((int)23.7);
System.out.println((int)28.6f);
效果图:
- 那么接下来再看看自动类型转换
char si = 'a';
int sii=si+5;
System.out.println(sii);
效果图:
由此可见,字符类型是可以转成数字类型的,也正好验证了Unicode编码表了,每一个字符都对应了一个数字。
- JDK7新特性,数字之间可以用下划线分割
- 现在咱们来看看溢出问题
int mary=100_000_0000;
int marys=20;
int maryss=mary*marys;
System.out.println(maryss);
效果图:
由此可见,计算的结果溢出了。
- 那么如果我们用更大的数据类型long的结果会怎么样呢。
int mary=100_000_0000;
int marys=20;
long marysss=mary*marys;
System.out.println(marysss);
效果图:
因为他默认就是int类型,从转换之前就有问题。
那么咱们先把一个数转换为long
int mary=100_000_0000;
int marys=20;
long maryssss=mary*((long)marys);
System.out.println(maryssss);
效果图:
现在问题就解决了