基本数据类型之间的运算规则
前提:这里讨论只是7种基本数据类型变量间的运算,不包含boolean。
- 自动类型提升:
- 当容量小的数据类型的变量与容量大的数据类型做运算时,结果自动提升为容量大的数据类型。
- byte、char、short-->short-->int-->long-->float-->double (这里的容量大小指的是表示数的范围的大小) byte、char、short这三种类型做运算结果为int类型(包括同中类型之间运算也是int类型)
2.强制类型转换:(自动类型提升运算的逆运算)
public class variableTest {
public static void main(String[] args) {
//强制类型转换 范围大的往范围小的转换
double d1 = 12.9;
int i1 = (int) d1;//截断操作
System.out.println(d1);
}
}
几种易错情况:
package com.csy;
public class variableTest2 {
public static void main(String[] args) {
//整形默认是int类型
long l1 = 1234566;
System.out.println(l1);
//编译失败,由上可知整形默认是int型,下面的数超过了int的范围
//long l2 = 1111111111111111111;
//编译失败,浮点型默认是double类型,大范围的数据类型往小范围的数据类型需要强转。
//float f1 = 12.3;
float f2 = (float) 12.3;
byte b1 = 12 ;
//这里会报错,应为byte类型和整形相加,整形默认为int类型,计算后结果自动提升为int类型。
byte b2 = b1 + 1 ;
}
}