前提
在String中equals与==区别
作用
- equals比较内容是否相等
- ==比较地址
示例
public static void main(String[] args) {
String str1 = "hello";
String str2 = "hello";
System.out.println(" str1==str2: "+(str1==str2));
System.out.println("str1.equals(str2): "+(str1.equals(str2)));
String str3 = str1;
System.out.println(" str3==str1: "+(str3==str1));
System.out.println(" str3==str2: "+(str3==str2));
System.out.println("str3.equals(str1): "+(str3.equals(str1)));
System.out.println("str3.equals(str2): "+(str3.equals(str2)));
String str4 = new String("hello");
System.out.println(" str4==str1: "+(str4==str1));
System.out.println(" str4==str2: "+(str4==str2));
System.out.println(" str4==str3: "+(str4==str3));
System.out.println("str4.equals(str1): "+(str4.equals(str1)));
System.out.println("str4.equals(str2): "+(str4.equals(str2)));
System.out.println("str4.equals(str3): "+(str4.equals(str3)));
}
结果
str1==str2: true
str1.equals(str2): true
str3==str1: true
str3==str3: true
str3.equals(str1): true
str3.equals(str2): true
str4==str1: false
str4==str2: false
str4==str3: false
str4.equals(str1): true
str4.equals(str2): true
str4.equals(str3): true
结果分析
- String str1 = “hello”;“hello” 在内存创建该值,并把内存地址赋值给str1;
- String str2 = “hello”;“hello” 已经存在该内存中,找到该内存地址,并把内存地址赋值给str2;
- new String(“hello”);new 创建一个新的内存空间,str4 指向新的地址
那么问题来了,new String(“hello”)到底创建了几个内存对象?