zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    24 Scrapy爬虫的基本使用
    22 Scrapy框架简介
    21 Scrapy框架的安装
    19 正则表达式的基本知识
    18 “中国大学排名定向爬虫”实例介绍
    17 基于bs4库的HTML内容查找方法
    16 信息标记形式及信息提取的一般方法
    python中with as语句的用法
    Firefox安装Charles配置https后无法上网解决方案(转载)
    Windows下(Win10)Charles从下载安装到证书设置和浏览器抓包测试,亲测有效!(转载)
  • 原文地址:https://www.cnblogs.com/s844876674/p/4684537.html
Copyright © 2011-2022 走看看