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

  1. class Book{
  2. private String title;
  3. private double price;
  4. public Book(String title,double price){
  5. this.title = title;
  6. this.price = price;
  7. }
  8. public boolean compare(Book book){
  9. if(book == null){
  10. return false;
  11. }
  12. if(this.equals(book)){ //this表示调用该方法的对象,此处也可以:this==book;表示thi和book指的是同一个对象
  13. return true;
  14. }
  15. if(this.title.equals(book.title) && this.price == book.price){//本类对象可以在本类内部调用私有属性
  16. return true;
  17. }else{
  18. return false;
  19. }
  20. }
  21. }
  22. public class Test{
  23. public static void main(String args[]){
  24. Book b1 = new Book("数据结构",18.6);
  25. Book b2 = new Book("数据结构",18.6);
  26. Book b3 = new Book("数据结构与抽象",37.0);
  27. System.out.println(b1.compare(b2));//true
  28. System.out.println(b1.compare(b3));//false
  29. System.out.println(b1.compare(b1));//true
  30. System.out.println(b1==b2);//false
  31. }
  32. }

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

  1. class Book{
  2. private String title;
  3. private double price;
  4. public Book(String title,double price){
  5. this.title = title;
  6. this.price = price;
  7. }
  8. public boolean equals(Object obj){
  9. if(obj == null){
  10. return false;
  11. }
  12. if(this == obj){
  13. return true;
  14. }
  15. if(!(obj instanceof Book)){ //如果obj属于Book类对象,没有存在比较的意义,
  16. return false;
  17. }
  18. Book book = (Book) obj; //向下转型
  19. if(this.title.equals(book.title) && this.price == book.price){//本类对象可以在本类内部调用私有属性
  20. return true;
  21. }
  22. return false;
  23. }
  24. }
  25. public class Test{
  26. public static void main(String args[]){
  27. Book b1 = new Book("数据结构",18.6);
  28. Book b2 = new Book("数据结构",18.6);
  29. Book b3 = new Book("数据结构与抽象",37.0);
  30. System.out.println(b1.equals(b2));//true
  31. System.out.println(b1.equals(b3));//false
  32. System.out.println(b1.equals(b1));//true
  33. System.out.println(b1==b2);//false
  34. }
  35. }

初探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. 网络通信 --> socket通信

    socket通信 socket是应用层与TCP/IP协议族通信的中间软件抽象层,是一组接口.工作原理如下: 具体过程:服务器端先初始化socket,然后与端口绑定(bind),对端口进行监听(list ...

  2. Java ORM Hibernate 入门笔记

    一.下载 官网地址:http://hibernate.org/ Hibernate下有ORM(关系型数据库).OGM(NoSQL数据库).Search(对象全文检索).Validator的工具. OR ...

  3. java数据结构与算法之栈(Stack)设计与实现

    本篇是java数据结构与算法的第4篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型 栈是一种用于 ...

  4. virtualbox主机与虚拟机之间互相通信教程

    前言 在使用虚拟机搭建集群时,需要实现虚拟机与虚拟机之间互相ping通,并且主机与虚拟机也可以互相ping通. 一.环境准备: 1.主机为win7 2.virtualbox下创建两台ubuntu虚拟机 ...

  5. Java虚拟机之性能监控

    一.jstat:虚拟机统计信息监控工具监视虚拟机各种运行状态 图中,S0.S1(Survivor0.Survivor1)代表两个Survivor区,其中一个值为57.60%.另一个为0.E(Eden) ...

  6. 【Spring源码深度解析学习系列】核心类介绍(一)

    一.DefaultListableBeanFactory 首先看一下结构 由图可知XmlBeanFactory继承自DefaultListableBeanFactory,而DefaultListabl ...

  7. JavaScript(第二十三天)【事件入门】

    JavaScript事件是由访问Web页面的用户引起的一系列操作,例如:用户点击.当用户执行某些操作的时候,再去执行一系列代码.   一.事件介绍 事件一般是用于浏览器和用户操作进行交互.最早是IE和 ...

  8. 每日冲刺报告——Day5(Java-Team)

    第五天报告(11.6  周一) 团队:Java-Team 成员: 章辉宇(284) 吴政楠(286) 陈阳(PM:288) 韩华颂(142) 胡志权(143) github地址:https://git ...

  9. 201621123040《Java程序设计》第4周学习总结

    1.本周学习总结 1.1写出你认为本周学习中比较重要的知识点关键词 关键词:继承 多态性 基本语法 重新定义Override 1.2尝试使用思维导图将这些关键词组织起来.注:思维导图一般不需要出现过多 ...

  10. 团队作业4——第一次项目冲刺(Alpha版本)2017.11.16

    第一次会议:2017-11-16 大家的任务完成的不错^_^,继续努力了. 上图: 忘记照了,额....... 会议主要内容: 1.登录功能的讨论 2. 代码统一 具体分工: 成员 计划任务 遇见难题 ...