概述
Java中equals()方法和”==”的用法在求职中经常遇到,学习之后时间长了容易忘记,所以整理一下学习笔记以便日后复习。若有不对,欢迎指正,大家相互学习。
“==”用法
1. 基本数据类型
Java基本类型分别为:byte、short、char、int、long、float、double、boolean。用”==”基本数据类型进行比较时,比较的是它们的值是否相同。例如:
1 | int a = 10; |
注意:对于基本数据类型而言,没有equals()方法。
2. 引用类型
用于引用类型时,比较的是两个引用变量在内存中存放的地址是否相同,new出来的两个对象地址相同返回true,否则返回false。例如:
1 | public class HelloWorld { |
equals()方法
equals方法是基类Object中的方法,所以对于所有继承于Object类都会有该方法。Object类中equals()方法的源码如下:
1 | //Object类中的equals方法 |
默认情况下,当使用equals()方法对两个对象进行比较时,比较的是两个对象的地址(此时与”==”用法相同)。测试如下:
1 | public class HelloWorld { |
对于我们自己写的类,想要通过equal()方法比较两个对象的内容,就要重写equals()方法。
1 | public class HelloWorld { |
String类中的equals()方法
下面时String类中equals()方法的具体实现,重写之后用来比较指向的字符串对象所存储的字符串是否相等:
1 | // String类中的equals方法 |
String类中重写了equals()方法,调用equals()方法比较两个String对象时,比较的是String的内容。还有一些类如Double,Date,Integer等,都对equals()方法进行了重写,用来比较两个对象所存储的内容是否相等。就拿String类来举例,如下:
1 | public static void main(String[] args) { |
总结
使用“==”时,当时基本数据类型比较时,比较它们存储的值是否相等。当比较引用类型时,比较引用变量所指向的对象地址是否相等。
使用equals() 方法时,但equals方法不能作用于基本数据类型。如果没有对equals方法进行重写,比较的是引用变量所指向的对象地址是否相等。像String类、Integer类等对equals方法进行了重写,比较的是指向对象的内容是否相等。