3 回答
TA贡献1865条经验 获得超7个赞
这是因为表达式求值从左向右,因此会先串连您的字符串(例如"result 3 = " + literal1
),然后检查感实性(即== object
),因此,仅打印false
,因为串联的结果是相同的值不是object
。
在第一个(也是最后一个)示例("result 1 = " + (literal1 == object)
)中,您将带括号的默认评估值定向为在串联之前(literal == object)
分别进行评估,这就是为什么它仅针对该评估结果打印的原因,并附加了其前面的字符串。false
TA贡献1887条经验 获得超5个赞
这是优先顺序,不是从左到右
Java确实有一个规则,即从左到右对操作数进行求值,但这在这里没有效果。
同样在Java中,除赋值外,所有二进制(表示二操作数,不是按位运算符)运算符都是左关联的,但这不适用于此处,因为关联性仅在运算符具有相同优先级时才重要。
重要的是,+它的优先级比==VietDD所说的高
System.out.println("result 5 = " + literal1 == literal2);
# is equivalent to
System.out.println(("result 5 = " + literal1) == literal2);
# which is false because they aren't the same object
恰好与左侧分组相同。
但是如果我们考虑
System.out.println(literal1 == literal2 + " is result 5!");
# THAT is equivalent to
System.out.println(literal1 == (literal2 + " is result 5!"));
# ditto
这恰好与右边的分组相同。
TA贡献1797条经验 获得超4个赞
System.out.println(“ result 3 =” + literal1 == object);
System.out.println(“结果5 =” +文字1 ==文字2);
相当于
System.out.println((“ result 3 =” + literal1)== object);
System.out.println((“结果5 =” + literal1)== literal2);
这是字符串连接
该表达式从左到右求值。
如果任一操作数是字符串,则+表示串联
您可以尝试以下方法:
System.out.println(1 + 2 +“ 3”);
输出 :
33
1 + 2 = 3
3 +“ 3” =“ 33”
和
System.out.println(“ 1” + 2 + 3);
输出:
123
“ 1” + 2 =“ 12”
“ 12” + 3 =“ 123
添加回答
举报