百木园-与人分享,
就是让自己快乐。

Java String常量池

本周对Java字符串的理解更深了一步。

  1. Java中的字符串是不可变类型,即在进行字符串加减操作时,每次都会重新返回一个新的对象,原来的对象仍然存储在字符串常量池中。
  2. 那么,什么是字符串常量池呢?字符串都存储在字符串常量池中,如果新建的一个字符串在常量池中已经存在,则直接返回其引用,有如下操作:
点击查看代码
    public static void main(String[] args) {
        String a = \"abc\";
        String b = \"abc\";
        System.out.println(a == b);
    }

在新建字符串 b 时,由于字符串常量池中已经存在\"abc\",所以直接返回其索引,在输出System.out.println(a == b)时,输出的是true.使用字符串常量池,可以节省空间,获取效率也比较高。
3. 而new String()是另一种创建字符串的方式。如果常量池中不存在该字符串,则会先在常量池中创建该字符串。然后在堆内存中创建字符串对象,随后返回该字符串的引用,有如下操作:

点击查看代码
    public static void main(String[] args) {
        String a = \"aa\";
        String b = new String(\"aa\");
        System.out.println(a == b);
    }

该方法输出false,因为new String()返回的是堆内存的地址,而字面创建字符串返回的是字符串常量池的地址。
4. 此外,字符串还存在intern方法,在执行该方法时,如果字符串常量池中不存在该字符串,则先创建,然后返回常量池中的引用。


来源:https://www.cnblogs.com/Perfecto7/p/15965974.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » Java String常量池

相关推荐

  • 暂无文章