string.toUppercase() 在堆或字符串池中创建了一个新对象

2024-03-13

如果我们使用toUpperCase()String类的方法,是否将对象放入堆中而不是在String池中创建它。下面是代码,当我运行时,我可以推断新创建的字符串对象不在字符串池中。

public class Question {
    public static void main(String[] args) {
        String s1="abc";
        System.out.println(s1.toUpperCase()==s1.toUpperCase());
    }
}

上述代码的输出返回false。 我知道“==”和 equals() 的区别,但在这个问题中我想知道为什么两个创建的字符串不相等。唯一的解释可能是它们不是在字符串池中创建的,而是完全是两个不同的对象。


Java 自动实习字符串文字。检查这个answer https://stackoverflow.com/a/1855183/1448660,但是当你使用toUpperCase()它创建一个新的字符串实例,使用new String(),这就是两个对象不同的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

string.toUppercase() 在堆或字符串池中创建了一个新对象 的相关文章

随机推荐