== 等号
1.操作基本数据类型时,是比较值是否相等
public class Demo {
public static void main(String[] args) {
int a = 16;
if (a%2==0){
System.out.println("偶数");
} else {
System.out.println("奇数");
}
}
}
//偶数
2.当比较引用数据类型时,是比较对象引用地址是否一致,也就是比较是否为同一对象
public class Demo {
public static void main(String[] args) {
Point p1 = new Point(2,3);
Point p2 = new Point(3,4);
Point p3 = p1;
System.out.println(p1==p2); //false
System.out.println(p3==p1); //true
}
}
equals()方法
equals()方法是Object类中的方法,设计初衷是要比较两个对象内容是否一致;
但看源码可知,这里仍然使用的==实现,因为严谨来说Object层不知道对象的特征,
两个对象是同一对象时才完全相同;
所以Java建议我们在你自己的类中要改写equals()方法;
idea中可以右键Generate..直接生成equals方法;
逻辑上先比较了是否是同一对象,是则true、
对象o是null则false、两个对象的运行时类不同则返回false、
两对象实例变量值相同则返回true;
其它的一些我们常用的类也都改写了equals方法,比如String:
可以看到也是同对象则true、不同对象字符串中字符完全一致的则true;
所以总结一下,equals方法的作用要看各个类重写后的比较逻辑,一般来说是同对象则true、
不同对象的,对象中的内容完全相同的则true。