java中equals使用方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中equals使用方法相关的知识,希望对你有一定的参考价值。

java中equals使用方法:

    equals 方法是String类从它的超类Object中继承的, 被用来检测两个对象是否相等,即两个对象的内容是否相等,区分大小写。

    对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。“==”比较两个变量本身的值,即两个对象在内存中的首地址。“equals()”比较字符串中所包含的内容是否相同。 例如:

    s1 = new String("abc");
    s2 = new String("abc");

    s1.equals(s2) 是 true

 

   3.对于非字符串变量来说,"=="和"equals"方法的作用是相同的都是用来比较其对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。

class A

      A obj1   =   new  A();
      A obj2   =   new  A();

    obj1.equals(obj2)是false

参考技术A 1. java中equals使用方法

equals:
操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同,且区分大小写

注: 通过查看源码更加清晰:

public boolean equals(Object anObject)
//两个变量是否是对同一个对象的引用
*
==用于比较引用和比较基本数据类型时具有不同的功能
if (this == anObject)
return true;

A instanceof B ,返回值为boolean类型,
* 用来判断A是否是B的实例对象或者B子类的实例对象。
* 如果是则返回true,否则返回false
if (anObject instanceof String)
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length)
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0)
if (v1[i] != v2[i])
return false;
i++;

return true;


return false;

2. 案例
equals():比较字符串中所包含的内容是否相同
//这个是内容明显相同
String a = new String("字符串1");
String b= new String("字符串1");
boolean c = a.equals(b);
System.out.println(c);

//内容不同
String a1 = new String("字符串1");
String b1= new String("字符串2");
boolean c2 = a1.equals(b1);
System.out.println(c2);

3."equals"方法的作用是用来比较其对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。
创建一个对象方便测试
class Demo



//"=="和"equals"方法的作用是相同的都是用来比较其对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。
public class TestDemo

public static void main(String[] args)

//实例化对象
Demo obj1 = new Demo();
Demo obj2 = new Demo ();
boolean d = obj1.equals(obj2);
System.out.println(d);
//扩展
//可以通过查看他们的地址值比较
System.out.println(obj1);
System.out.println(obj2);
//明显地址不一致 所以是false



参考技术B equals用于对象之间的比较,代表着不仅值要相等,而且地址也要相等。
String a="11"; String b="11"; 这时 这两个值是相等的。如果String a1 =new String("11");
String b = new String("11");这个时候,这两个值是不相等的。
参考技术C 自定义对象,往往要覆盖equals方法,来判断两个对象是否“相等”
如两个学生对象,如果学号相等,就认为是同一个对象。
private int num; //学号
..........
public boolean equals(Student student2)
return this.num == student2.num;
参考技术D 一般用于字符串对象的比较。比较的是对象的值。

以上是关于java中equals使用方法的主要内容,如果未能解决你的问题,请参考以下文章

java中equals方法的问题

java 集合中重写hashCode方法和重写equals方法啥关系?

JAVA中的equals()

java的equals方法问题。

java中equals的相反怎么表达

在java中,关于equals(),和hashCode()的重写问题。