当前位置: 首页 > 知识库问答 >
问题:

为什么“f”+“alse”不==“false”?[副本]

牟焱
2023-03-14

可能重复:
如何比较Java中的字符串?

我不明白为什么声明的变量是不一样的。

ex代码:

 String firstPart = "F";
 String whole = "False";
 String connected = firstPart + "alse";
 System.out.println(connected == whole);

现在这产生了一个布尔值,我以为它是真的,但它不是,它是假的,我不明白为什么。

有人能解释一下吗?

共有2个答案

景子安
2023-03-14

您正在比较引用,而不是值。

您需要使用equals:

connected.equals(whole);
司寇嘉茂
2023-03-14

这个

String connected = firstPart + "alse";

使用新的基础字符数组和新引用创建新的string对象。

因此,当您比较引用(使用'=='')时,将不会得到匹配。如果使用equals()比较实际的对象内容,则会得到所需的结果(因为String.equals()会比较基础字符数组的内容)

 类似资料:
  • 可能重复: 如何比较Java中的字符串? 我不明白为什么声明的变量不一样。 ex代码: 现在,这产生了一个布尔值,我认为它是“真的”,但它不是,结果是假的,我不明白为什么。 有人能解释一下吗?

  • 罗马数字颠倒一百 拉丁文小写字母反转C 变成数字二 变成数字三 为什么Python认为这些不是数字?

  • 问题内容: 我正在阅读本文: 在SQL中获取null == null 共识是,当尝试测试两个(可空)sql列之间的相等性时,正确的方法是: 当A和B为时,(A = B)仍返回FALSE,因为NULL不等于NULL。这就是为什么需要额外检查的原因。 检验不平等情况如何?经过以上讨论,我认为要测试不平等,我需要做一些类似的事情: 但是,我注意到这不是必需的(至少在informix 11.5上没有),我

  • 为什么以下输出为True? 这将始终输出,即使条件似乎表明并非如此。如果我删除括号,那么它可以工作,但我不明白为什么。

  • 我这样问是因为我知道检查列表是否为空的python方法如下: 将打印,等等。因此,这导致我用真值识别;但是,如果我试图“直接”比较[]和False,我会得到以下结果: 等 这到底是怎么回事?我觉得我错过了一些非常明显的东西。

  • 问题内容: 使用括号时,这些语句为什么能按预期工作: 但是 ,如果没有括号,它会返回吗? 问题答案: 基于有关操作符优先级的python 文档 : 请注意,比较,成员资格测试和身份测试均具有相同的优先级,并且具有“比较”部分中所述的从左到右的 链接 功能。 因此,实际上您有一个链接语句,如下所示: 您可以假定中心对象将在2个操作和其他对象之间共享(在这种情况下为False)。 并且请注意,对于所有