1、实例化String对象
a)直接赋值:String str="abcdefg";
b)调用String类中的构造方法:String str=new String("abcdefg");
以上两种方法效果相同,实际上一个字符串就是一个String类的匿名对象。String str="abcdefg";实际上就是把一个在堆中开辟好的堆内存空间的使用权给了str对象,如果一个字符串已经被一个名称所引用,则以后再有相同的字符串声明时,就不会重新开辟空间,而继续使用已经开辟好的堆内存。如下列代码:
public class StringDemo{
public static void main(String args[]){
String str1="hello";
String str2="hello";
String str3="hello";
System.out.println(str1==str2);
System.out.println(str1==str3);
System.out.println(str2==str3);
}
}
程序运行结果为:
true
true
true
如果用new关键字实例化时,每一次实例化都会再堆内存中开辟新的空间