:) 去查下源码或者是java的自动装箱和拆箱
1、对于你这种写法,int型的的值为1会被自动装箱成为Integer对象,而且对于[-128, 127]的int值会进行缓存,所以这里认为是同一对象。这个也就是在张老师的Java高薪视频里面介绍的一个模式--享元模式
2、而对于[-128, 127]之外的值会重新创建对象,所以不是同一个对象 ,比较会得出false;
也就是说、上诉1所用的的其实就是通过缓存得到,并非重新创建对象如下代码一样[code=java]public class TestIntegerCache
{
public static void main(String[] args)
{
//生成新的Integer对象
Integer in1 = new Integer(6);
//生成新的Integer对象,并缓存该对象
Integer in2 = Integer.valueOf(6);
//直接从缓存中取出Ineger对象
Integer in3 = Integer.valueOf(6);
//输出false
System.out.println(in1 == in2);
//输出true
System.out.println(in2 == in3);
}
}[/code]
[ 本帖最后由 詹季春 于 2011-07-25 01:56 编辑 ] |