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

字符串布尔混淆

史弘致
2023-03-14

我当时在做一个计算机科学测试,并尝试了这个问题。

String sam = "scary";
String ben = new String("scary");
String wil = "scary";
out.print( sam == ben );
out.print( " " + (sam == wil) );

据我所知,我认为打印输出是假的,因为据我所知,字符串只能与。等于()。但我弄错了。它说答案是假的,是真的。有人能解释一下原因吗?

共有2个答案

荣俊杰
2023-03-14

当您创建没有新词的字符串时,jre会在您之前创建的字符串池中搜索具有相同内容的字符串,如果找到了,则无需在内存中创建新字符串,只需将新字符串引用到您之前创建的字符串。另一方面,通过使用new关键字,您将强制创建一个新对象。

葛浩阔
2023-03-14

您可以用==比较字符串。但是,这比较的是字符串引用,而不是字符序列。

如果两个字符序列不同,==将始终计算为false。如果它们相同,==可能返回true,或者可能返回false;这取决于两个字符串对象是如何产生的。

JLS§3.10.5字符串文字中详细说明了sam和wil引用同一对象的原因:

字符串文本——或者更一般地说,是常量表达式(§15.28)的值的字符串——被“插入”,以便使用String方法共享唯一的实例。实习生

有关此行为的详细说明,请参见JLS中的示例3.10.5-1。

 类似资料:
  • 问题内容: 我如何布尔计算包含布尔表达式的字符串?喜欢: 用户应该能够定义自己的变量(),并定义自己的布尔表达式()。因此,我将所有表达式仅作为字符串使用。我如何评估它们? 问题答案: 您可以使用Nambari评论的ScriptEngine: 打印0。 还要注意,该表达式不是布尔表达式,而是按位运算。

  • 我知道这个问题很简单。但我想知道布尔运算符的字符串格式。例如,下面显示了整数、字符串和浮点数的字符串格式。布尔运算符真/假可能是什么?

  • 我正在尝试这个代码编写练习,我太迷路了! 它甚至不编译,但即使它编译了,我肯定它也不会工作。

  • 我有一个这样的财产: 我需要在其他类中解析时将其作为字符串 但这里是布尔值。 我想我需要做这样的事情。 还有一个像这样的班级 但找不到合适的例子。 这也是

  • 问题内容: 这是如何运作的?我似乎找不到答案。 幕后发生了什么事? 布尔值如何强制转换为字符串,因为布尔值不能隐式类型转换? 是否涉及 自动装箱/拆箱 ? 是类似的方法还是涉及某种方法? 问题答案: Java语言规范§5.1.11中阐明了确切的规则。字符串转换 根据这些规则,相当于: 就是说,允许编译器在如何精确地评估整个表达式方面有很大的余地。从JLS§15.18.1。字符串串联运算符+: 一个

  • 问题内容: 我有一个布尔变量,我想将其转换为字符串: 我需要转换后的值的格式为:,而不是 我试过了: 但是它告诉我,并且不是公认的功能。 如何将此布尔值转换为PHP 或PHP 格式的字符串? 问题答案: 最简单的解决方案: