• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

为什么Java中1000==1000为false而100==100为true?

为什么Java中1000==1000为false而100==100为true?

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与2

缓存池问题,JVM会默认缓存-128到127的整数,生成整数时,如果该数字在缓存池已经存在,就会从池中返回你对象,而不是重新生成,所以 两个100 引用的是同一个对象, == 返回true

使用道具 举报

我觉得楼主应该自己New 一个 Integer 然后 Ctrl 点进去看源码就知道了。
我帮你看一下吧,点进去看第780行
privatestaticclassIntegerCache{staticfinalintlow=-128;staticfinalinthigh;staticfinalIntegercache[];static{//highvaluemaybeconfiguredbypropertyinth=127;StringintegerCacheHighPropValue=sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");if(integerCacheHighPropValue!=null){try{inti=parseInt(integerCacheHighPropValue);i=Math.max(i,127);//MaximumarraysizeisInteger.MAX_VALUEh=Math.min(i,Integer.MAX_VALUE-(-low)-1);}catch(NumberFormatExceptionnfe){//Ifthepropertycannotbeparsedintoanint,ignoreit.}}high=h;cache=newInteger[(high-low)+1];intj=low;for(intk=0;k=127;}privateIntegerCache(){}}

使用道具 举报

发新帖

发布任务需求已有1031289位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!