java 5 引入了自动装箱和自动拆箱的概念。使得开发者不需要注意基本类型如:int long等基本类型和对应的对象类型:Integer Long等之间的转换问题。但是也稍微带来了一点点需要注意的东西。
在java 5 中,要特别注意这些对象之间使用==的问题。
int value = 100;
Integer a = value;
Integer b = value;
System.out.println(a + "==" + b + " ? " + (a == b));
输出:
100==100 ? true
int value = 300;
Integer a = value;
Integer b = value;
System.out.println(a + "==" + b + " ? " + (a == b));
输出:
300==300 ? false
为什么会不一样捏? 为什么呢?
对比一下反编译的源代码:
int value = 100;
Integer a = Integer.valueOf(value);
Integer b = Integer.valueOf(value);
System.out.println((new StringBuilder()).append(a).append("==").append(b).append(" ? ").append(a == b).toString());
int value = 300;
Integer a = Integer.valueOf(value);
Integer b = Integer.valueOf(value);
System.out.println((new StringBuilder()).append(a).append("==").append(b).append(" ? ").append(a == b).toString());
看看JDK5的源代码:
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
}
原来还有cache的啊……
所以得出两个结果:
1、慎用 Integer Long Double 等对象请慎用== ,最好转换成基本类型进行对比。
2、尽量少用new Long(x) new Integer(x) 等,尽量使用Integer.valueOf(x) Long.valueOf(x),这样可以避免过多的new对象,稍微提高一点性能。
分享到:
相关推荐
加密的惨剧!慎用文件夹加密软件! 加密的惨剧!慎用文件夹加密软件!
把要删除的文件拖到这个文件上面即可。注意,这是强力删除。一定慎用,因为连垃圾箱都会没有的。
易语言处理事件命令慎用时钟版源码,处理事件命令慎用时钟版
preserve_c_code_attention!!!_在linux下请慎用rm命令_删除了一堆代_c_code
自己布局的ug9。0各种快捷键都设置号了
SQL和MSDE清理小程序(慎用),SQL和MSDE清理小程序(慎用),SQL和MSDE清理小程序(慎用),
慎用六大软件伤硬盘最终版.pdf
标题“慎用动态编译”指的是在编程过程中对动态编译这一技术的谨慎态度。动态编译是程序运行时根据需要将源代码编译为可执行代码的过程,与静态编译(编译时一次性完成)形成对比。在Java中,JIT(Just-In-Time)...
玩客云 灯光控制 容易烧主板 慎用
标题“慎用ext.zip”可能指的是在编程或系统管理中,对使用特定扩展名如“ext.zip”可能带来的潜在问题的警示。虽然描述部分没有提供具体信息,但我们可以基于这个标题来探讨一下在处理zip文件,特别是那些带有“ext...
慎用抗生素 刻不容缓 (小品).docx
然而,随着这些软件的普及,针对其的专门清除工具也逐渐出现在网络上,比如被标记为“慎用”的“冰冻精灵清除器”压缩文件。这种工具的出现,既满足了部分用户在特殊情况下需要卸载或禁用冰冻精灵的需求,也带来了...
他是真不讲话!!!! 直接一步升天,把你密码篡改了,然后回到登录界面,若不幸打开,请找guboyu1@126.com索要密码,或直接找百度、洛谷、CSDN、GitHub、GitCoad的guboyu1寻求解药
《易语言处理事件命令慎用时钟版源码解析》 易语言,作为一款由中国程序员设计的编程语言,以其简洁的语法和贴近自然语言的特点,为初学者提供了友好的编程环境。然而,对于任何编程语言而言,理解并合理使用各种...
初中语文文摘生活慎用何首乌治白发
易语言处理事件命令慎用线程版源码。@易语言源码分享站。
计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习...
Windows 10 系统 PIN 码登录功能使用注意事项 Windows 10 系统中提供了 PIN 码登录功能,這是一种相对便捷的登录方式,相比传统的密码登录方式,PIN 码登录方式更加简洁和方便。但是,在最新的 Win10 预览版 9926 ...