Java中的equals,==,compareTo和compare的比较
Java中的equals(),==,compareTo()和compare()
- 首先只有==可以用作两个基本类型数据之间的比较,当然是值比较。当用作两个对象比较时,比较的是对象引用,而不是值比较。
- 其次任何对象都可以调用.equals()方法,因为这是从Object类继承下来的。Object.equals(Object obj)的缺省实现也是比较对象引用(显然它不知道如何比较值),但Java类库中的绝大多数类都已覆盖了equals()方法,实现了值比较。当然如果你自定义一个类而且没有覆盖equals()方法,当然比较的还是对象引用。
- 然后compareTo()方法是Comparable接口唯一需要实现的方法。它的返回值不同于equals(),返回的是int值-1、0和1,而不是true和false。如果你的自定义类有自然顺序,那么最好也implements这个Comparable接口并实现compartTo()方法。事实上,Java类库中许多类都实现了这个接口,比如:String、Integer、Date、Time等等。
- 最后compare()是Comparator接口的一个方法。最为常见的用法是自定义一个类实现Comparator接口,然后在调用Collection.sort()时作为参数传递。这样可以在compare()方法的实现中指定集合元素的排序规则。
equals与compareTo的分别:
equals返回true or false。
CompareTo的用法如下:
如果 String str1 = "ddd1 ";
String str2 = "ddd ";
那么,str1.compareTo(str2) 返回的是 1,即str1和str2 的长度差。
如果 String str1 = "ddD ";
String str2 = "ddd ";
那么,str1.compareTo(str2) 返回的是 -32,即str1和str2中 第一个不相等的字符 ‘D’ 和 ‘d’ 的ASCII码的差值。
更详细的,可以去看javadoc
equals 是比较两个值的大小 而且在不重写的情况下 是比较两个值内容是否相等 ==是判断地址是否相等(好像是这样)
而compare to一般用来 比较引用的对象的值 而且可以被重写 Java compareTo作用是对一个类中的属性以一定的方式进行组织,写好了可以让数据更有序./** * 实现Comparable接口,重写compareTo方法,返回值1,0,-1 * 覆写compareTo方法就是重建排序规则 */ public int compareTo(Object obj) { Person p = (Person) obj; if (p.score > this.score) { return 1; } else if (p.score < this.score) { return -1; } else { // 如果成绩相等则判断年龄 if (p.age > this.age) { return 1; } else if (p.age < this.age) { return -1; } else { return 0; } } }
附其他资料1
转载自:http://blog.csdn.net/emmagood/article/details/7904571
Java中的equals,==,compareTo和compare的比较的更多相关文章
- Java 比较(==, equals, compareTo, compare)
在Java中,有 ==, equals(), compareTo(), compare() 等方法可以比较两个值或对象,比较容易混淆.画了个简单的思维导图总结一下 Java Compares 我经常记 ...
- 沉淀再出发:java中的equals()辨析
沉淀再出发:java中的equals()辨析 一.前言 关于java中的equals,我们可能非常奇怪,在Object中定义了这个函数,其他的很多类中都重载了它,导致了我们对于辨析其中的内涵有了混淆, ...
- 【转】彻底弄懂Java中的equals()方法以及与"=="的区别
彻底弄懂Java中的equals()方法以及与"=="的区别 一.问题描述:今天在用Java实现需求的时候,发现equals()和“==”的功能傻傻分不清,导致结果产生巨大的偏差. ...
- 浅谈Java中的equals和==(转)
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str ...
- 浅谈Java中的equals和==
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: String str1 = new String("hello"); String str2 = ...
- Java中的equals和hashCode方法
本文转载自:Java中的equals和hashCode方法详解 Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要 ...
- Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)
Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例 原文地址:http://www.cnblogs.com/luankun0214/p/4421770 ...
- java集合(3)- Java中的equals和hashCode方法详解
参考:http://blog.csdn.net/jiangwei0910410003/article/details/22739953 Java中的equals方法和hashCode方法是Object ...
- 【Java学习笔记之二十九】Java中的"equals"和"=="的用法及区别
Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: String str1 = new String(" ...
随机推荐
- DAY 吐
今天所学: 一,Linux的文件和目录管理 #1 cd( 变更用户所在目录)直接运行cd会进入root的/root下,后面跟目录名,会进入指定目录下( 后面只能是目录名,不能跟文件名). #2 pwd ...
- kubernetes 简单 hello world nginx svc deployment
1.nginx svc deployment [root@k8s k8s4nginx]# cat deploynginx.yaml ################################# ...
- 页面元素定位-----android真机
一.移动终端开发者选项启用USB调试模式 二.USB线连接移动终端,CTRL+R启动DOS窗口,输入:adb devices,出现以下信息,说明连接成功 三.启动appium,配置appium相关信息 ...
- 记:SpringBoot项目莫名出现ClassNotFoundException
最近某个开发环境的某个应用,隔三差五出现了某某页面找不到,网上百度找了些同类的问题都是说jstl包与默认tomcat里的包冲突,但都感觉和我的问题不是很搭配(因为相同框架的其他项目都可以正常允许) 报 ...
- SQL SERVICES 搭建问题
一.SQL SERVICES 设置IP 连接 SQL2008是没有外围配置的,为了能用IP地址或者local登陆,需要做下面的配置. 打开Microsoft SQL Server 2008 R2→配 ...
- Zookeeper 配置和原理探究
一 Zookeeper是什么? 服务集群对外提供服务的过程中,有很多的配置需要随时更新,服务间需要协调工作,那么这些信息如何推送到各个节点?并且保证信息的一致性和可靠性?我们知道分布式协调服务很难正确 ...
- SpringBoot起飞系列-国际化(六)
一.前言 国际化这个功能可能我们不常用,但是在有需要的地方还是必须要上的,今天我们就来看一下怎么在我们的web开发中配置国际化,让我们的网站可以根据语言来展示不同的形式.本文接续上一篇SpringBo ...
- php网络请求
get请求 /** * get请求 * @param $url,请求地址 * @return bool|string */ function getRequest($url){ $headerArra ...
- windows 控制台默认为UTF-8显示的方法
这里需要先了解些内容: CHCP CHCP是MS DOS中的命令,用来显示或设置活动代码页编号的.用法是: CHCP [nnn] 其中nnn指定的是代码页的编号.这个参数是可选的,在命令行下如果不指定 ...
- audio隐藏下载按钮
// 这个方法只支持 Chrome 58+, 低于该版本的是没有无法隐藏的 <audio src="/i/horse.ogg" controls="controls ...