猿问

在println()中==的函数

String literal1 = "java"; 

String object = new String("java"); 

String literal2 = "java";


System.out.println("result 1 = " + (literal1 == object) ); 

System.out.println("result 2 = " + literal1.equals(object)); 

System.out.println("result 3 = " + literal1 == object); 

System.out.println("result 4 = " + literal1.equals(object));

System.out.println("result 5 = " + literal1 == literal2); 

System.out.println("result 6 = " + literal1.equals(literal2));

预期产量


result 1 = false

result 2 = true

result 3 = false

result 4 = true

result 5 = false

result 6 = true

获得的输出


result 1 = false

result 2 = true

false

result 4 = true

false

result 6 = true

当这条线


System.out.println(“结果5 =” +文字1 ==文字2);


更改为


System.out.println(“ result 5 =” +(literal1 == literal2));


输出


result 5 = true 

谁能解释为什么会这样吗?


四季花海
浏览 179回答 3
3回答

莫回无

这是因为表达式求值从左向右,因此会先串连您的字符串(例如"result 3 = " + literal1),然后检查感实性(即== object),因此,仅打印false,因为串联的结果是相同的值不是object。在第一个(也是最后一个)示例("result 1 = " + (literal1 == object))中,您将带括号的默认评估值定向为在串联之前(literal == object)分别进行评估,这就是为什么它仅针对该评估结果打印的原因,并附加了其前面的字符串。false

慕工程0101907

这是优先顺序,不是从左到右Java确实有一个规则,即从左到右对操作数进行求值,但这在这里没有效果。同样在Java中,除赋值外,所有二进制(表示二操作数,不是按位运算符)运算符都是左关联的,但这不适用于此处,因为关联性仅在运算符具有相同优先级时才重要。重要的是,+它的优先级比==VietDD所说的高System.out.println("result 5 = " + literal1 == literal2);# is equivalent toSystem.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 toSystem.out.println(literal1 == (literal2 + " is result 5!"));# ditto这恰好与右边的分组相同。

繁星coding

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”);输出 :331 + 2 = 33 +“ 3” =“ 33”和System.out.println(“ 1” + 2 + 3);输出:123“ 1” + 2 =“ 12”“ 12” + 3 =“ 123
随时随地看视频慕课网APP

相关分类

Java
我要回答