《Java编程思想》P44
关系操作符生成的是一个 boolean 结果,他们计算的是操作数的值之间的关系。要想比较两个对象的实际内容是否相同,必须使用所有对象都适用的特殊方法 equals()。但这个方法不适用于“基本类型”,基本类型直接使用 == 和 != 即可。
通过一个例子体会一下二者之间的区别:
(关于自动装箱、拆箱可以通过之前的博文http://blog.csdn.net/heatdeath/article/details/78726407进行了解)
equals() 默认行为是比较引用,除非在自己的新类中覆盖 equals 方法。
覆盖了 equals() 后,测试结果如下:
总结:
1)对于 == 关系操作符,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
如果作用于引用类型的变量,则比较的是所指向的对象的地址
2)对于 equals 方法,注意: equals 方法不能作用于基本数据类型的变量
如果没有对 equals 方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如 String、Date 等类对 equals 方法进行了重写的话,比较的是所指向的对象的内容。