首先得明白,数组在内存中是存放与对内存中的,那么任何一个引用(栈内存)指向它的话,都是通过地址值来表示的,所以是不能直接将数组值付给一个数组引用。你要让两个引用指向同一个对象的话,只能通过引用间的地址值传递(Stringl类和Integer类与其有区别,他所产生的最终对象是存放在方法区中的,可能会有多个不同的引用指向同一个字符串,可以不通过引用间值来传递:String str1 = "abc";String str2 = "abc";他们引用的地址是同一个),
即这样:int[] a1 = new int[]{1,2,3};int[] a2 = new int[]{1,2,3}; a1!=a2的,他们在堆内存中new了两个地址。
Integer类的数据装箱与拆箱是JDK1.5的新特性,其中对于对象所指值的范围在(-128~127)间,他们的引用地址是相同的:
Integer i1 = 127;Integer i2 = 127;i1==i2. 因为JVM默认的是该范围数字是常用的, 超出范围则返回false。 |