前言
JavaSE是Java开发者必须熟练掌握的基础知识,我在这里把一些平常比较容易忽视的点记录下来,以便后面查阅。
一、数据类型转换
Java数据类型主要分为两大类,基本数据类型和引用数据类型。基本数据类型分为四类八种基本类型,包括整数、浮点数、字符、布尔;引用数据类型主要为类、数组、接口等。
四类八种数据类型
1.1 自动类型转换
java在给数据类型赋值运算时,会自动将取值范围小的数据类型提升到取值范围大的数据类型(如byte、short、char运算时会自动提升为int)。
值得一提的是,b3=1+2这句,编译没有报错,前面我们说过byte、short、char运算时会自动提升为int,此时我们并没有进行强制转换,为什么没有报错呢?原因是1和2是常量,在编译时期已经确定他们相加不会超过byte的取值范围,编译器会将
他们相加的结果转为byte类型。而b4=b1+b2,编译就会报错,这是因为b1和b2是两个变量,编译器无法在编译时期确定他们的值,会将他们相加的值作为int类型处理,用byte来接收自然会报错了。
+=、-=、*=、/=这些复合赋值运算符,在运算时,会隐式的将int向下转为byte、short、char等类型,所以b4+=1语句不会报错。
1 public static void main(String[] args){ 2 byte b1=1; 3 byte b2=2; 4 byte b3=1 + 2; 5 byte b4=b1 + b2; 6 b4+=1; 7 System.out.println(b3); 8 System.out.println(b4); 9 }
1.2 强制类型转换
在将取值范围大的数据类型的值赋值给取值范围小的数据类型变量时,必须进行强制转换,将取值范围大的数据类型的值转换成取值范围小的数据类型,否则编译会报错,并且转换过程中会造成一定的精度丢失。