Object对象 equals()方法

Posted a709898670

tags:

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

 

equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。

Object类中的equals方法内部使用的就是==比较运算符

技术分享图片

 1 public class Person {
 2     private String name;
 3     private int age;
 4     Person(){
 5         
 6     }
 7     Person(String name,int age){
 8         this.name=name;
 9         this.age=age;
10     }
11 
12     public boolean equals(Object obj) {//Object obj=new Person();
13         //调用子类都有的成员,需要向下转型
14         if(obj==null){
15             return false;
16         }
17         if(obj==this){
18             return true;
19         }
20         if(obj instanceof Person ){
21             Person p=(Person)obj;
22             return this.age==p.age;
23         }
24         return false;
25     }

toString方法

技术分享图片

 1 public class Demo01 {
 2 
 3     public static void main(String[] args) {
 4         Person p1=new Person("熊大",2);
 5         Person p2=new Person("熊二",2);
 6         ArrayList<String> list=new ArrayList<String>();
 7         System.out.println(p1==p2);
 8         System.out.println(p1.equals(list));
 9         System.out.println(p1);//默认打印tostring()   子类方法重写后  就变成子类重写方法
10         System.out.println(p2);
11     }

 

 

 

 

 

String类

创建的相同String数组地址是一样的,在运行str时已经存在abc字符串数组,

所以运行str2的时候会先去找这个数组存不存在,如果已经有了则他的地址直接拿过来用

所以str与str2的地址与内容都是一样的

1 public static void main(String[] args) {
2         String str="abc";
3         //str="efg";
4         //String str1=new String("abc");
5         String str2="abc";
6         System.out.println(str==str2);
7         System.out.println(str.equals(str2));
8     }

 

 

 

图解

技术分享图片

当运行str的时候,在堆里分配一个数组地址,分为三块,这个地址给到str,

在运行str1的时候,也分配一个地址,因为内容一样 所以str的地址直接给到str1,

所以str与str1比较的时候,他们地址不一样而内容是一样的

技术分享图片
1 public static void main(String[] args) {
2         String str="abc";
3         //str="efg";
4         String str1=new String("abc");
5         //String str2="abc";
6         System.out.println(str==str1);
7         System.out.println(str.equals(str1));
8     }
技术分享图片

图解:

技术分享图片

插一段string的构造方法

1 public static void main(String[] args) {
2         //字节数组走的是GBK编码表(正数走ascII表,负数就是汉字(两个字节一个汉字))
3         byte[] bytes={97,98,99,100};
4         String str=new String(bytes);
5         String str2=new String(bytes,1,2);
6         System.out.println(str2);
7         System.out.println(str);//abcd
8     }

详细ascII码表:

48—0,65—A,97—a

技术分享图片

 

以上是关于Object对象 equals()方法的主要内容,如果未能解决你的问题,请参考以下文章

javase学习二

深入java的equals方法,怎么比较两个对象的

Object对象 equals()方法

object类的equals方法简介 & String类重写equals方法

Object 类中的 equals方法

Object_equals 方法