0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为什么Java中1000==1000为false,而100==100为true呢

数据分析与开发 来源:数据分析与开发 作者:codeceo 2020-11-19 15:51 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

为什么 Java 中“1000==1000”为false,而”100==100“为true? 这是一个挺有意思的讨论话题。 如果你运行下面的代码:

Integera=1000,b=1000; System.out.println(a==b);//1 Integerc=100,d=100; System.out.println(c==d);//2

你会得到

false true

基本知识:我们知道,如果两个引用指向同一个对象,用==表示它们是相等的。如果两个引用指向不同的对象,用==表示它们是不相等的,即使它们的内容相同。

因此,后面一条语句也应该是false 。

这就是它有趣的地方了。

如果你看去看 Integer.java 类,你会发现有一个内部私有类,IntegerCache.java,它缓存了从-128到127之间的所有的整数对象

所以事情就成了,所有的小整数在内部缓存,然后当我们声明类似——

Integerc=100;

的时候,它实际上在内部做的是:

Integeri=Integer.valueOf(100);

现在,如果我们去看valueOf()方法,我们可以看到

publicstaticIntegervalueOf(inti){ if(i>=IntegerCache.low&&i returnIntegerCache.cache[i+(-IntegerCache.low)]; returnnewInteger(i); }

如果值的范围在-128到127之间,它就从高速缓存返回实例。

所以…

Integerc=100,d=100;

指向了同一个对象。

这就是为什么我们写

System.out.println(c==d);

我们可以得到true。

现在你可能会问,为什么这里需要缓存?

合乎逻辑的理由是,在此范围内的“小”整数使用率比大整数要高,因此,使用相同的底层对象是有价值的,可以减少潜在的内存占用。

然而,通过反射API你会误用此功能。

运行下面的代码,享受它的魅力吧

publicstaticvoidmain(String[]args)throwsNoSuchFieldException,IllegalAccessException{ Classcache=Integer.class.getDeclaredClasses()[0];//1 FieldmyCache=cache.getDeclaredField("cache");//2 myCache.setAccessible(true);//3 Integer[]newCache=(Integer[])myCache.get(cache);//4 newCache[132]=newCache[133];//5 inta=2; intb=a+a; System.out.printf("%d+%d=%d",a,a,b);// }

责任编辑:xj

点赞和在看就是最大的支持

原文标题:为什么 Java 中“1000==1000”为false,而”100==100“为true?

文章出处:【微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    20

    文章

    3015

    浏览量

    117024
  • C语言
    +关注

    关注

    183

    文章

    7649

    浏览量

    146401

原文标题:为什么 Java 中“1000==1000”为false,而”100==100“为true?

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    探索TP9237:PT100/PT1000温度传感器评估单元的卓越性能

    探索TP9237:PT100/PT1000温度传感器评估单元的卓越性能 在电子工程领域,温度测量是一个至关重要的环节,PT100/PT1000
    的头像 发表于 05-16 16:30 555次阅读

    Adafruit MAX31865 RTD PT100/PT1000放大器:高精度温度传感解决方案

    ,其内部电阻会随温度变化改变,本质上类似于热敏电阻。在这类传感器,电阻是一小条铂,在0°C时电阻值1001000欧姆,因此被称为PT
    的头像 发表于 05-11 10:15 352次阅读

    探秘ABCU - 57xxxxZ家族10/100/1000BASE - T电气收发器

    探秘ABCU - 57xxxxZ家族10/100/1000BASE - T电气收发器 在当今高速发展的网络通信领域,电气收发器扮演着至关重要的角色。Avago Technologies推出的ABCU
    的头像 发表于 05-10 15:15 278次阅读

    ADRF6850:100 MHz - 1000 MHz集成宽带接收器的全面解析

    ADRF6850:100 MHz - 1000 MHz集成宽带接收器的全面解析 在当今的通信领域,对于高性能、高集成度的宽带接收器的需求日益增长。ADRF6850作为一款备受关注的产品,工程师们
    的头像 发表于 05-08 17:40 404次阅读

    ZCL系列电流传感器上市 | 100A至1000A,精度0.05%

    本文导读致远仪器ZCL系列电流传感器正式上市,与ZCT系列形成精度梯度搭配,在100A至1000A电流范围内提供0.05%精度等级的测量方案,大电流测量场合提供更多型号选择。ZCL系列介绍2025
    的头像 发表于 04-09 11:35 1114次阅读
    ZCL系列电流传感器上市 | <b class='flag-5'>100</b>A至<b class='flag-5'>1000</b>A,精度0.05%

    1000W Slim Type with PFC Switching Supply UHP - 1000系列:高性能电源解决方案解析

    1000W Slim Type with PFC Switching Supply UHP - 1000系列:高性能电源解决方案解析 在电子工程师的工作,选择一款合适的电源供应器至关重要。UHP
    的头像 发表于 04-05 15:45 783次阅读

    1000W单输出医疗型电源MSP - 1000系列深度解析

    1000W单输出医疗型电源MSP - 1000系列深度解析 在医疗设备的设计,电源的稳定性、安全性和性能表现至关重要。今天我们来详细探讨一下1000W单输出医疗型MSP -
    的头像 发表于 04-05 10:15 350次阅读

    深入解析HRPG - 1000系列1000W单输出电源:特性、规格与应用

    深入解析HRPG - 1000系列1000W单输出电源:特性、规格与应用 在工业电子设备的设计,可靠且高效的电源供应是至关重要的。HRPG - 1000系列
    的头像 发表于 04-04 16:45 1213次阅读

    TDC1000-Q1:超声波传感模拟前端的卓越之选

    各种超声波传感应用提供了全面可靠的解决方案。 文件下载: tdc1000-q1.pdf 1. 产品特性亮点 1.1 汽车级认证与宽温范围 TDC1000-Q1通过了AEC-Q100
    的头像 发表于 02-25 11:10 360次阅读

    SRK1000/SRK1000A/SRK1000B:适用于反激式转换器的同步整流控制器

    的是STMicroelectronics推出的SRK1000、SRK1000A和SRK1000B系列同步整流控制器,它们在反激式转换器应用展现出了卓越的性能。 文件下载: srk
    的头像 发表于 01-27 14:00 1034次阅读

    SRK1000 / SRK1000A / SRK1000B:反激式转换器同步整流控制器的卓越之选

    SRK1000 / SRK1000A / SRK1000B:反激式转换器同步整流控制器的卓越之选 在电源设计领域,反激式转换器是一种常见且重要的电路拓扑。同步整流技术的应用,则能有效
    的头像 发表于 01-27 14:00 834次阅读

    工业测温选PT100还是PT1000

    电机过热是工业现场设备失效的主因之一。面对PT100与PT1000两种主流热电阻探头,究竟该如何选择?本文您解析其中的关键考量。工业电机过热保护:PT100/PT
    的头像 发表于 01-21 11:39 1129次阅读
    工业测温选PT<b class='flag-5'>100</b>还是PT<b class='flag-5'>1000</b>?

    有关100M、1000M以太网一致性测试问题探讨交流

    100M、1000M以太网一致性测试
    的头像 发表于 12-14 10:42 904次阅读
    有关<b class='flag-5'>100</b>M、<b class='flag-5'>1000</b>M以太网一致性测试问题探讨交流

    RIGOL普源DS1000Z与DHO1000系列对比评测

    与通道配置:DS1000Z提供100MHz/200MHz固定带宽(如DS1202Z-E200MHz),标配2模拟通道;DHO1000系列可选70/
    的头像 发表于 11-13 11:47 713次阅读
    RIGOL普源DS<b class='flag-5'>1000</b>Z与DHO<b class='flag-5'>1000</b>系列对比评测

    PS1000光伏电站提供电能质量“智能体检”!

    炫通电气PS1000电能质量分析仪是您光伏电站运维的有利帮手
    的头像 发表于 08-06 08:59 800次阅读
    PS<b class='flag-5'>1000</b><b class='flag-5'>为</b>光伏电站提供电能质量“智能体检”!