栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Integer a = 200; Integer b = 200; a.equals(b) 为什么是 true?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Integer a = 200; Integer b = 200; a.equals(b) 为什么是 true?

1:Integer Short Long是Java的类,也称之为封装数据类型,对应的基础数据类型是:int short long
2:为什么提供封装数据类型,可以方便的进行数据类型的转换
3:因为在开发中,我们经常有些是字符串的数字比如:“520” 如果没有封装数据类型,就必须自己去转换
4:为了提升性能,这个几个对 byte 的范围的数字做了缓存处理。所以只要是在 -128~127 的数字用 == 去比较是 true,反之都是 false
5:明白一点,基础数据类型比较,只要值相同就是 true(这点是关键和是核心)
6:所以为什么 Integer a = 200; Integer b = 200; a.equals(b) 为什么是 true 因为 Integer 的 equals() 方法,底层会转化成 int 类型,这也就是第五点的知识点
7:那来解释一下为什么 Integer a = 200; Integer b = 200; a == b 是 false 呢?因为底层其实是这样的如下: Integer a = new Integer(200); Integer b = new Integer(200); a == b 肯定不相等,因为内存地址都不一样
8:为什么 Integer a = 100; Integer b = 100; a == b 是 ture 因为 Integer 对 byte 范围做了缓存 IntegerCache
所以只要是:-128~127 用 == 都是相等的,超过的都是 false
所以总结:在开发中比较的时候,尽量用 equals(),因为底层会转化成基础数据类型比较,值相同永远相等,这个规则同样适用于:Short 和 Long

示例代码:

package com.example.test;

import org.junit.Test;

public class Demo {
    @Test
    public void testInteger() {
        Integer i1 = 100;
        Integer i2 = 100;
        Integer i3 = 200;
        Integer i4 = 200;
        System.out.println(i1 == i2);
        System.out.println(i3 == i4);
        System.out.println(i1.equals(i2));
        System.out.println(i3.equals(i4));
    }
}

运行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/390173.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号