码迷,mamicode.com
首页 > 其他好文 > 详细

Object_equals 方法

时间:2018-08-23 02:17:29      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:自动   不同类   his   转化   引用   ring   null   对象内存   demo   

一 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 方法

标签:自动   不同类   his   转化   引用   ring   null   对象内存   demo   

原文地址:https://www.cnblogs.com/yu-zhi/p/9521295.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!