基本数据类型之间的运算规则
前提:这里只讨论7种数据类型(boolean不在讨论范围内)
文章目录
一、自动类型提升
当容量小的数据类型的变量和容量大的数据类型的变量做运算的时候,结果自动提升为容量大的或者容量更大的数据类型
byte、char、short、int->long->float->double
说明:此处的容量大小仅指数的大小和范围,并不是数据类型所占字节的大小
例1:
byte b1 = 123;
int i1 = 1234;
byte i2 = b1 + i1;
System.out.println(i2);
编译不通过
例2:
byte b1 = 123;
int i1 = 1234;
int i2 = b1 + i1;
System.out.println(i2);
编译通过
特别的:当byte、char、short这三个数据类型一起运算时,变量的数据类型应该为int及其以上(包括它们三个自己和自己运算)
例3:
byte b = 5;
short s = 3;
short t = s + b;
System.out.println(t);
编译不通过
例4:
char c1 = 'a';//a为97
byte b2 = 123;
int i3 = c1 + b2;
System.out.println(i3);
float f2 = c1 + b2;
System.out.println(f2);
编译通过
二、强制类型转换
其实就是自动类型提升的一种逆运算
需要使用强转符()
例5:
long l1 = 125l;
short s2 ;
s2 = (short)l1;
System.out.println(s2);
编译通过
有可能会导致精度损失
例6:
double d2 = 123.4;
int i4 ;
i4 = (int)d2;
System.out.println(i4);
编译通过,但是损失了精度