我是靠谱客的博主 奋斗饼干,最近开发中收集的这篇文章主要介绍Integer的equals方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在写代码的时候发现Integer也有equals方法。那么它和string的equals方法有什么区别呢?

这是Integer的方法源码:

public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }
可以看见是把对比的对象看是不是Integer类型的,是的话就转为int基本类型再用 == 比较,比较的就是数值了。所以来点特殊的。

代码测试:

                Integer q=300;
        Integer w=300;
        Integer e=100;
        Integer f=100;
        if (q==w){
            System.out.println(" == **********"+"q和w匹配成功"+"***********");
        }
        if (e==f){
            System.out.println(" == **********"+"e和f匹配成功"+"***********");
        }
        if(q==300){
            System.out.println(" == **********"+"q和300匹配成功"+"***********");
        }
        if(q.equals(w)){
            System.out.println(" equals **********"+"q和w匹配成功"+"***********");
        }
        if(e.equals(f)){
            System.out.println(" equals **********"+"e和f匹配成功"+"***********");
        }
输出结果:

 == **********e和f匹配成功***********
 == **********q和300匹配成功***********
 equals **********q和w匹配成功***********
 equals **********e和f匹配成功***********

得 可以发现q和w的第一次 “==”匹配是不成功的。

查资料可以知道Integer有缓存数组,即-128<=value<=127,都从缓存数组中获取Integer对象。对于测试中的,q和w都是超过了缓存的值,因此都是new的新得对象,所以==匹配不了。所以我们不难理解,Integer的“==”方法是比较地址的。而Integer的equals方法则不会有这些问题,是直接字面上的比较。

因此使用Integer做比较的时候,的区分是否超过了缓存数组的区域。

最后

以上就是奋斗饼干为你收集整理的Integer的equals方法的全部内容,希望文章能够帮你解决Integer的equals方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部