equals只比较内容
==比较的是引用(两者在内存中的地址)
String s1 = "hello";
String s2 = "he" + "llo";
String s3 = new String(s1);
s1, s2 引用指向常量池,编译期就知道
s3引用指向堆上,运行时才知道s3是什么
例1:
import java.util.*;
public class Example {
public static void main(String[] args){
String str1 = "hello";
String str2 = "he" + new String("llo");
String str3 = "he" + "llo";
System.out.println(str1 == str2);
System.out.println(str1 == str3);
System.out.println(str2 == str3);
System.out.println(str1.equals(str2));
System.out.println(str1.equals(str3));
System.out.println(str2.equals(str3));
}
}
输出: