基本概念:
Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入; Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。可以使用类型为Object的变量指向任意类型的对象equals()方法: 比较两个对象是否同一
如果两个对象具有相同的类型以及相同的属性值,则称这两个对象相等。如果两个引用对象指的是同一个对像,则称这两个变量同一。Object类中定义的equals 函数原型为:
public boolean equals(Object); 他是判断两个对象是否同一,并不是是否相等
①只能处理引用类型变量 ②在Object类,发现equals()仍然比较的两个引用变量的地址值是否相等
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
package com.example.demo.test;
public class Person {
private String userName; private String age;
public String getUserName() { return userName; }
public void setUserName(String userName) { this .userName = userName; }
public String getAge() { return age; }
public void setAge(String age) { this .age = age; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package com.example.demo.test;
public class Test {
public static void main(String[] args) { Person p1 = new Person(); Person p2 = new Person(); System.out.println(p1.equals(p2)); System.out.println(p1 == p2);
/* * String类重写了Object类的equals()方法,比较是两个对象的实体内容"是否完全相同。 */ String s1 = new String( "AA" ); String s2 = new String( "AA" ); System.out.println(s1.equals(s2)); System.out.println(s1 == s2); } } |
从运行结果可以看到的是Object中的equals方法比较的是两个对象是否同一,
而String类中的equals方法比较的是字符串的value是否相等。 请看String.java中equals的方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
public boolean equals(Object anObject) { if ( this == anObject) { return true ; } 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 ; } |
到此这篇关于Java Object类equals方法的文章就介绍到这了,更多相关Java equals方法内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
原文链接:https://blog.51cto测试数据/u_15127640/3855746
查看更多关于Java Object类equals方法的详细内容...