从百度转载知道的很多,可以个人整理后日后阅读。
value1.comPareto(value2)==0
值1.equals (值2 )。
equals更有效率。 比较到实际上是用编码后的数值求出差分值。 根据差分值进行比较,决定两个String在词典顺序中的前后性。 只有想知道曾经的大楼是否一致时,equals也可以。 效果是一样的。
另外,equals是Object的方法,比较操作中涉及的继承类要求自己改写方法,因此String改写equals,compareTo是String的方法。 所以:
如果value1不是字符串类型,则value1.compareto(value2)将报告错误。
然后,那个
value1.equals(value2)将进行比较。
实现Comparable接口的类具有compareTo方法,如果有,可以使用
所有已知的实现类:
Authenticator.RequestorType,BigDecimal,BigInteger,Boolean,Byte,ByteBuffer,Calendar,Character,CharBuffer,chher component.baselineresizebehavior,CompositeName,CompoundName,Date,Desktop.Action,String
但是,Object类是. equals (但没有compareTo
Object是根类,一个方法可以由其他类继承使用。所以. equals基本上随时都可以使用。
//*
实现Comparable接口,重写compareTo方法,并返回值1,0,-1
编写比较到方法是重建排序规则
*/
公共int比较到(对象) {
人员=(人员) obj;
if(p.scorethis.score ) {
返回1;
}elseif(p.scorethis.score ) )。
返回- 1;
} else {
成绩相等的话判断年龄
if(p.agethis.age ) {
返回1;
}elseif(p.agethis.age ) )。
返回- 1;
} else {
返回0;
}
}
}
1.==:所有基本数据类型都是此比较。
Java包含八种基本数据类型:
布尔、字节、字符、短整型、整型、浮点型、双精度、长整型
请注意,String是类,而不是基本数据类型.
2.equals ) )用于引用数据类型(除了上面的八个),如封装类、Object子类等,并比较它们是否指向同一对象。
例如,String str='abc ';
等价: char data[]={'a '、' b '、' c'}; stringstr=new string (数据;
str指向名为newstring(data )的对象。 如果其他变量也指向此对象,则他们返回比较结果true。
因为这个方法在Object中,所以有很多重写。 具体请看说明;
此外` ` ` equalsIgnoreCase () '可以忽略大小写;
Object和string equals ) )上例不太友好,因为实现之间存在差异。 demo在最后
3.compareTO可以比较两个字符串,得到顺序。
按词典顺序比较两个字符串。 此比较基于字符串中每个字符的Unicode值。 将此String对象表示的字符串与参数字符串表示的字符串进行比较。
分析String类的equals和compareTo源代码:
publicbooleanequals (对象对象) {
if(this==anobject ) {
返回真;
}
if(anobjectinstanceofstring ) {
stringanotherstring=(string ) anObject;
int n=count;
if(n==anotherstring.count ) {
char v1[]=value;
char v2[]=anotherString.value;
int i=offset;
int j=anotherString.offset;
wile(n----!=0}{
if(V1[I]!=v2[j ] )
返回假;
}
返回真;
}
}
返回假;
}
公共int比较to (stringanotherstring ) {
int len1=count;
int len2=anotherString.count;
intn=math.min(Len1,len2);
char v1[]=value;
char v2[]=anotherString.value;
int i=offset;
int j=anotherString.offset;
if(I==j ) {
int k=i;
int lim=n i;
while(klim ) {
char c1=v1[k];
char c2=v2[k];
if(C1!=c2 ) {
返回C1-C2;
}
k;
}
} else {
wile(n----!=0}{
char c1=v1[i ];
char c2=v2[j ];
if(C1!=c2 ) {
返回C1-C2;
}
}
}
返回len1- len 2;
}
object的默认equals实现:
publicbooleanequals (对象2 ) )。
{
this==o2;
}