java中equals()和==的区别
1. += 与 = + 之前的区别
+= -= *=… 不会改变数据类型
short n1 = 10; n1 = n1 + 1;//编译出错 n1 += 1;//不会出错
2.equals使用小技巧
public static void isEqual(String str){ String str1 = "测试"; //str.equals(str1); //str1.equals(str); //两者之间存在差别 }
感觉上两个比较相同,但是,str是获取的,而str1是固定的,所以str.equals(str1)的时候会存在一个问题就是如果str为空就会出错,会有空指针异常。
3.对象之间用 == 和 equals() 的区别
对象是引用数据类型所以理想是 ==比较的是不是同一个对象,equals()比较的是值是不是相等。
举例:张三有一个女朋友叫小丽,李四也有一个女朋友叫小丽。==比较的是他们的女朋友是不是同一个人,equal()比较的是他们的女朋友是不是都叫小丽。
因为这是理想的状态,所以这个稍微有点片面,具体解释为:对象所有的父类都是Object,都继承了Object的equals方法,但是父类中的equals方法源码是这样写的:
public boolean equals(Object obj) {
return (this == obj);
}
所以理论上equals方法和== 是一样的,但是为什么String等equals方法是比较的我们理想的(即不是比较地址,而是值),因为他重写了equals方法。所以这就是equals 和 == 的区别