==的作用:
基本类型:比较的就是值是否相等
引用类型:比较的就是地址值是否相同
equals的作用:
引用类型:默认情况下,比较的是地址值
特殊:String、Integer、Date这些类库中的equals被重写了,比较的是内容而不是地址!
例如:
public static void main(String[] args) { Integer a = 11; Integer b = 11; Integer c = 22; System.out.println(a==b); System.out.println(a==c); System.out.println(a.equals(b)); System.out.println(a.equals(c)); }
结果:
true
false
true
false
面试题:请解释字符串比较中“==”和equals()的区别?
答:==:比较的是两个字符串的内存地址(堆内存)的值是否相等,属于值的比较;
equals():比较的就是两个字符串的内容,属于内容比较。
例如:
public class Main { public static void main(String[] args) { String s = new String("abc"); String s1 = "abc"; String s2 = "def"; String s3 = new String("abc");; System.out.println(s==s1); System.out.println(s==s2); System.out.println(s==s3); System.out.println(s.equals(s1)); System.out.println(s.equals(s2)); System.out.println(s.equals(s3)); } }
结果:
false
false
false
true
false
true