+
在Java中,+
的作用有三种:
-
表示正数
System.out.println(+5); // 5
-
表示相加操作
System.out.println(5+6); // 11 System.out.println(5+'6'); // 59
-
进行字符串的拼接
+
左右两侧的任意一侧有字符串,那么这个加号就是字符串拼接的作用,结果一定是字符串。int num = 56; System.out.println("num="+num); // "num=56"--->num=56 System.out.println(5+6+"7"); // 11+"7"--->"117"--->117 System.out.println(5+'6'+"7"); // 59 +"7"--->"597"--->597 System.out.println("5"+6+"7"); // "56"+"7"--->"567"--->567 System.out.println("5"+'6'+"7"); // "56"+"7"--->"567"--->567 System.out.println("5"+'6'+'7'); // "56"+'7'--->"567"--->567
++
++
也叫自增运算符,在单独使用的时候,无论放在操作数前还是后,都是进行加1操作:
int a = 5;
a++; // 相当于 a=a+1
System.out.println(a); //6
a = 5;
++a; // 相当于 a=a+1
System.out.println(a); // 6
如果 ++
参与到运算中,看 ++
在操作数前还是在后。如果 ++
在后,先运算,后加1;如果 ++
在前,先加1,后运算。
a = 5;
int m = a++ + 7;
System.out.println(m); // 12
System.out.println(a); // 6
a = 5;
int n = ++a + 7;
System.out.println(n); // 13
System.out.println(a); // 6
++
运算符的优先级高于+:
int a = 5;
System.out.println(a++ + a++); // 11
System.out.println(a++ + ++a); // 16
System.out.println(++a + a++); // 20
System.out.println(++a + ++a); // 25
+=
a+=b
是 a=a+b
的一种简便的写法,这两者有什么区别呢?
a+=b
可读性稍差,但编译效率高,因为底层自动进行类型转换a=a+b
可读性好,但编译效率低,因为要手动进行类型转换
Question 1:a+=b
相当于 a=a+b
,那么也相当于 a=b+a
吗?
Answer:对基本数据类型来说没有区别,但是对 String
类型就不一样了,会存在字符拼接正着拼和倒着拼的区别,例如:
a = "u";
b = "x";
a = a + b;
System.out.println(a); // ux
a = "u";
b = "x";
a = b + a;
System.out.println(a); // xu
Question 2:下面的代码哪一句出错?
byte a = 10;
int b = 20;
a += b;
a = a + b;
Answer:第4句出错了,因为正如前文所说“ a=a+b
可读性好,但编译效率低,因为要手动进行类型转换”,我们要更正为 a = (byte)(a + b)
。