JAVA中关于大小比较的概括

目录

一.比较是否相等

1.双等号"==" 

2.equals()   

二.比较大小

1.comparble接口

2.比较器comparator接口

3.三种方式对比

4. 集合框架中PriorityQueue的比较方式


一.比较是否相等

1.双等号"==" 

用来比较内存中的地址是否相等

不同对象的内存地址一定不相等。(new出来的两个对象)

2.equals()   

默认也使用“==”来比较,如果要判断两个对象内容是否相等,需要重写equals()方法。

重写equals()方法步骤:1.判断是否为空   

                                           2.判断类型是否相等

                                           3.比较每个属性的值是否相等

二.比较大小

一般对象用大于小于比较时,编译不通过。

==可以比较的原因是:对于用户实现自定义类型,都默认继承自Object类,而Object类中提供了equal方法,而==默认情况下调用的就是equal方法,但是该方法的比较规则是:没有比较引用变量引用对象的内容,而是直接比较引用变量的地址。

1.comparble接口

每一个实体类都可以继承,实现比较方法comparaTo()方法。

注:该接口只能比较一个属性,若小于,结果为负数;相等时结果为0;大于时结果为正数。最后是以升序排列方式输出。

2.比较器comparator接口

该种接口可以定义很多比较规则,根据具体业务场景做选择。(需要建立多个比较器)

注:string类型本身实现了comparable接口,可直接放入优先级队列中。除了string类型,还有Number的子类double、char等都可以放入优先级队列中。

3.三种方式对比

      覆写的方法                                                 说明
Object.equals                                因为所有类都是继承自 Object 类,所以直接覆写即可,不过只                                                        能比较相等与否
Comparable.compareTo                需要手动实现接口,侵入性比较强,但一旦实现,每次用该类                                                          都有顺序,属于内部顺序
Comparator.compare                    需要实现一个比较器对象,对待比较类的侵入性弱,但对算法                                                          代码实现侵入性强

4. 集合框架中PriorityQueue的比较方式

集合框架中的PriorityQueue底层使用堆结构,因此其内部的元素必须要能够比大小,PriorityQueue采用了:Comparble和Comparator两种方式。

你可能感兴趣的:(JAVA,java,开发语言)