Java中对象的比较(学习笔记)
1)详细说明对象的比较方式有哪些?
①对象引用的比较("= ="运算符)
"= ="是将对象的引用进行比较,实质是比较两个引用变量是否引用同一个对象。注意的点:字符串常量的比较时,jvm为同一个字符串常量只创建一个对象。
②对象内容的比较(equals()方法)
equals()方法是比较两个对象的实际内容是否相同。注意的点:从源码可知,equals()方法首先会做"= ="比较,只有当两个变量引用的是不同对象时才进行内容的比较,节省一定的资源。
③自定义对象的比较(java.util.comparator接口和java.lang.comparable接口)
a.java.util.comparator接口:
保持自定义类不变化,在此之外编写一个比较算法(比较器类),它实现了comparator接口。
comparator接口定义了一个compare(t o1,t o2)方法:比较用来排序的两个参数。
/*@return o1小于、等于或者大于o2,分别返回负整数、零或者正整数。*/
此时,compare()方法的具体实现有了,再将comparator传递给collections.sort或arrays.sort方法来实现排序。
b.java.lang.comparable接口:
需要对自定义类进行改变,即实现comparable接口,让它具有比较的功能。
comparable接口定义了一个compareto(t o)方法:比较此对象与指定对象的顺序。
/*@return 该对象小于、等于或者大于o,分别返回负整数、零或者正整数。*/
comparable接口强行对实现它的每个类的对象进行整体排序,实现此接口的对象列表(和数组)可以通过collection.sort或arrays.sort进行自动排序。
例子可以观察,treeset构造函数中的treeset(comparator<? super e> comparator)和treeset()。
2) 用一个生活中的对象来生动地说明comparator和comparable的区别。
在英语中,tor是常见的人称后缀,visi-tor(访问者),crea-tor(创造者)...个人认为comparator就像是车险公司(第三方),重大的复杂的交通事故中保险公司要出人、出力去评估主要责任、次要责任等细则来划分保险金额。
而able在英语中,表示能力、能够。一个类实现了comparable接口,代表着它被赋予了一种比较的能力。小型剐蹭事故中,两位车主私下协商、赔偿一下就完事儿了。
上一篇: Dao设计模式简单实现
推荐阅读
-
Python面向对象编程中的类和对象学习教程
-
php学习笔记 类的声明与对象实例化_PHP
-
已前的学习笔记java lesson 10 博客分类: java javamembervariablereference
-
详解Java中的不可变对象
-
Java中的对象要怎样才算相等
-
JAVA 将一个StringBuffer类对象中的所有小写字母变为大写字母,大写字母变为小写字母,然后输出显示
-
简析synchronized原理与Java对象中的等待通知机制实现原理
-
Java中创建对象的五种方式
-
Lua中table内建排序与C/C++/Java/php/等内排序算法的排序效率比较
-
Java IO流的学习笔记