有一天突然被问到 == 和 equals的区别,发现自己了解的很模糊,就特意查了一下,总结如下:
java中的数据类型分为基本数据类型和复合数据类型。
1.基本数据类型:short、long、int、float、doble、char、boolean、byte,他们之间的比较,只能使用==,比较的是他们的值是否相等
2.复合数据类型
当复合类型使用==进行比较时,实际上比较的是内存中的存放地址。所有的复合类型都是继承于Object基类,Object对象有equals方法,该equals方法是比较对象的内存地址。因此就这点来说,==和equals方法的返回结果相同的。但是有些类自身重写了equals方法,比如String。所以==和equals比较结果是否相同,是没办法确定的。