欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

04.Java的类型转换

程序员文章站 2022-07-10 18:50:48
类型转换(类型)变量名低容量--------------->高容量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

相关标签: 小菜鸟开始学Java