首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

Integer的疑义

2013-02-02 
Integer的疑问请看以下代码:Integer x 3Integer y 3System.out.println(x y)第一、请问以上代码

Integer的疑问
请看以下代码:



Integer x = 3;
Integer y = 3;
System.out.println(x == y);

第一、请问以上代码的打印结果为什么是true?




再看以下代码:

Integer x = 3;
Integer y = new Integer(3);
System.out.println(x == y);

第一、请问以上代码的打印结果为什么是false?

请从内存的角度来解释问题,谢谢大家!


[解决办法]
这涉及Interger的享元模式 Interger在一定范围内的数据(多大范围我忘记了)会进行享元,所谓享元就是你第一次Integer x = 3;Integer会去内存中找是否存在这个对象,如果存在则直接用存在的那个对象,如果不存在则就new一个对象。当你第一次new的时候发现没有则就new出来一个对象,第二次new的时候发现内存中有了一个这个对象则直接把引用指向了那个对象。Integer x = 3; Integer y = new Integer(3); System.out.println(x == y); 这个为false的原因是你第二次不管内存中有没有都自己new出来了一个其实这个的理解就是String一样,难点主要在Interger的享元模式(一定范围内)..


[解决办法]
http://www.ticmy.com/?p=110

热点排行