【问题标题】:Java : string operators precedence == vs + [duplicate]Java:字符串运算符优先级== vs + [重复]
【发布时间】:2020-12-30 08:32:38
【问题描述】:

谁能解释一下为什么这段代码只打印 false (Not Both are equal: false)

String one = "length: 10";
String two = "length: " + one.length();
System.out.println("Both are equal:" + one == two);

【问题讨论】:

  • @Hülya OP的问题是关于为什么输出是false而不是Both are equal: false。尽管将字符串与== 进行比较通常是错误的,但这个问题更多的是关于字符串连接的工作原理。
  • @Slaw 你说得对,我要删除评论...
  • @Hülya 很好的发现。标记为重复。

标签: java string


【解决方案1】:
System.out.println("Both are equal:" + one == two);

被评估为

System.out.println(("Both are equal:" + one) == two);

即首先将 one 附加到 "Both are equal:" ,这会导致 String "Both are equal:length: 10",然后将 Stringtwo 进行比较,从而导致 false ,所以只打印false

你想要的是

System.out.println("Both are equal:" + (one == two));

【讨论】:

    【解决方案2】:

    把括号放在这里:

    System.out.println("Both are equal:" + (one == two));
    

    【讨论】:

      猜你喜欢
      • 2015-10-07
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多