String类两种对象实例化方式
- 直接赋值 只会产生一个实例化对象,并且可以自动保存到对象池之中,以实现该字符串实例的重用;
- 构造方法 会产生两个实例化对象,并且不会自动入池,无法实现对象重用,但是可以利用intern()方法手工入池处理
构造new会开辟两块内存空间,而后只会使用一块,而另外一个由于字符串常量所定义的匿名对象将成为我们的垃圾空间,在使用构造方法实例化String类对象时不会自动保存到字符串常量池操作
public class StringDemo{
public static void main(String args[]){
String strA = "mldn";
String strB = new String("mldn");
System.out.println(strA==strB); //false
}
}
构造方法实例化的对象实际上时属于一种自己专用的内存空间,但是在String类里面也提供一种有帮助开发者 手工入池的处理情况,这个方法:public String intern();
public class StringDemo{
public static void main(String args[]){
String strA = "mldn";
String strB = new String("mldn").intern();
System.out.println(strA==strB); //输出返回true
}
}