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

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. WPF笔记1 用VS2015创建WPF程序

    使用WPF创建第一个应用程序.实现功能如下: 单击"Red"按钮,文本显示红色:单击"Black"按钮,文本显示黑色:单击"Back"按钮, ...

  2. JVM活学活用——优化springboot

    介绍 在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢? 1. 方便微服务部署. 2. 方便项目启动,不需要下载Tomcat或者 ...

  3. Eclipse项目中web app libraries和 Referenced Libraries区别

    Referenced  Libraries是编译环境下使用的JAR包,所谓编译环境下使用的JAR包, 就是说你在Eclipse中进行源文件的编写的时候,所需要引用到的类都从Referenced  Li ...

  4. python IDLE中反斜杠显示为人民币符号¥的解决办法

    改换英文字体即可

  5. springboot集成mybatisplus

    介绍: Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生.(摘自mybatis-plus官网)Mybati ...

  6. hibernate框架学习笔记12:查询优化

    类级别查询优化: 创建一个实体类: package domain; import java.util.HashSet; import java.util.Set; //客户实体 public clas ...

  7. Leetcode 28——Implement strStr()

    Implement strStr(). Return the index of the first occurrence of needle in haystack, or -1 if needle ...

  8. 设置如何远程连接mysql数据库

    安装好mysql5.6.37后,默认情况下,只允许本地登录,禁止远程登录. 可以现在本地安装好连接工具,比如sqlyog或者navicat 登陆后,切换至mysql数据库 执行下面2条语句 '; FL ...

  9. 网络1712--c语言一二维数组作业总结

    1.成绩摆前头 1.1基本要求(1分) 按时交 - 有分 未交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 - 0分 泛泛而谈(最多七分) 1.2评分要点 PTA作业总结(4分) 同学代码互评 ...

  10. 2017-2018-1 Java演绎法 第二周 作业

    团队任务:讨论Android上的游戏软件 参考现代软件工程 第一章 [概论]练习与讨论: 软件有很多种,也有各种分类办法,本次团队任务是讨论选取Android上的一个游戏软件,考虑到每位组员接触的游戏 ...