Java中Integer问题,final value怎么回事?
刚开始学习java,晚上遇到一个棘手的问题!直接看代码吧
下面是一段从jdk1.7中拷贝的Integer的代码段
private final int value;
public Integer(int value) {
this.value = value;
}
这里的意思就是value是常量,然后下面是一个构造器,然后我的测试如下:
Integer in = 1000;//问题1
Integer in1 = in; //问题2
System.out.println( "first:"+in.intValue() + " "+in1.intValue());
in1 = 1020;//问题3
System.out.println( "second:"+in.intValue() + " " + in1.intValue() );
问题列出如下:
问题1:简单的浏览了一下Integer.java,结合书上的介绍,当赋值在-128-127之间时,用缓存值(在方法valueof里面),那么这行代码的调用顺序是什么?不是直接调用构造器?
问题2:同样这里的调用顺序有是什么?
问题3:这个比较费解,上述value明明就是final,这里怎么就变了呢?难道是赋值改变导致创建了一个新的对象?