String s1 = "six" + 3 + 3;
String s2 = 3 + 3 + "six:";
System.out.println(s1);
System.out.print(s2);
输出:
six33
6six:
为什么第一个未添加3 + 3,而第二个又添加了?
答案 0 :(得分:1)
操作顺序很重要
在第一个连接中,连接方式如下:
String s1 = "six" + 3 + 3;
"six3" + 3 // string plus int return string
"six33" // string plus int return string
第二个:
String s2 = 3 + 3 + "six:";
6 + "six" // int plus int return int
"6six" // int plus string return string
有关更多详细信息,请阅读Operators和15.7. Evaluation Order的文档
对除赋值运算符外的所有二进制运算符进行求值 从左到右;赋值运算符从右到左求值。
答案 1 :(得分:1)
在S1中,编译器读取(六个)字符,然后读取并读取。数字3的数值不能与字符文本(六个)相加,不能作为字符添加到x后面,然后读取3并在第三个后面添加。
在s2中,他读取3,然后3可以执行编译器收集的过程并直接打印6,然后在编号6之后将打印无法收集的读取(六个)
答案 2 :(得分:0)
顺序很重要。在第二种情况下,首先进行算术运算和字符串连接,结果为6six