• equals()方法


    equals()方法是根类Object中的一个方法,子类可以根据需要重写该方法(比如:String类)。

    一、Object类中的equals()方法实现如下:

    1     public boolean equals(Object obj) {
    2         return (this == obj);
    3     }

    例子:

    复制代码
     1 package com.mianshi.easy;
     2 
     3 class A{}
     4 
     5 public class Equals {
     6 
     7     public static void main(String[] args) {
     8         A a1 = new A();
     9         A a2 = new A();
    10         A a3 = a2;
    11         System.out.println(a1.equals(a2));
    12         System.out.println(a3.equals(a2));
    13     }
    14 }
    15 
    16 结果:
    17 false
    18 true
    复制代码

    复制代码
     1 package com.mianshi.easy;
     2 
     3 class A{}
     4 
     5 public class Equals {
     6 
     7     public static void main(String[] args) {
     8         A a1 = new A();
     9         A a2 = new A();
    10         A a3 = a2;
    11         System.out.println(a1.equals(a2));
    12         System.out.println(a3.equals(a2));
    13     }
    14 }
    15 
    16 结果:
    17 false
    18 true
    复制代码

    类A默认继承自Object类,所以具有父类中的public修饰的的equals()方法,并且功能相同。

    该方法实现的功能是比较两个对象是否是同一个对象,是同一个对象回true,否则,返回false。equals()比较的是obj存放的对象的地址值,这一点跟“==”一样。

    二、String类的中的equals()方法实现如下:

    复制代码
     1  public boolean equals(Object anObject) {
     2         if (this == anObject) {              //先比较两个对象是否为同一个对象
     3             return true;
     4         }
     5         if (anObject instanceof String) {  
     6             String anotherString = (String)anObject;  
     7             int n = value.length;
     8             if (n == anotherString.value.length) {   //比较两个对象的值是否相同,值相同equals()返回true
     9                 char v1[] = value;
    10                 char v2[] = anotherString.value;
    11                 int i = 0;
    12                 while (n-- != 0) {
    13                     if (v1[i] != v2[i])
    14                         return false;
    15                     i++;
    16                 }
    17                 return true;
    18             }
    19         }
    20         return false;
    21     }
    复制代码

    例子:

    复制代码
     1 package com.mianshi.easy;
     2 
     3 public class Equals {
     4 
     5     public static void main(String[] args) {
     6         String a1 = new String("Hello");
     7         String a2 = new String("Hello");
     8         String a3 = "Hello";
     9         //a1和a2明显不是一个对象,但是equals()返回true
    10         System.out.println(a1.equals(a2));
    11         //a1和a3不是同一个对象,equals()返回true
    12         System.out.println(a3.equals(a1));
    13     }
    14 }
    15 
    16 结果:
    17 true
    18 true
    复制代码

    复制代码
     1 package com.mianshi.easy;
     2 
     3 public class Equals {
     4 
     5     public static void main(String[] args) {
     6         String a1 = new String("Hello");
     7         String a2 = new String("Hello");
     8         String a3 = "Hello";
     9         //a1和a2明显不是一个对象,但是equals()返回true
    10         System.out.println(a1.equals(a2));
    11         //a1和a3不是同一个对象,equals()返回true
    12         System.out.println(a3.equals(a1));
    13     }
    14 }
    15 
    16 结果:
    17 true
    18 true
    复制代码

    说明String类里面重写了父类Object类的equals()方法,重写后比较的是两个String对象的内容是否相同,相同则为true。

  • 相关阅读:
    SQL SERVER2005中将普通表修改为分区表
    手把手教你建立SQL数据库的表分区
    捕获input 文本框内容改变的事件(onchange,onblur,onPropertyChange比较)
    sql语句求排名
    带输出参数的插入语句
    js Base64.encode(str)_decode(str).html
    jquery.base64.js(完美解决中文乱码) 免费版
    sql数据库如何获取某个字段里的最大值?
    C#里封装 继承 多态
    C#中的属性get和set()方法
  • 原文地址:https://www.cnblogs.com/s844876674/p/4684537.html
Copyright © 2020-2023  润新知