一.String两种赋值方式:
A.String str="asdf";(基本数据类型)
B.String str=new String("asdf");(对象类型)
二.存储方式:
A.String str="asdf";
在栈中开辟str的空间,在常量池中查询是否有"asdf",若有则将其地址存储到栈中str的空间,若无则在常量池中新建常量
B.String str=new String("asdf");
直接开辟空间并将地址赋给str
三.代码示例:
public class Fire {public static void main(String[] args) {
String str1="asdf";
String str2="asdf";
System.out.println("str1地址为"+str1.hashCode());
System.out.println("str2地址为"+str2.hashCode());
System.out.println();
String str3=new String("qwer");
String str4=new String("qwer");
System.out.println("str3地址为"+str3.hashCode());
System.out.println("str4地址为"+str4.hashCode());
}}
运行结果:
str1地址为3003444
str2地址为3003444
str3地址为3483987
str4地址为3483987
当String s="abc" 时 String是基本数据类型
当String s=new String("abc")时是对象类型