Java中intern()方法的使用

来源:互联网 发布:淘宝内部小二 编辑:程序博客网 时间:2024/06/13 08:30

String类中定义了intern()方法,该方法的用途是为每一个字符序列生成一个且仅生成一个String的引用,下面用实例来进行说明:
首先了解Java中String的内存分配。
1、直接赋值方式

String a = "123";String b = "123";System.out.println(a == b);

执行结果为true,可知,这种方式定义的String类型,字符串的内容”abc”存在于常量池中,且多个引用共享。
2、new方式

String aa = new String("123");String bb = new String("123");System.out.println(aa == bb);

执行结果为false,可知,通过new生成的对象放于堆区,双等号进行比较时,比较的是对象,虽然内容相等,但是对象不是同一个,因此打印结果为false。使用equals方法进行比较内容。
3、intern()
当调用intern方法时,不管使用什么方式定义一个字符串,都会首先在常量池中查找是否有相应的字符串存在,如果有,直接返回引用,否则,在常量池中生成相应的字符串并返回引用。例子如下:

String c = "c";String cc = new String("c");System.out.println(c == cc);String d = "d";String dd = new String("d").intern();System.out.println(d == dd);

输出结果为false和true,前一个结果比较好理解,第二个结果为true,说明调用intern后,d和dd指向的为同一对象,均为常量池中的”d”;

0 0