java - Java 基础问题 : String equality

标签 java string equality

public class A {

    static String s1 = "I am A";

    public static void main(String[] args) {
        String s2 = "I am A";
        System.out.println(s1 == s2);
    }
}

以上程序输出“真”。两者都是两个不同的标识符/对象,输出如何为“真”?

我的理解是 JVM 会为每个对象创建不同的引用,如果是这样,输出如何为真?

最佳答案

Java 管理一个String 文字池。它尽可能重用这些文字。因此这两个对象实际上是相同的 String 对象并且 == 返回 true。

我相信这叫做 string interning

关于java - Java 基础问题 : String equality,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1896145/

相关文章:

java - 如何在 Glassfish 中授予该权限

Java 执行器服务在应用程序启动时启动线程

java - 打印数组上半部分/后半部分的内容

c++ - 带 NULL 的 Strtok 用法

java - 在 Java 中验证 IPv4 字符串

java - 查看不同步更新

Java - 给定正则表达式的所有子字符串

java - 如何在 Java 中比较字符串?

pointers - Haskell中的指针相等?

javascript - 为什么我使用 =(单个等于)的相等比较不能正常工作?