**自动类型提升**
进行算术运算时:
·两个操作数有一个为double,计算结果提升为double。
·如果操作数中没有double,有一个为float,计算结果提升为float。
·如果操作数中没有float,有一个为long,计算结果提升为long。
·如果操作数中没有long,有一个为int,计算结果提升为int。
·如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。
·特殊:任何类型与String相加(+)时,实为拼接,其结果自动提升为String。
public class TestTypeUp{
public static void main(String[] args){
//两个操作数有一个为double,计算结果提升为double。
int a = 10;
double b = 20.5;
double result1 = a + b;
System.out.println(result1);
System.out.println(a + b);//运算后的类型即为double
//如果操作数中没有double,有一个为float,计算结果提升为float。
int c = 5;
float d = 1.2F;
float result2 = c + d;
System.out.println(result2);
//如果操作数中没有float,有一个为long,计算结果提升为long。
int e = 100;
long f = 50L;
long result3 = e + f;
System.out.println(result3);
//如果操作数中没有long,有一个为int,计算结果提升为int。
byte g = 10;
int h = 20;
int result4 = g + h;
System.out.println(result4);
//如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。
byte j = 5;
short k = 6;
int result5 = j + k;
System.out.println(result5);
//任何类型与String相加(+)时,实为拼接,其结果自动提升为String。
int l = 123;
int m = 456;
String str = "abc";
String result6 = l + m + str;//☆两个操作数为数值时,相加:两个操作数有一个为String时,拼接。
String result7 = l + str+ m;
String result8 = str + l + m;
System.out.println(result6);
System.out.println(result7);
System.out.println(result8);
}
}
运行结果: