基本数据类型之间的运算规则:
前提:只说7种基本类型之间的运算,除boolean之外。
结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
byte、char、short ---> int ---> long ---> float ---> double
特别:当byte、char、short三种类型的变量做运算时,结果为int型
此时的容量大小指的是:表示数的范围的大和小。比如float容量要大于long的容量
易疏忽
byte b1 = 2;
int i1 = 129;
int i = b1 + i1;
long l = b1 + i1;
float f = b1 + i1;
System.out.println(i); //131 //最小也得用int接收,比他大的更可以
System.out.println(l); //131
System.out.println(f); //131.0
char c = ‘a‘;
int i2 = 10;
int i3 = c + i2; //最小也得用int接收,比他大的更可以
System.out.println(i3); //107
概念:自动类型提升运算的逆运算。
需要使用强转符:( )
注意点:强制类型转换,可能导致精度损失。
/**
* 强制类型转换
*/
//1.精度损失
double d = 12.3;
int i4 = (int)d; //截断操作,并不是四舍五入
System.out.println(i4); //12
//2.没有精度损失
long l1 = 123;
short s = (short)l1;
System.out.println(s); //123
// 精度损失,这个涉及到二进制
int i5 = 128;
byte b = (byte)i5;
System.out.println(b); //-128
原文:https://www.cnblogs.com/byd-hold-on/p/14111779.html