== 和 equals() 的区别
== 是比较值是否相同
-
基本类型:比较的是值是否相同;
-
引用类型:比较的是引用(指向的地址值)是否相同;
equals() 是比较“内容”是否相同
-
只用于引用类型,调用的是Object的equals()方法
-
equals()方法可以重写
public static void main(String[] args) {
String s1 = "hello"; // "hello"在常量池中,s1指向"hello"
String s2 = "hello"; // s2 同样指向常量池中的 "hello"
System.out.println(s1 == s2); //s1和s2指向的地址是一样的,所以是true
System.out.println(s1.equals(s2)); //二者里面的内容都是"hello",所以是true
String s3 = new String("hello"); // 存放于堆中,另外一个地址
System.out.println(s1 == s3); //地址值不一样,所以是false
System.out.println(s1.equals(s3)); //内容是一样的,所以是true
String s4 = new String("hello"); // 存放于堆中,一个新的地址
System.out.println(s3 == s4); //地址值不一样,所以是false
System.out.println(s3.equals(s4)); //内容是一样的,所以是true
}