实例:
class Demo3{
public static void main(String[] args){
/*定义四种整数的数据类型*/
byte b = 127;
short s = 50;
int i = 100;
long l = 10000l;
//常量5默认是int类型,b+5可能超出byte的最大值,所以jvm定义byte和short和char
//变量参与运算的时候数据类型会提升到int
int bresult = b + 5;
//short sresult = s + 1;错误
int sresult = s + 1;
System.out.println(bresult); //132
System.out.println(sresult); //51
//定义一个a字符,每一个字符都对应一个ascii码,在字符参与运算时是用ascii吗参与运算
char c = 'a';
//char变量参与运算的时候数据类型会提升到int
int cresult = c + 3;
System.out.println(cresult); //100
//byte和short和char直接运算也会转换成int
int sresult1 = b + s;
System.out.println(sresult1); //177
//常量的计算可以使用byte,short,char接收(常量的计算结果不能溢出)
byte iresult1 = 4+3;
System.out.println(iresult1); // 7
int i1 = 2147483647;
//如果int计算时发生溢出就会变为负值,不会自动转换成long
int i2 = i1 + 100;
System.out.println(i2); // -2147483549
long lresult1 = i1 + l;
System.out.println(lresult1); // 2147493647
float f = 1.5f;
//float类型和long类型计算,会转换成float,
float fresult = f + l;
System.out.println(fresult); // 10001.5
double d = 10.5d;
//float类型和double数据类型计算时,会转换成double
double dresult = d + f;
System.out.println(dresult); // 12.0
/////////////////////////////////////////////////////////////强制转换
//在java程序中同一个范围内变量名字不能重复
int i3 = 97;
//把int类型的数据强制转换成byte
byte b3 = (byte)i3;
//把int类型的数据强制转换成short
short s3 = (short)i3;
//把int类型的数据强制转换成char
char c3 = (char)i3;
System.out.println(b3); // 97
System.out.println(s3); // 97
System.out.println(c3); // a
int i4 = 202;
//注意如果被转换的值超过了要转换的值的最大值,转换时精度就损失了,不准确。
byte b4 = (byte)i4;
System.out.println(b4); // -56
//把long类型的数据转换成int
long l4 = 10000l;
int i5 = (int)l4;
System.out.println(i5); //10000
//把小数float转换成整型,直接把小数舍弃(非四舍五入)
float f1 = 12.5f;
int i6 = (int)f1;
System.out.println(i6); //12
//把小数double转换成整型,直接把小数舍弃(非四舍五入)
double d1 = 15.5f;
int i7 = (int)d1;
System.out.println(i7); // 15
}
}