gpt4 book ai didi

java - 在 System.out.println() 和 if 语句中使用字符串 == 进行比较时有什么区别

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:10:39 24 4
gpt4 key购买 nike

String att = "siva";   
String ptt = "siva";

System.out.println("__________________________ptt.equals(att)_______"+ptt.equals(att));
**System.out.println("__________________________att == ptt________"+att == ptt);**
if(att == ptt){
System.out.println("true");
}else{
System.out.println("false");
}

在我的日志中,我发现以下输出:

__________________________ptt.equals(att)_______true   
**false**
true

如果您查看 java 代码和日志(粗体),请在此处查看。有区别。

  1. 在打印语句中,我在一些文本中给出了长下划线。它没有出现。
  2. att==ptt 在 print 语句中给出时给出 false。在 if 条件下给出时为真。

我已经知道了,什么是引用,什么是对象。
att==ptt 和 att.equals(ptt) 有什么区别?
字符串的不变性。

但是知道为什么在以不同形式打印时会返回 false 和 true 吗?为什么我在打印语句中输入的文本没有反射(reflect)在日志中?

如有错误请更正..或需要任何额外输入。

最佳答案

In the print statement i have given a long underscore with some text. it is not appearing.

因为,这些下划线与 att 连接,并使用 ptt 检查引用相等性(==),并打印 false,因为连接String 和 ptt 在引用上不相等。像下面这样改变它以获得你想要的输出

System.out.println("__________________________att == ptt________"+(att == ptt));

att==ptt gives false when it is given with in print statement. and true when it is given in if condition.

两者都在字符串常量池中引用相同的字符串文字,但是,在前面的情况(你的第一个问题)中,att 与下分连接并与 ==

关于java - 在 System.out.println() 和 if 语句中使用字符串 == 进行比较时有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22504260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com