1.若+两边连接的是基本数据类型,则是加法运算(基本数据类型中除boolean都是可以参与加法运算的)。
(1)在整型及浮点型数据相加中,若是同类型数据相加,则直接加和。若是不同数据类型相加,为了避免数据溢出,则结果会自动提升为大字节的数据类型,即:自动类型提升。例如
值得注意的是比int字节小的类型相加,结果都会提升为int型。(byte+byte,byte+short等)
(2)若是字符型(char)数据相加,结果不是字符,而是一个整型数据,例如
因为字符型变量存储的是该字符对应的ASCII码值,A对应的是65,B对应的是66,所以结果为131。
而字符型与其他基本数据类型(boolean除外)相加,char会自动提升为int。例如:
2.当+两端有字符串(String)类型时(一个或两个),+不再是加法运算,而符串的拼接,即不改变原有数据,直接将前后的数据拼在一起。例如:
***误区:在表达式中出现多个+时,要注意计算机的读取规则:从左向右!例如:
String s="ABC";
int a=1;
int b=2;
System.out.println(s+a+b);
String s="ABC";
int a=1;
int b=2;
System.out.println(a+b+s);
它们的结果是不同的!
(1)
第一个+左端为字符串,所以为拼接,而拼接之后仍是字符串,所以第二个+左端还是字符串,也是拼接。
(2)
第一个+两端左边均为int,为加法运算,结果为int,第二个加号右端为字符串,为拼接,从左到右依次运行的结果为:3AB。