基本概念:
- Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入;
- Object类是所有Java类的祖先。每个类都使用 Object 作为超类。
- Object类中equals方法源代码如下:
public boolean equals(Object obj) { return this == obj; }
以下给出解释
指示其他某个对象是否与此对象“相等”。
this与obj形参所引用的对象是否是同一个对象,所谓同一对象就是内存中同一块存储单元,如果this和obj指向的是同一块内存,则返回true,不是同一块内存,则返回false;
-
package com.hbsi.test; public class TestEquals { public static void main(String[] args) { /* * Object中的equals和"=="一样,都是比较两个对象的内存地址,是否指向同一块内存 */ 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);//比较两个对象的内存地址 } } 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; } }
输出结果
false false true false
总结:Object中的equals和"=="一样,都是比较两个对象的内存地址,是否指向同一块内存 String类重写了Object类的equals()方法,比较是两个对象的实体内容"是否完全相同