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

S3==S4返回为false,其中两者都指向SCP中的同一字符串,请说明原因[重复]

鄂伟兆
2023-03-14

我试图验证引用是否与下面的代码相等。

package com.test.oracleinterviewquestions;

public class StringTest {

  public static void main(String args[]){
    StringTest obj=new StringTest();
    obj.testString();
  }

  public void testString(){
    String s1=new String("you cant change me!");
    String s2=new String("you cant change me!");
    System.out.println("s1==s2: is "+s1==s2 );

    String s3="you cant change me!";
    System.out.println("s1==s3: is "+s1==s3);

    String s4="you cant change me!";
    System.out.println("s3==s4: is "+s3==s4);
    System.out.println("---------------------");
   }
}

让我们将这些值称为“yccm”,是“你不能改变我!”的缩写。创建S1时,将在堆中创建一个条目,其中包含重引用S1,在scp中创建另一个条目,但不包含引用。

现在,当我创建S3时,它将指向SCP中为s1创建的现有值,在SCP中,同样,当我定义S4时,它也将指向SCP中现有的YCCM值。但是,当我打印S3==S4时,它返回false。请让我知道你的行为

共有3个答案

韩季
2023-03-14

Java必须考虑运算符优先级。

表达式“s1==s2:is”s1==s2将被解释为(“s1==s2:is”s1==s2,这是,“s1==s2:is you cant change me!”==“你不能改变我!”,正如注释中所指出的,它是false。

有趣的是,表达“s1==s2:你不能改变我!”==“你不能改变我!”被计算为false,这不仅是因为这些值,而且是因为它们将两个不同的对象指向SCP。

宰父夕
2023-03-14

每当您使用String时,副歌都会在sysout中添加任何其他硬编码的String,以避免不必要的连接。或在连接String变量时使用大括号。在您的情况下(s3==s4)将产生所需的结果。

吴品
2023-03-14

将a b==c解析为a b==c,而不是a(b==c)。一、 e,比较需要括号。

 类似资料:
  • 我在JQuery的AJAX请求中发现了一个回显值的有趣问题,但我没有为它提供一个answare: 如果你需要更多的信息告诉我!我希望任何人都知道是什么导致了这个问题!

  • 我遇到过一个奇怪的情况,在MSFT Azure短语断路器处理完一段文本后,有一段代码被设计用来剔除空白字符串、句点破折号等。我需要帮助找出如何调试这个问题。 当给定值时,以下代码块返回。显然,期望方法在第一个语句之后返回。在要看的899个短语中,似乎只有两个有这个问题。在另一台机器上也会发生。 下面是调试器的快照。 这可能是Visual Studio或.NET中的bug吗?我试着使用各种可视化器,

  • PHP手册说,如果锁定成功,调用flock将返回TRUE,否则返回FALSE。若文件被其他进程阻塞,那个么flock应该等到它被解锁(因为我们不使用LOCK_NB)。文档中没有超时,超时会中断等待,所以显然flock将无限等待,直到获得锁为止。 但是有时我在我的多线程脚本中从flock()得到FALSE。那是什么原因呢?

  • 问题:我可以在给定的正则表达式上拆分字符串,但相同的正则表达式在匹配具有相同正则表达式的方法时失败。 问题:如何使用用于拆分同一字符串的同一正则表达式在matches方法上返回true? 查看操作中的正则表达式

  • 问题内容: 我想构建自己的JSON,并让服务返回一个字符串,这是代码 我得到的响应包含用于在c#中的字符串中创建\的\“。 以下是响应。 值已正确编码,但json本身未正确格式化。这些导致它破烂不堪。 我该如何返回一个字符串,而在’的前面没有\呢? 问题答案: 目前,您的网络方法与一起返回。它遵循字符串的JSON编码。对应于www.json.org,字符串中的所有双引号将使用反斜杠转义。因此,您目

  • 我正在解析一个文件,其中有城市名和到其他城市的距离,格式如下: 我认为问题在于,当我分割字符串时,它创建了不同的对象,并且由于某种原因,string.equals和/或hashcode()给出了不同的结果。因此,map.get(key)返回空值。但我不知道如何解决这个问题。 }