(二十三)不同数据类型的转换有哪些规则
一、隐式转换:从低精度到高精度
byte<short<char<int<long<float<double
注意:
①char类型的数据转换成高级类型(int、long),会转换为其对应的ASCII码
②byte、char、short类型的数据在参与运算或自动转换成int,但是“+=”运算时,就不会产生类型的转换
char c='a';
int i=c;
System.out.println(i);//97转换成对应的ASCII码
byte b=1;
short s=2;
System.out.println(b+s+c); //1+2+97
二、强制类型转换
char c='a';
int i=(int)c;
System.out.println(i);
注意:
①在强制类型转换时可能会丢失精度(比如小数转换成整型,小数点后没了,即丢失精度)
②注意int到Boolean不会隐身转换,
int j=1;
if(j) //报错:Type mismatch: cannot convert from int to boolean
{
System.out.println(j);
}
③
short a=128;//0000000010000000
byte b=(byte)a;
System.out.println(b);
byte:1个字节,因为java数据类型是有符号的数据类型,所以-128~127。
截取后8位,最高位是符号位
负数的值计算方法
10000000:-128
10000001:-128+1=-127