Integer aa = new Integer(1001);
Integer bb;
bb = aa;
bb=1002;
System.out.println(aa);
/* OutPut:
1001
*///:~
用Integer声明的也不是引用吗?java中具体哪些类型声明出来后不是引用而是对象?
其实调试一下问题就很清楚了:
bb = aa; //bb确实是引用,指向aa对象的引用
bb=1002; // 关键在这儿,这儿是一个赋值语句,其作用是使得bb指向了一个新的对象应用
如果不是执行赋值语句,而是调用其他的方法就可以知道bb确实是aa的引用。
Person pa = new Person("I'm a.");
Person pb = pa;
pb.setName("I'm b now.");
System.out.println("pa:" + pa.getName());
Output:pa:I'm b now.
可以这样理解,目前有1001和1002
开始时 aa指向1001
bb指向aa,也就是指向1001
然后bb指向1002
但是aa的指向一直没变还是1001
新人一个,有问题勿喷欢迎补充
可以去看下Integer的缓存策略,-128~127属于缓存值,超出范围值就可以当对象引用理解了