类型转换
1.JAVA是强类型语言,在进行某些运算时,需要用到类型转换
2.运算中,不同类型的数据先转化为同一类型,然后再进行计算
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KZFZUnOD-1626491771115)(C:\Users\63096\AppData\Roaming\Typora\typora-user-images\image-20210717103021397.png)]
优先级,小数更高
强制转换代码
public class demon01 {
public static void main(String[] args) {
int i=128;
byte b=(byte)i;//内存溢出
System.out.println(i);
System.out.println(b);
//强制转换 (类型)变量名 优先级高到低
//自动转换 优先级 低到高
}
}
强制转换的问题
//强制转换 (类型)变量名 优先级高到低
//自动转换 优先级 低到高
/*
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4转换的时候可能存在内存溢出,或精度的问题
*/
System.out.println((int)23.7);//高转低,要强制转换
System.out.println((int)-45.89f);
输出结果:23、-45
例二
char c='a';
int d=c+1;
System.out.println(d);//字符本身就是一个数字
System.out.println((char)d);//把数字再转回到字符
输出结果:98,b
例三
//操作比较大的数的时候要注意溢出问题
//JDK7新特性,数字之间,可以用下划线来分割
int money=10_0000_0000;
System.out.println(money);
int years=20;
int total=money*years;
System.out.println(total);//输出结果出现负数,说明溢出了
long total1=money*years;//默认是int,转换之前就出现问题了
System.out.println(total1);//转换了以后,仍然是负数
long total3=money*((long)years);
System.out.println(total3);//先把years转为long类型
输出结果:-1474836480(溢出)
20000000000