没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:郝浩|2015-11-19 16:32:25.000|阅读 3876 次
概述:通过这个简单的代码小测验让你对Java有多一点的理解。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
这是我们今天要讨论的话题,因为我觉得它非常的有趣。
如果你运行如下代码:
Integer a = 1000, b = 1000; System.out.println(a == b);//1 Integer c = 100, d = 100; System.out.println(c == d);//2
你会得到以下运行结果:
false true
我们知道,如果两个引用指向同一个对象,那么==就成立;反之,如果两个引用指向的不是同一个对象,那么==就不成立,即便两个引用的内容是一样的。因此,结果就会出现false。
这是非常有趣的地方。如果你查看Integer.java类,你会找到IntegerCache.java这个内部私有类,它为-128到127之间的所有整数对象提供缓存。
这个东西为那些数值比较小的整数提供内部缓存,当进行如此声明时:
Integer c = 100;
它的内部就是这样的:
Integer i = Integer.valueOf(100);
如果我们观察valueOf()类函数,我们可以看到
public static Integer valueOf(int i) { if (i >= IntegerCache.low && i return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }
如果值在-128到127之间,它就会返回该缓存的实例。
因此。。。
Integer c = 100, d = 100;
两者指向同样的对象。
这就是为什么这段代码的结果为true了:
System.out.println(c == d);
现在你可能会问,为什么会为-128到127之间的所有整数设置缓存?
这是因为在这个范围内的小数值整数在日常生活中的使用频率要比其它的大得多,多次使用相同的底层对象这一特性可以通过该设置进行有效的内存优化。你可以使用reflection API任意使用这个功能。
运行下面的这段代码,你就会明白它的神奇所在了。
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { Class cache = Integer.class.getDeclaredClasses()[0]; //1 Field myCache = cache.getDeclaredField("cache"); //2 myCache.setAccessible(true);//3 Integer[] newCache = (Integer[]) myCache.get(cache); //4 newCache[132] = newCache[133]; //5 int a = 2; int b = a + a; System.out.printf("%d + %d = %d", a, a, b); // }
本文翻译自dzone.com,由回忆和感动翻译,转载请注明文章来自慧都控件网。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
通过 HOOPS Luminate,TopSolid 的客户能在设计阶段就获得接近成品的视觉效果,缩短方案确认时间,提升成交效率。
随着应用跨平台需求的增加,测试环境的碎片化问题日益突出——设备、浏览器、操作系统版本的多样性使得测试覆盖率难以提升,同时本地维护测试环境的成本也急剧上升。借助SmartBear的两款产品——TestComplete与BitBar云,这些问题将迎刃而解。TestComplete作为一款强大的自动化GUI测试工具,结合BitBar云的跨平台测试能力,可以轻松实现多环境并行测试,显著提升测试效率与覆盖率
Sparx EA的三维功能体系构成了企业数字化转型的智能导航系统:可视化路线图提供方向指引,业务流程模拟实现路径优化,场景分析则保障行程安全。这套完整的方法论和工具组合,正在帮助越来越多的企业在数字化转型的复杂旅程中保持方向正确、执行有力、风险可控,最终实现战略目标。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号