社区
Java SE
帖子详情
请问cmpareTo和equals有什么区别吗?
yyttrr2005
2007-11-15 06:17:48
请问cmpareTo和equals有什么区别吗?
除此之外,还有别的比较字符串的方法吗?
谢谢
...全文
181
10
打赏
收藏
请问cmpareTo和equals有什么区别吗?
请问cmpareTo和equals有什么区别吗? 除此之外,还有别的比较字符串的方法吗? 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sunyujia
2007-11-17
打赏
举报
回复
compareTo最最 重要的是可以是Collections接口下的集合类来实现自动排序
例如list.sort();
会调用list中的对象compareTo方法来实现排序,ok,楼主结贴吧
j67884159
2007-11-17
打赏
举报
回复
compare to 比较引用地址 返回好象是数字
equals 比较引用地址的内容 返回true false
CaiKanXP
2007-11-16
打赏
举报
回复
compareTo和equals方法的编写都需要遵循一定的规范,Java API Doc中有提到,楼主可以参考一下,相关的接口还有Comparator。
这两个方法的具体实现也是有一定的关联的,很多情况下,两个调用equals进行比较结果相同的对象,调用compareTo时则也应该返回0。
这样做大概是为了实现Java Collections Framework中的某些意图和规范吧。
rorey_008
2007-11-16
打赏
举报
回复
关于equal 和 compareTo的比较,我想楼上几位说的很清楚了;
在这里要说一下==,楼主要注意,比较字符串的时候不要用==去比较,
不信你试试
String str1 = "hello";
String str2= "hello";
if(str1 == str2)
{
System.out.println("相等");
}
else
{
System.out.println("不相等");
}
结果肯定是不相等,因为你用==去比较两个字符串的时候,实际上比较的是这两个字符串的地址,肯定就不相等
==什么情况下适合呢,一句话,基本数据类型(int double float等)的比较
jessieca
2007-11-15
打赏
举报
回复
equals是object里的方法,有的类对其进行重写,一般用来比较对象的值,如String;
而 == 是比较对象的引用地址是否一样;
compareTo
按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只在方法 equals(Object) 返回 true 时才返回 0。
equals
将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
iskyshop
2007-11-15
打赏
举报
回复
==是比较2个对象的引用,就是内存地址
yyttrr2005
2007-11-15
打赏
举报
回复
==不行的吧
树成
2007-11-15
打赏
举报
回复
cmpareTo是比较大小的,常用于集合类里面的对象排序,实现一半是继承排序接口,另外就是自己写一个排序类。
equals方法是对象是否相同比较,它是Object里面就存在的方法,Object对equals的实现就是“==”,所以通常写类要求覆盖这个方法。
其实你用==也可以比较字符串的,当然和equals的比较不同。
iskyshop
2007-11-15
打赏
举报
回复
compareTo:按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象在参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只有在方法 equals(Object) 返回 true 时才返回 0。
这是字典排序的定义。如果这两个字符串不同,则要么它们在某个索引处具有不同的字符,该索引对二者均为有效索引,要么它们的长度不同,或者同时具备上述两种情况。如果它们在一个或多个索引位置上具有不同的字符,假设 k 是这类索引的最小值;则按照 < 运算符确定的那个字符串在位置 k 上具有较小的值,其字典顺序在其他字符串之前。这种情况下,compareTo 返回这两个字符串在位置 k 处的两个不同的 char 值,即值:
this.charAt(k)-anotherString.charAt(k)
如果它们没有不同的索引位置,则较短字符串在字典顺序上位于较长字符串的前面。这种情况下,compareTo 返回这两个字符串长度的不同,即值:
this.length()-anotherString.length()
==========================
equals:equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等。
olivesoup
2007-11-15
打赏
举报
回复
compareTo()是两个串对象比较大小,返回一个整数值,如果调用串对象大,返回正整数,反之,返回负整数。相等则返回0。返回的值是两个串首次出现不同字符的ASCII的差值。
对于String类的compareTo里面就是用equals实现的.
实现了Comparable接口的就都存在比较,看看API源码很多都是这样
比较字符串就用equals
cmpa
reTo和
equals
字符比较的
区别
public static string max(string num1, string num2) { if (num1.
Equals
(num2)) // if (num1.CompareTo(num2) >= 0) { return num1; }
乱写 hashcode
equals
e
关于重写
equals
hashcode 一级
cmpa
reTo方法 Object的
equals
e 方法比较的是地址值 string Math 还有Inte
【剑指offer2】 chap3 字符串
三、字符串 1、基础知识 Character Java Character 类 | 菜鸟教程 Character.isLetterOrDigit(ch1) Character.toLowerCase(ch1) String charAt ...
cmpa
reTo ...
equals
Java自定义实体类集合多规则排序
java的Comparator与Comparable接口的使用方式,和stream的组合使用
黑马程序员---HashSet,TreeSet的
区别
---------------------- http://edu.csdn.net/heima" target="blank">android培训、http://edu.csdn.net/heima" ... | ----set:元素是无序的(存入和取出的顺序不一定是一致的),元素不可以重复
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章