创建方式两种方法
1.String 变量名="…" ; (这是直接赋值式创建)
2.String 变量名=new String("…"); (这是构造方法式创建)
String a = "Uzi";
System.out.println(a);
String b =new String("LangX");
System.out.println(b);
结果
Uzi
LangX
区别:内存存储方式不同
- 第一种创建方式
String a = “Uzi”;
String b =“Uzi”;
解释
栈中存了变量a的地址,“Uzi”这个数据被存入了常量池中,当再次定义一个变量b的值和a一样时,栈并不会先存入一个新的地址,而是先看常量池中是否有相同的值,如果有,就会把这个值的地址复制到新的变量在栈中的地址空间中(简单来说就是先创建个a,然后创建了和a值相等的b,那么b的地址就和a的地址一样)
- 第二种创建方式
String a =new String(“LangX”);
String b =new String(“LangX”);
解释
每创建一个对象就会在堆中生成一个空间,在栈中生成一个地址。
代码解释
String b="zhu";
String bb="zhu";
System.out.println(b==bb);
String c=new String("zhu");
String cc=new String("zhu");
System.out.println(c==cc);
结果
true
false
解释
- 上边的等号比较的是地址是否相同。
- b和bb的地址是相等的,所以是true
- c和cc的地址是不一样的,所以是false