[Java语法篇6]String的创建方式及其区别
1.两种创建方式
public class Test{
public static void main(String[] args){
String name1 = "Jim";//创建方法1,直接赋值
String name2 = new String("Lucy");//创建方法2,通过构造函数
}
}
1.两种创建方式的区别
1)第一种创建方式:String name1 = “Jim”;
"Jim"储存在常量池中,在创建前先在常量池中检索,没有则新创建,有则直接将常量池中数据的内存地址附给栈中的变量
注:在引用类型中,== 表示判断两个变量储存的地址是否相同
public class Test{
public static void main(String[] args){
String name1 = "Jim";//创建方法1,直接赋值
String name11 = "Jim";//两个变量储存的地址应该相同
System.out.println(name1 == name11);//输出应该为true
}
}
2)第一种创建方式:String name1 = new String(“Lucy”);
"Lucy"储存在堆中,在创建前不进行检索,直接堆中开辟新空间储存"Lucy",并将地址赋给栈中变量
注:在引用类型中,== 表示判断两个变量储存的地址是否相同
public class Test{
public static void main(String[] args){
String name2 = new String("Lucy");//创建方法2,通过构造函数
String name22 = new String("Lucy");//两个变量储存的地址应该不同
System.out.println(name2 == name22);//输出应该为false
}
}