21xrx.com
2024-12-23 00:51:33 Monday
登录
文章检索 我的文章 写文章
《Java中equals和==的区别:深入解析》
2023-06-18 07:48:06 深夜i     --     --
Java equals ==

当初接触Java的时候,我对==和equals这两个方法总是会感到困惑。它们的作用似乎很像,但又有些微妙的区别。今天,我们就来深入了解一下这两个方法的区别。

先说说==。它是Java中的一个二元运算符,用于比较两个对象的引用是否相等。当使用==比较两个基本数据类型时,会比较它们的值是否相等;而当使用==比较两个对象时,会比较它们在内存中的存放地址是否相等。下面是一个简单的示例:


int a = 1;

int b = 1;

System.out.println(a == b); //true

String str1 = new String("hello");

String str2 = new String("hello");

System.out.println(str1 == str2); //false

String str3 = "world";

String str4 = "world";

System.out.println(str3 == str4); //true

可以看到,当比较基本数据类型时,==比较的是它们的值;而当比较对象时,==比较的是它们的引用地址。

接下来说说equals。它是Object类中的一个方法,用于比较两个对象是否相等。Object类中的equals方法实现方式是比较两个对象的引用地址是否相等,但很多类都重写了这个方法,改为比较对象的内容是否相等。我们可以以String类为例,看看它的equals方法是如何实现的:


String str1 = new String("hello");

String str2 = new String("hello");

System.out.println(str1.equals(str2)); //true

可以看到,String类重写了equals方法,让它比较的是字符串的内容是否相等。

最后总结一下:

1. ==用于比较基本数据类型的值和对象的引用地址;equals用于比较对象的内容是否相等。

2. 对于基本数据类型,它们的值相等时,它们的引用地址也一定相等;而对于对象,它们的内容相等时,并不一定表示它们的引用地址相等。

3. 很多类都重写了equals方法,让它比较的是对象的内容是否相等。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复