面试问题new Integer(10)和new Integer(10)是否相等,new Integer(300)和new Integer(300)是否相等
来源:互联网 发布:ubuntu sys time.h 编辑:程序博客网 时间:2024/06/02 06:05
本文将介绍一下Java中关于Integer的缓存知识,首先看一下下面的代码,猜测一下会输出什么结果。
对于上述代码,由于运用的是“==”,而java中“==”比较的是两个引用而非引用的值,所以大家普遍认为两个输出都会是false,然而运行结果则为true,false。
Java中关于Integer缓存机制的介绍:
由于上述代码进行了自动装包操作,查看Java的Integer源码的valueOf(int)代码如下:
由上述源码可知,当装包对象在IntegerCache.low到Integer.high之间时,结果直接从IntegerCache中获取,否则直接创造一个实例。下面为IntegerCache的源码:
分析上述源码可知,IntegerCache的low为-128,而high可以通过"-XX:AutoBoxCacheMax=<size>"指定,默认的high为127。当设置high之后,high的实际值取默认值和设置值中最大值,同时小于或等于0X7FFFFF7E。然后将low到high之间的数值存放到cache中。由于该类及方法都是静态的,因此在首次使用时会执行该操作,当需要对low到high之间的数字进行装包操作时,则直接返回IntegerCache.cache中现成的引用。所以上述对基本类型3进行装包时返回同一个引用,故结果输出true。
当然,Java中除了对Integer有缓存机制外,其中还有ByteCache,ShortCache,LongCache,CharacterCache分别对其对应的类型进行缓存,其中Byte,Short,Long的缓存范围都为-128——127,Character为0——127。特别要注意的是这几个缓存中,只有Integer的缓存上限(high)可以设置,其他的都不能进行设置,为固定范围。
阅读全文
0 0
- 面试问题new Integer(10)和new Integer(10)是否相等,new Integer(300)和new Integer(300)是否相等
- new Integer()和Integer.valueOf()效率比较
- new Integer()和Integer.valueOf()效率比较
- Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别
- Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别
- Integer.valueOf和Integer.parseInt及new Integer()的区别
- Integer.parseInt("") Integer.valueOf("")和new Integer("")之间的区别
- Integer比较是否相等问题
- 【Java】Integer.parseInt() & Integer.valueOf() & new Integer()
- java Integer.ValueOf(int)和new Integer(int)性能比较
- new Integer(1)和Integer.valueOf(1)的区别
- new Integer(1)和Integer.valueOf(1)的区别
- new Integer(1)和Integer.valueOf(1)的区别
- new Integer(123)==new Integer(123)为false和new Integer(123)==123为true
- Integer间判断值是否相等问题
- Integer值判断是否相等问题
- 关于Integer对象是否相等的问题
- ArrayList<Integer> arr=new ArrayList<Integer>
- 数美笔试题目总结
- Laravel 调用 个验 对云验证的手机号 进行校验是否验证成功
- Git使用—fatal:remote origin already exists.
- 财商教育—赚大钱的所有思路
- Python之map(),reduce(),filter()函数
- 面试问题new Integer(10)和new Integer(10)是否相等,new Integer(300)和new Integer(300)是否相等
- 欢迎使用CSDN-markdown编辑器
- Linux笔记之身份与权限3:文件的特殊权限
- View基础知识
- js判断第一次打开页面
- Lodop 动态加载模板,动态加载数据
- 002-js基础笔记
- 批量替换Excel表格中非空的单元格的内容
- 点赞+1效果