字符串常量池 vs 字符串池

JDG*_*ide 2 java

我对这两件事感到困惑。我需要帮助。请消除我的疑问,字符串常量池和字符串池是否是同一个概念。我在面试时遇到了这个问题。我已经阅读了很多网站和博客,但我的疑问没有消除。请消除我的疑虑。

提前致谢。

ami*_*ngh 5

两者都是一回事。字符串常量池包含常量字符串对象。Constant可以定义为 String 对象在编译时保存值。有关更多信息,请参阅JLS

    String s="abc";
    String s1="def";
    String s2=s+"def";
    String s3="abc"+"def";
    System.out.println(s2==s3); // print false
Run Code Online (Sandbox Code Playgroud)

但是,如果您将其s设为 final,那么

    final String s="abc";
    String s1="def";
    String s2=s+"def";
    String s3="abc"+"def";
    System.out.println(s2==s3); // print true
Run Code Online (Sandbox Code Playgroud)

在上面的情况下s3是一个编译时间常量,因为 s 是 final 。