java - 对在 Java 中追加字符串感到困惑

标签 java string append

<分区>

我有一个追加字符串的情况。我很困惑..

   public static void foo() {
       String s = "str4";
       String s1 = "str" + s.length();
       System.out.println("(s==s1) = " + (s1 == s));
   }

    public static void bar() {
       String s = "str4";
       String s1 = "str" + "4";
       System.out.println("(s==s1) = " + (s1 == s));
    }

在第一种情况下返回“假”,但在第二种情况下返回“真” 据我了解,在这两种情况下,“str4”对象都是在堆上创建的。所以在这两种情况下它都应该返回 true 。但事实并非如此。 请有人帮我弄清楚为什么会这样。 ?谢谢!

最佳答案

使用

s1.equals(s)

比较字符串,否则你比较引用。

在第二种情况下,它返回 true 因为 String s1 = "str"+ "4"; 将被优化为 String s1 = "str4";ss1 将引用相同的字符串。

关于java - 对在 Java 中追加字符串感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15541126/

相关文章:

java - 在类中创建类的对象

Python:将字符串转换为 float ,将 float 读入二维数组,if/then,行重新排序?

javascript - 如何确定用户输入的哪些部分应该像 Stack Overflow 那样转换为链接?

ruby - 在 Ruby 中 append 到 JSON 数组

java - 未调用 Spring Security 过滤器

java - 每个项目的 Log4j 日志文件

java - 完全持久链表

java - 如何在netbeans中的2个框架之间传输数据?

list - 将字符串 append 到 Erlang 中的字符串列表

ios - Swift 每隔一个项目追加到数组