博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,
👉点击跳转到网站
前言:
这里只讨论七种基本数据类型变量间的运算,不包含boolean类型的。
1.自动类型提升:
结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的。
说明:此时的容量大小指的是,表示数的范围大和小。比如long占用八个字节,float占用四个字节,但是float的容量要大于long的容量。
byte、short、char—>int–>long–>float–>double
注意
:当byte、short、char三种类型的变量做运算时,结果为int型
@Test
public void test() {
int a1 = 3;
float a2 = 5.4f;
float a3 = a1 + a2;
System.out.println(a3); //8.4
byte b1 = 20;
short b2 = 12;
int b3 = b1 + b2;
System.out.println(b3); //32
short c1 = 45;
double c2 = c1;
System.out.println(c2); //45.0
byte e1 = 45;
short e2 = 14;
char e3 = 'a';
//编译不通过
// byte e4 = e1+e2;
//编译不通过
// short e5 = e1+e3;
//编译不通过
// char e6 = e1+e2;
char d1 = 'a'; //97
byte d2 = 1;
int d3 = d1 + d2;
System.out.println(d3); //98
}
2.强制类型转换:
自动类型提升运算的逆运算
- 需要使用强转符()
- 注意点:强制类型转换,可能导致精度损失
代码说明:
@Test
public void test1(){
double a1 = 12.3;
//精度损失举例1
int a2 = (int)a1;
System.out.println(a2);//12
//没有精度损失
long c1 = 100;
int c2 = (int)c1;
System.out.println(c2); //100
//精度损失举例2
int b1 = 128;
byte b2 = (byte) b1;
System.out.println(b2);//-128
}
特殊情况,看代码即可:
@Test
public void test2(){
long a1= 456; //不报错
//编译失败:过大的整数
// long a2= 4567832423235252;
//编译失败
// float b1= 12.6;
byte c1 = 12;
//整型常量,默认类型为int型
// byte c2=c1+1; //编译失败
//浮点型常量:默认类型为double型
// float d1 = c1+12.3; //编译失败
}