一、==
对于基本类型来说是值比较,对于引用类型来说是比较的是引用
Integer Long等包装类型
小于128是值比较
大于等于128引用比较
Integer a = 127;
Integer b = 127;
System.out.println(a == b);// true
Integer aa = 128;
Integer bb = 128;
System.out.println(aa == bb);// false
String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x==y); // true
System.out.println(x==z); // false
二、equals
equals 默认情况下是引用比较,只是很多类重新了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。
String s1 = new String("老王");
String s2 = new String("老王");
System.out.println(s1.equals(s2)); // true
Cat c1 = new Cat("波斯猫");
Cat c2 = new Cat("波斯猫");
System.out.println(c1.equals(c2)); // false