gpt4 book ai didi

java - 使用+运算符的字符串常量池

转载 作者:行者123 更新时间:2023-12-02 09:21:17 25 4
gpt4 key购买 nike

    public class Strings 
{
public static void main(String ads[])
{
String a = "meow";
String ab = a + "deal";
String abc= "meowdeal";
System.out.println (ab==abc);
}
}

为什么输出是false?在这个程序中,ab是在string文字中创建的,然后创建abc,但为什么ababc 不引用字符串常量池中的同一 block 内存,因为在创建 abc 之前它会在字符串常量池中搜索 String meowdeal

最佳答案

Java 仅在编译时池化它所知道的字符串;字符串常量和常量字符串表达式。 a 是一个局部变量,因此 a + "deal"是一个字符串表达式,直到运行时才计算(即使您查看它可以看到它应该是常量)。 Java 编译器不知道它是常量表达式,因此不会将其放入池中。它在运行时执行字符串连接,产生与池中任何对象不同的对象。

关于java - 使用+运算符的字符串常量池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22573363/

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