欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java中对象的比较(学习笔记)

程序员文章站 2024-02-05 19:57:04
1)详细说明对象的比较方式有哪些? ①对象引用的比较("= ="运算符) "= ="是将对象的引用进行比较,实质是比较两个引用变量是否引用同一个对象。注意的点:字符串常量的比较时,JVM为同一个字符串常量只创建一个对象。 ②对象内容的比较(equals()方法) equals()方法是比较两个对象的 ......

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设计模式简单实现

下一篇: