1、自动类型提升
-
类型转换:
- 自动类型转换、强制类型转换
-
类型提升:
- 数字间的常规类型提升,字符串的特殊类型提升
-
进行算数运算时:
- 两个操作数有一个为 double ,计算结果提升为 double;
- 如果操作数中没有 double,有一个为 float ,计算结果提升为 float;
- 如果操作数中没有 float,有一个为 long,计算结果提升为 long;
- 如果操作数中没有 long,有一个为 int,计算结果提升为 int;
- 如果操作数中没有 int,均为 short 或 byte,计算结果仍旧提升为 int;
-
特殊:任何类型与 String 相加(+)时,实为拼接,其结果自动提升为 String;
代码如下:
public class TestTypeRaise{
public static void main(String[] args){
double d1 = 10.0;
int i1 = 5;
System.out.println(d1+i1); // 输出15.0
// float f1 = d1 + i1 不兼容类型,从double转换float可能会有损失
double d2 = d1 + i1;
System.out.println(d2);
// ------------------------------------
float f1 = 5.0F;
short s1 = 20;
float f2 = f1 + s1;
System.out.println(f2);
// -------------------------------------
long l1 = 100;
byte b1 = 50;
long l2 = l1 + b1;
System.out.println(l2);
// ---------------------------------------
int i3 = 123;
short s3 = 456;
int i4 = i3 + s3;
System.out.println(i4);
// ----------------------------------------
short s4 = 321;
byte b3 = 111;
// short s5 = s4 + b3; 从int 转换到short可能会有损失
int i5 = s4 + b3;
System.out.println(i5);
// 特殊: String 的字符串拼接
String str = "Hello"; // 注意:字符串要使用双引号;
int i6 = 123;
String str2 = str + i6;
System.out.println(str2);
int javaScore = 100;
String str3 = "Java的成绩是:" + javaScore;
System.out.println(str3);
System.out.println("Java的成绩是:" + javaScore);
}
}
打开cmd
完成编译以及运行,如下图: