1.Java 8种基本数据类型及其占空间大小
类型 | 空间大小 |
---|---|
boolean | 8bit/1byte |
byte | 8bit/1byte |
char | 16bit /2byte |
short | 16bit /2byte |
float | 32bite/4byte |
int | 32bite/4byte |
long | 64bite/8byte |
double | 64bite/8byte |
2.基本类型自动转换
自动类型转换:数字表示范围小的数据类型可以自动转换为范围大的数据类型
实线转换时不会造成数据丢失,虚线转换可能会出现数据丢失。
例:
byte b = 20;
int n = b;//byte类型可以自动提示到int
类型提升: 是指在多种不同数据类型的表达式中,类型会自动向范围表示大的数值的数据类型提升。
类型提升规则:
- 如果两个操作数其中有一个是double类型,另一个操作就会转换为double类型。
- 否则,如果其中一个操作数是float类型,另一个将会转换为float类型。
- 否则,如果其中一个操作数是long类型,另一个会转换为long类型。
- 否则,两个操作数都转换为int类型。(隐含意:如果在二元操作中,不存在double,float,long的话,那么byte、short、char类型都会被转化为int类型)
- final修饰的short, char变量相加后不会被自动提升。
例:
byte b1 = 12;
byte b2 = 15;
byte b3 = b1 +b2;//编译不通过,b1+b2会自动提升到int类型,再从int转byte类型会报错。
double d = 1.20;
float f = n + d;//编译不能通过,int+double,int自动提升到double类型,double类型转float报错
final byte b1 = 23;
final byte b2 = 14;
byte byte b3 = b1 + b2;//编译通过,final修饰的变量不再自动提升,byte+byte结果还是byte
3.Java强制类型转换
强制类型转换,可能丢失精度。
格式:目标类型 变量=(目标类型)源类型变量
int a =(int)3.14;
参考:
https://www.cnblogs.com/skipping/p/5449019.html
https://blog.csdn.net/zhaominpro/article/details/79602329
https://www.cnblogs.com/ljdblog/p/6253799.html
https://blog.csdn.net/youanyyou/article/details/80512252#commentsedit