• Java基础03-12_对象比较


    对象比较

    如果说现在有两个数字要判断是否相等,可以使用“==”完成

    如果是字符串要判断是否相等使用“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类对象
    		Book b2 = new Book("Java开发", 79.8);// 实例化Book类对象
    		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 ;
    	}
    	/**
    	 * 进行本类对象的比较操作,在比较过程中首先会判断传入的对象是否为null,而后判断地址是否相同,
    	 * 如果都不相同则进行对象内容的判断,由于compare()方法接收了本类引用,所以可以直接访问私有属性
    	 * @param book 要进行判断的数据
    	 * @return 内存地址相同、或者属性完全相同返回true,否则返回false
    	 */
    	public boolean compare(Book book) {
    		if (book == null) {		// 传入数据为null
    			return false ;		// 没有必要进行具体的判断
    		}
    		// 执行“b1.compare(b2)”代码时会有两个对象:当前对象this(调用方法对象,就是b1引用); 传递的对象book(引用传递,就是b2引用)
    		if (this == book) {		// 内存地址相同
    			return true ;		// 避免进行具体细节的比较,节约时间
    		}
    		if (this.title.equals(book.title)
    			&& this.price == book.price) {	// 属性判断
    			return true ;
    		} else {	return false ;	}
    	}// setter、getter略
    }
    
    
  • 相关阅读:
    Typora使用
    Hadoop federation配置
    Git代码管理
    HTML-JS-CSS基础
    Typora使用
    JAVA面试精选【Java算法与编程一】
    JAVA面试精选【Java基础第三部分】
    android中进程与线程
    JAVA面试精选【Java基础第二部分】
    Struts框架核心工作流程与原理
  • 原文地址:https://www.cnblogs.com/xuwei1/p/8405386.html
Copyright © 2020-2023  润新知