重温java知识(十五、String类之一:字符串对象池)

两种String类对象实例化的区别:

  • 直接赋值(String str = “字符串”):只会开辟一块堆内存空间,并且会自动保存在对象池中以供下次重复使用
  • 构造方法(String str = new String(“字符串”)):会开辟两块堆内存空间,其中有一块空间将成为垃圾,并且不会自动入池,但是用户可以使用方法intern()方法手动入池。

例子:

package com.mydemo;

public class StringDemo {
    public static void main(String args[]){

        // 使用构造方法定义了新的内存空间,不会自动入池
//        String strA = new String("对象池测试");              // 输出结果:false

        // 开辟新对象并手动入池
        String strA = new String("对象池测试").intern();      // 输出结果:true

        // 直接赋值
        String strB = "对象池测试";

        System.out.println(strA == strB);
    }
}
发布了149 篇原创文章 · 获赞 4 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/yuzhiboyouzhu/article/details/105620482