基本数据类型的变量间的运算规则
1.这里提到可以做运算的基本数据类型有七种,不包含boolean类型
2.运算规则包括:
? ? ? ? 自动类型提升
? ? ? ? 强制类型转换
规则:当容量小的变量与容量大的变量做运算时,结果自动转换为容量大的数据类型
byte ------>short ---------->?int ---->long ------> float? -------->double?
特别的:byte、short类型的变量之间做运算,结果为int类型?
说明:此时容量的小或大,并非指占用的内存空间的大小,而是指数据范围的大小
// 变量自动提升测试
class VariableAutoImproveTest {
public static void main(String[] args) {
byte a1 = 13;
short a2 = a1;
int a3 = a2;
long a4 = a3;
float f5 = a4;
double f6 = f5;
System.out.println(f6);
int a5 = a1 + a1;
int a6 = a1 + a2;
long a7 = a3 + a4;
float f7 = f5 + a7;
float f8 = 12.3f;
float f9 = 27.4f;
float f10 = f8 + f9;
System.out.println(f10);
// 特殊情况1
// 测试不通过
// byte = a1+ a1;
// short = a1 +a2;
// 特殊情况2:char
char c1 = 'a';
int c2 = c1 + a1;
System.out.println(c2);
// 练习1
long l5 = 123L;
long l6 = 123; // 理解为自动类型提升
// long l7 = 12377888888; 12377888888 理解为int类型,因为超出int类型,所以报错
long l7 = 12377888888L; // 此时的12377888888L就是使用8个字节存储的long类型的值
// 练习2
float fq1 = 12.3f;
// float fq2 = 12.3 不满足自动提升的规则, 12.3 会被认为是double类型
// 练习3
byte bq5 = 10;
// 整型常量规定为int类型
int iq5 = bq5 +1;
// 浮点型常量规定为doule 类型
double db5 = bq5 + 12.3;
// 练习4 为什么不能以数字开头作为变量名
/*
int 123L = 124;
long i9 = 123L; // 无法分清到底是赋值的变量 还是赋值的是long类型的123的数字
*/
}
}