类的对象比较和值比较

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(或者某一个)之间的值缓存在内存中(用于减少对象创建次数和节省内存的考虑),此数字范围内传参则直接返回缓存中的对象。在此之外的,直接new出来。

所以是在这个范围之内的数字,可以直接用''==''和''!=''进行比较,但是如果超出了这个范围,就需要用equal方法。

 

posted @ 2016-06-27 22:46  姬野  阅读(775)  评论(0编辑  收藏  举报