文章目录
第一种
String str = new String("helloworld");
new 的这种写法会在堆中创建对象,然后栈中保存堆中的地址
第二种
String str = "helloworld";
这种写法,会现在栈中创建一个引用变量 str,然后查找栈中有没有 “helloworld” 这个字符串,如果有,str 指向它,如果没有就会将 “helloworld” 存进栈,str 再指向它
== 以及 equals
所以我们在使用==
时候比较的实际是栈中的值,满足下面的形式
String str1 = "a";
String str2 = "a";
但是不满足 equals,因为 equals 比的是真实 string 的值,所以对于下面 new 对象的形式我们应该用 equals 比较
String str1 = "a";
String str2 = new String("a");
String str3 = new String("a");
不管是 str1 和 str2 比较,还是 str2 和 str3 比较,都应该用 equals 方法