Object_equals 方法

Posted yu-zhi

tags:

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

一 Object 中equals:

  格式: public boolean equals(Object obj)

  equals 是比较两个对象是否相等,实际是比较两个对象的内存地址值是否相等,如果相等方法true,否则false

二 String 中equals:

  重写了Object中equals 是用来比较两个字符串是否相等

  目的是给对象成员比较

三 ==

  基本数据类型比较:

    基本数据类型比较只能用==

  引用数据类型比较:

    用于比较两个对象是否相等,实际上是比较两个对象内存地址是否相等

  

  

/* 
String equals 重写Object 中的方法;
 */

package cn.itcast_03;

public class Student3 {
    private String name;
    private int age;

    public Student3() {
        super();
    }

    public Student3(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    
    // @Override
    /* public boolean equals(Object obj){
        //为了提高代码效率
        if(this == obj){
            return true;
        }
        if(obj == null){
            return false;
        }
        
        if(getClass() != obj.getClass()){
            return false;
        }
        
        if(
        )
    } */
    
    @Override
    /* 
    String 类型比较, 得用String 类中而equals();比较的是字符串值是否相等
    比较成员变量
    String equals 是重写Object 中方法
    */
    /* 
    public boolean equals(Objcet obj){
        Student3 s = (Student3)obj;//使用学生类特有的成员变量, 因此需要向下转型
        if(this.name.equals(s.name)  && (this.age == s.age)){
            return true;
        }else{
            return false;
        }
        
        //上面可以写成这样
        // return this.name.equals(s.name) && this.age == s.age;
    }
     */
    //优化本
    public boolean equals(Objcet obj){
        //提高效率,同一个对象就不用比较
        if(obj == this){
            return true;
        }
        //判断是否是obj 是否是学生类,用 instanceof 判断
        if(!(obj instanceof Student3)){
            return false;
        }
     //强制类型转化
     Student3 s = (Student3) object;
return this.name.equals(s.name) && this.age == s.age; } }



/* 

equals:
    Object 中 equals();
        public boolean equals(Object obj){
            return obj == this;
        }
    Object 中 equals 比较两个对象的地址值
    
    重写: equals 重写一般比较是成员变量, 而且可以自动生成.
    
== hao:
    基本数据类型的比较
    引用数据类型的同一个类中对象的比较,对象的地址值
    不同类对象比较会报错

 */
package cn.itcast_03;
public class StudentDemo1
{
    public static void main(String[] argws){
        Student3 s1 = new Student3("林青霞", 30);
        Student3 s2 = new Student3("林青霞", 30);
        System.out.println(s2 == s1);//false
        Student3 s3 = s1;
        System.out.println(s3 == s1);//true
        
        System.out.println("---------------------");
        System.out.println(s1.equals(s2));//false
        System.out.println(s1.equals(s3));//true
    }
}

 







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

VSCode自定义代码片段10—— 数组的响应式方法

Android课程---Android Studio使用小技巧:提取方法代码片段

Sleep() 方法后的代码片段没有被执行

如何通过代码设置片段标签?

编写代码片段的更简洁的方法

简单的方法来分享/讨论/协作的代码片段?