为了账号安全,请及时绑定邮箱和手机立即绑定

在println()中==的函数

在println()中==的函数

四季花海 2021-05-07 14:12:08
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 = falseresult 2 = trueresult 3 = falseresult 4 = trueresult 5 = falseresult 6 = true获得的输出result 1 = falseresult 2 = truefalseresult 4 = truefalseresult 6 = true当这条线System.out.println(“结果5 =” +文字1 ==文字2);更改为System.out.println(“ result 5 =” +(literal1 == literal2));输出result 5 = true 谁能解释为什么会这样吗?
查看完整描述

3 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

这是因为表达式求值从左向右,因此会先串连您的字符串(例如"result 3 = " + literal1),然后检查感实性(即== object),因此,仅打印false,因为串联的结果是相同的值不是object

在第一个(也是最后一个)示例("result 1 = " + (literal1 == object))中,您将带括号的默认评估值定向为在串联之前(literal == object)分别进行评估,这就是为什么它仅针对该评估结果打印的原因,并附加了其前面的字符串。false


查看完整回答
反对 回复 2021-05-26
?
慕工程0101907

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

这恰好与右边的分组相同。


查看完整回答
反对 回复 2021-05-26
?
繁星coding

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);

这是字符串连接

  1. 该表达式从左到右求值。

  2. 如果任一操作数是字符串,则+表示串联

您可以尝试以下方法:

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


查看完整回答
反对 回复 2021-05-26
  • 3 回答
  • 0 关注
  • 178 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信