首页 > 编程知识 正文

JAVA中==和equals(Java equal和compareto_java中equals和compareTo的区别---解惑)

时间:2023-05-05 19:30:54 阅读:123882 作者:4286

从百度转载知道的很多,可以个人整理后日后阅读。

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;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。