04.Java的类型转换
程序员文章站
2022-04-15 23:07:04
类型转换(类型)变量名低容量--------------->高容量byte,short,char,int ,long,float,double运算的过程中,先把数据类型转换成同一类型才进行运算,在转换的过程中会遇到两种类型,自动转换和强制转换转换的注意点不能对布尔类型转换不能把对象类型转换成不相干的类型在把高容量转换成低容量时候进行强制转换转换的时候可能存在内存溢出,或者精度问题1.自动转换由低容量------>高容量转换1.直接赋值就可以,int转换成double...
类型转换
(类型)变量名
低容量--------------->高容量
byte,short,char,int ,long,float,double
运算的过程中,先把数据类型转换成同一类型才进行运算,在转换的过程中会遇到两种类型,自动转换和强制转换
转换的注意点
- 不能对布尔类型转换
- 不能把对象类型转换成不相干的类型
- 在把高容量转换成低容量时候进行强制转换
- 转换的时候可能存在内存溢出,或者精度问题
1.自动转换
由低容量------>高容量转换
1.直接赋值就可以,int转换成double
int i1 = 18;
double i2 = i1;
System.out.println(i2);//输出结果为18.0
2.char类型转换成int 类型,然后再相加
char c1 = 'a';
int i3 = 12 + c1;
System.out.println(i3);//输出结果为109
2.强制转换
由高容量------->低容量转换
1.int 转换成byte
int a =12;
byte b = (byte)a;//int 转换为byte类型
System.out.println(b);//结果为12
2.尽量避免内存溢出,下面这个例子为内存溢出
int i = 128;
byte j = (byte)i;//内存溢出
System.out.println(j);//输出结果为-128
3.浮点数转换成整型,精度丢失问题
double a1 = 10.23;
int a2 = (int)a1;
System.out.println(a2);//输出结果为10,取整
操作比较大的数时,注意溢出问题
JDK新特性,数字之间可以用下划线分割,下面的例子已经溢出了
int money = 10_0000_0000;
int year = 3;
int total_money = money*year;
System.out.println(total_money);//输出结果为-1294967296
这时候溢出,可能会想 把total_money写成long类型的就不会溢出,我们来看一下实际的结果,实际上还是溢出了,是先把money*year计算出来,此时的结果是int, 再转换成long类型,还是溢出的(转换之前已经存在问题了)
int money = 10_0000_0000;
int year = 3;
long total_money = money*year;
System.out.println(total_money);//输出结果为-1294967296
可以进行以下操作,防止溢出
int money = 10_0000_0000;
int year = 3;
long total_money = money*(long(year));
System.out.println(total_money);
本文地址:https://blog.csdn.net/weixin_44734148/article/details/107676585
上一篇: csp试题1:线性分类器
下一篇: JAVA学习记录day09