Java教程

Java String常量池

本文主要是介绍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方法,在执行该方法时,如果字符串常量池中不存在该字符串,则先创建,然后返回常量池中的引用。

这篇关于Java String常量池的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!