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