字符串和整数的评估顺序
Evaluation Order with string and ints
String s1 = "six" + 3 + 3;
String s2 = 3 + 3 + "six:";
System.out.println(s1);
System.out.print(s2);
输出:
six33
6six:
为什么第一个不加3+3,第二个加3?
操作顺序很重要
在第一个中,串联的工作方式如下:
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 and 15.7. Evaluation Order
的文档
All binary operators except for the assignment operators are evaluated
from left to right; assignment operators are evaluated right to left.
在S1中,编译器读取(六个)字符,然后读取并读取。数字3的数值不能和文本(六)相加,作为一个字符加在x后面,然后读3加在第3个后面
在s2中他读到3然后3可以执行编译器收集到的过程直接打印6然后读到(6)不能收集到数字6后打印
顺序很重要。在第二种情况下,它首先进行算术运算和字符串连接,因此结果为 6six
String s1 = "six" + 3 + 3;
String s2 = 3 + 3 + "six:";
System.out.println(s1);
System.out.print(s2);
输出:
six33
6six:
为什么第一个不加3+3,第二个加3?
操作顺序很重要
在第一个中,串联的工作方式如下:
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 and 15.7. Evaluation Order
的文档All binary operators except for the assignment operators are evaluated from left to right; assignment operators are evaluated right to left.
在S1中,编译器读取(六个)字符,然后读取并读取。数字3的数值不能和文本(六)相加,作为一个字符加在x后面,然后读3加在第3个后面
在s2中他读到3然后3可以执行编译器收集到的过程直接打印6然后读到(6)不能收集到数字6后打印
顺序很重要。在第二种情况下,它首先进行算术运算和字符串连接,因此结果为 6six