栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java学习笔记----对象比较

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java学习笔记----对象比较

如果有两个数字判断相等,则可以用“==”;如果是字符串要判断相等,可以使用内置方法equals();如果有一个自定义的类,要想判断他的两个对象是否相等,则必须要实现类对象中所有属性内容的比较

例.基础的比较方式

class Book{
    private String title;
    private double price;
    public Book(String title,double price){
        this.title = title;
        this.price = price;
    }
    public String getTitle(){
        return this.title;
    }
    public double getPrice(){
        return this.price;
    }
}

public class TestDemo{
    public static void main(String args[]){
        Book b1 = new Book("Java开发",79.8);
        Book b2 = new Book("Java开发",79.8);
        if(b1.getTitle().equals(b2.getTitle())
        && b1.getPrice()==b2.getPrice()){
            System.out.println("是同一个对象");
        }else{
            System.out.println("不是同一个对象");
        }
    }
}
是同一个对象

本程序确实实现了两个对象的比较操作,但是采用了第三方完成了判断,很明显不合适,这种比较的操作应该由本类完成

例.对象比较实现

class Book{
    private String title;
    private double price;
    public Book(String title,double price){
        this.title = title;
        this.price = price;
    }
    
    public boolean compare(Book book){
        if(book == null){
            return false;
        }
        //执行b1.compare(b2)时会有两个对象
        //当前对象this(调用方法对象,就是b1引用)
        //传递的对象book(引用传递,就是b2引用)
        if (this.title.equals(book.title)
        && this.price == book.price){
            return true;
        }else{
            return false;
        }
    }
    public String getTitle(){
        return this.title;
    }
    public double getPrice(){
        return this.price;
    }
}

public class TestDemo{
    public static void main(String args[]){
        Book b1 = new Book("Java开发",79.8);
        Book b2 = new Book("Java开发",79.8);
        if(b1.compare(b2)){
            System.out.println("是同一个对象");
        }else{
            System.out.println("不是同一个对象");
        }
    }
}
是同一个对象

本程序直接在Book类的内部定义一个compare()的方法,其功能就是比较对象是否相等,可以发现对象比较的操作有如下四个特点:

  • 本类接收自己的引用,再与本类当前对象(this)进行比较;
  • 为了避免NullPointerException的产生,应该增加一个null的判断;
  • 为了防止浪费性能的情况出现(要判断的属性会多),可以增加地址数值的判断;
  • 进行属性的依次比较,如果属性完全相同,则返回true,否则返回false

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/272513.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号