类的对象比较和值比较

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类的对象比较和值比较相关的知识,希望对你有一定的参考价值。

1)Object类中的‘‘==‘‘和‘‘equals‘‘

Object类中的equals方法和‘‘==‘‘是一样的,比较的都是【栈内存中存放的对对象堆内存地址的引用】,也就是说这两个变量如果引用的是同一个堆内存对象的话,那么他们是‘‘==‘‘的和‘‘equals‘‘的。

 

2)String类、Integer等等类中的‘‘==‘‘和‘‘equals‘‘

String、Integer类中的‘‘equals‘‘方法都是继承自Object类,但是他们都重写了‘‘equals‘‘方法。这样,对于这些类来说,‘‘==‘‘比较的是两个对象的引用是否相等,而‘‘equals‘‘方法

则比较的是两个对象的值是否相等。

结论:

对于String类来说,比较两个字符串是否相同的时候,不能直接用‘‘==‘‘,而应该用‘‘equals‘‘方法。

对于Integer和Long类等包装类来说的话,比较大小的时候不能直接用‘‘==‘‘,而应该用‘‘equals‘‘方法

对于int和long等基础数据类型来说,比较大小直接用‘‘==‘‘就可以了。

 

注意:‘‘!=‘‘和‘‘==‘‘处理类似

 

3)Integer类型的valueOf方法特殊之处

在通过valueOf方法将String类型的转为Integer类型的时候,一定要注意这个值的大小,因为这里涉及到java里面对数字的处理的一个机制:将-128~127(或者某一个)

 

以上是关于类的对象比较和值比较的主要内容,如果未能解决你的问题,请参考以下文章

比较 2 个对象的值并将值推送到一个对象数组

如何比较2个长度数组的对象条目的属性并合并为一个? [复制]

java 引用传递和值传递

python之什么是对象值比较,什么是对象身份比较

java对象的比较

如何比较 LocalDate 和 Calendar 类的对象?