判断两个对象的属性值是否相等的方法,

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;
}
if(this.equals(book)){ //this表示调用该方法的对象,此处也可以:this==book;表示thi和book指的是同一个对象
return true;
}
if(this.title.equals(book.title) && this.price == book.price){//本类对象可以在本类内部调用私有属性
return true;
}else{
return false;
}
}
}
public class Test{
public static void main(String args[]){
Book b1 = new Book("数据结构",18.6);
Book b2 = new Book("数据结构",18.6);
Book b3 = new Book("数据结构与抽象",37.0);
System.out.println(b1.compare(b2));//true
System.out.println(b1.compare(b3));//false
System.out.println(b1.compare(b1));//true
System.out.println(b1==b2);//false
}
}

利用Objectl类中的public boolean equals()方法完善对象比较

class Book{
private String title;
private double price;
public Book(String title,double price){
this.title = title;
this.price = price;
}
public boolean equals(Object obj){
if(obj == null){
return false;
}
if(this == obj){
return true;
}
if(!(obj instanceof Book)){ //如果obj属于Book类对象,没有存在比较的意义,
return false;
}
Book book = (Book) obj; //向下转型
if(this.title.equals(book.title) && this.price == book.price){//本类对象可以在本类内部调用私有属性
return true;
}
return false;
}
}
public class Test{
public static void main(String args[]){
Book b1 = new Book("数据结构",18.6);
Book b2 = new Book("数据结构",18.6);
Book b3 = new Book("数据结构与抽象",37.0);
System.out.println(b1.equals(b2));//true
System.out.println(b1.equals(b3));//false
System.out.println(b1.equals(b1));//true
System.out.println(b1==b2);//false
}
}

初探java对象比较的更多相关文章

  1. 初探Java字符串

    转载: 初探Java字符串 String印象 String是java中的无处不在的类,使用也很简单.初学java,就已经有字符串是不可变的盖棺定论,解释通常是:它是final的. 不过,String是 ...

  2. Java对象序列化剖析

    对象序列化的目的 1)希望将Java对象持久化在文件中 2)将Java对象用于网络传输 实现方式 如果希望一个类的对象可以被序列化/反序列化,那该类必须实现java.io.Serializable接口 ...

  3. 通过JAXB完成Java对象与XML之间的转换

    Java对象转换XML的过程叫marshal. XML转换到Java对象的过程叫unmarshal. 一.Java对象转化为XML 这里省略getter和setter方法 通过标注@XMLRootEl ...

  4. json相关类库,java对象与json相互转换

    有效选择七个关于Java的JSON开源类库 转自:http://www.open-open.com/lib/view/open1397870197828.html 翻译: (英语原文:http://w ...

  5. Hibernate 系列 07 - Hibernate中Java对象的三种状态

    引导目录: Hibernate 系列教程 目录 1. Java对象的三种状态 当应用通过调用Hibernate API与框架发生交互时,需要从持久化的角度关注应用对象的生命周期. 持久化声明周期是Hi ...

  6. 理解Java对象序列化

    http://www.blogjava.net/jiangshachina/archive/2012/02/13/369898.html 1. 什么是Java对象序列化 Java平台允许我们在内存中创 ...

  7. java对象与XML相互转化

    起因 最近在公司做了一次webservice相关的任务,其中我最敢兴趣的就是webservice接受到XML对应的流以后是如何方便的转化成java对象,而java对象又是如何生成对应的XML的. 目的 ...

  8. java 对象序列化与反序列化

    Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化  Java序列化是指把Java对象转换为 ...

  9. Java对象大小计算

    这篇说说如何计算Java对象大小的方法.之前在聊聊高并发(四)Java对象的表示模型和运行时内存表示 这篇中已经说了Java对象的内存表示模型是Oop-Klass模型. 普通对象的结构如下,按64位机 ...

随机推荐

  1. STL --> vector向量

    vector向量 vector是一种对象实体,能够容纳许多其他类型相同的元素,因为又被称为容器. 头文件 在使用它时,需要包含头文件 <vector>. #include <vect ...

  2. Oracle查询优化改写--------------------范围处理

    一.定位连续值的范围 二.查找同一组或分区中行之间的差

  3. BigDecimal 转成 double

    NUMBER(20,2) 数据库里的字段number  ,实体是BigDecimal 将BigDecimal转成double public double getOrderamount() { if ( ...

  4. 测试驱动开发实践2————从testList开始

    内容指引 1.测试之前 2.改造dto层代码 3.改造dao层代码 4.改造service.impl层的list方法 5.通过testList驱动domain领域类的修改 一.测试之前 在" ...

  5. 修改GeoJson的网址

    http://geojson.io       可以打开自己的json  然后修改

  6. java使用io创建文件与删除文件的工具类

    java中对于文件的操作,是再常见不过了.以下代码是自己代码中所用到的工具类,仅供参考. import java.io.File; import java.io.IOException; /** * ...

  7. Leetcode 2——Range Sum Query - Mutable(树状数组实现)

    Problem: Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), ...

  8. C语言博客作业—数据类型

    一.PTA实验作业 题目1: 1. 本题PTA提交列表 2. 设计思路 (2)if(输入的n为奇数){ for(行数小于n/2+1时){ for(空格数等于n-2*k+1) printf(" ...

  9. scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250

    scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250 前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大 ...

  10. 201621123057 《Java程序设计》第3周学习总结

    1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之间的联系.步骤如下: 1.1 写出你 ...