gpt4 book ai didi

java 字符串连续比较

转载 作者:行者123 更新时间:2023-12-01 06:10:47 27 4
gpt4 key购买 nike

package data;
public class A {

String s = "maew";
String s2 = s + "class";
String s1 = "maewclass";
System.out.println(s2 == s1);
}
}

但是两者都将位于字符串常量池中,并且如果创建具有相同内容的对象,则不会再创建一个引用。 s2 和 s1 应该指向字符串常量池中的同一个对象。所以答案应该是 true 为什么它给出 false

最佳答案

字符串常量池是一个内部 Java 功能,您永远不应该依赖它。例如,以下代码将产生“true”

String s1 = "Hello";
String s2 = "Hello";
boolean result = s1 == s2;

但是下面的代码会产生“false”:

String s1 = "Hello";
String s2 = new String("Hello");
boolean result = s1 == s2;

字符串常量池行为可能会从一个 Java 版本更改为另一个版本,因为它是一项内部优化功能。不应该依赖它。就您而言,我怀疑因为您使用了 String s2 = s + "class"; 它确实创建了一个新实例。

在任何情况下,任何字符串比较都必须使用 String 类的 equals() 方法

关于java 字符串连续比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35275721/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com