关于Integer 和Double包装类创建对象时的底层解…
2020-01-10 16:01:54来源:博客园 阅读 ()
关于Integer 和Double包装类创建对象时的底层解析
public void method1() { Integer i = new Integer(1); Integer j = new Integer(1); System.out.println(i == j); Integer m = 1; Integer n = 1; System.out.println(m == n);//True Integer x = 128; Integer y = 128; System.out.println(x == y);//False }
如题,当数值大于等于128时,创建的俩个对象地址就不一样了,这个原因还得看Integer的源码
1 public static Integer valueOf(int i) { 2 if (i >= IntegerCache.low && i <= IntegerCache.high)//-128~127 3 return IntegerCache.cache[i + (-IntegerCache.low)]; 4 return new Integer(i); 5 }
这个IntegerCache 数组是包装类自己创建的缓存数组,里面存放着【-128,127】的整数,当数值在这个范围时,会从这个数组中直接取值,当数值不在这个范围时,就会新建对象,所以地址就会不一样
-------------------------------------------------
那么Double类型的呢
public static void main(String[] args) { double a = 2.0; double b = 2.0; Double c = 2.0; Double d = 2.0; System.out.println(a == b);//true System.out.println(c == d);//false System.out.println(a == d);//true }
进源码
public static Double valueOf (double d){ return new Double (d) ; }
显然,Double没有Integer花里胡哨,只有调用就新建一个对象
原文链接:https://www.cnblogs.com/yangxusun9/p/12178093.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 第六章第三十七题(格式化整数)(Format an integer) - 编程 2020-05-26
- 怎么自学JAVA开发? 2020-05-22
- 同事因在涉及金钱交易中使用double造成无法挽回的损失,已跑 2020-05-19
- 关于序列化的 10 几个问题,你顶得住不?.md 2020-05-19
- 错题记录——关于Java中private的用法(类与封装) 2020-05-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash