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略
}
												
											Java基础03-12_对象比较的更多相关文章
- 第31节:Java基础-类与对象
		
前言 Java基础-类与对象,方法的重载,构造方法的重载,static关键字,main()方法,this关键字,包,访问权限,类的继承,继承性,方法的重写,super变量. 方法的重载:成员方法的重载 ...
 - Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream)
		
Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我已经分享过很多的J ...
 - Java基础-IO流对象之随机访问文件(RandomAccessFile)
		
Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...
 - Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)
		
Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内存 ...
 - Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)
		
Java基础-IO流对象之数据流(DataOutputStream与DataInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据流特点 操作基本数据类型 ...
 - Java基础-IO流对象之打印流(PrintStream与PrintWriter)
		
Java基础-IO流对象之打印流(PrintStream与PrintWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.打印流的特性 打印对象有两个,即字节打印流(P ...
 - Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream)
		
Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.对象的序 ...
 - java基础-IO流对象之Properties集合
		
java基础-IO流对象之Properties集合 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Properties集合的特点 Properties类表示了一个持久的属性集. ...
 - Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader)
		
Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符缓冲流 字符缓冲流根据流的 ...
 - Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream)
		
Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我们学习字 ...
 
随机推荐
- A1107. Social Clusters
			
When register on a social network, you are always asked to specify your hobbies in order to find som ...
 - (转)git checkout 撤销修改
			
背景:学习git相关命令 git撤销修改和版本回退 git status查看当前仓库的状态 liuzhipeng@exdroid43:~/pad/pad-test$ git status 位于分支 m ...
 - 每添加一张图片后,GDI对象 + 3 原因: ImageList_AddIcon(hIcon) 后没调用 DestroyIcon(hIcon)
			
今天无意间在[任务管理器]中发现,每添加1张图片后,应用程序的 GDI对象 + 3,添加图片后,再把所有图片删除, GDI对象数量没减少! 排查原因,发现: GDI对象 + 3 的代码是: int o ...
 - python pip NameError:name 'pip' is not defined”
			
https://www.jianshu.com/p/f57f98ebcb21 问题: 如果直接在命令行里面输入pip或者pip3,提示:(如图1) “NameError:name 'pip' is n ...
 - Day17--Python--面向对象--成员
			
成员 class Person: def __init__(self, name, num, gender,birthday): # 成员变量(实例变量) self.name = name self. ...
 - 前端模块化,AMD与CMD的区别
			
最近在研究cmd和amd,在网上看到一篇不错的文章,整理下看看. 在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即可:如今CPU.浏览器性能得到了极大的提升,很多页面逻辑迁移到 ...
 - log4j 配置,tomcat 启动或有后台操作时,控制台会显示很多 DEBUG 信息
			
log4j 配置,tomcat 启动或有后台操作时,控制台会显示很多 DEBUG 信息 日志信息可以以文件形式显示,也可以在控制台输出,在 log4j.properties 文件设置. 控制台有很多 ...
 - [Luogu 1262] 间谍网络
			
题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报 ...
 - 如何重置mysql中的root密码
			
方法一: 在my.ini的[mysqld]字段加入:skip-grant-tables重启mysql服务,这时的mysql不需要密码即可登录数据库 然后进入mysqlmysql>use mysq ...
 - Uart串口
			
title: Uart串口 tags: ARM date: 2018-10-20 16:38:28 --- Uart串口 和单片机的应用没什么区别,首先设置IO复用,设置波特率和数据位,以及中断相关的 ...