class A{
int i=0;
}public class Test2 { private static final int i=0;
private static final Integer integer= new Integer("1");
private static final A a=new A();
private static final String string="a"; public static void main(String[] args) {
a.i++;
//string="string"; 报错 因为是final的 所以不能让它重新指向别的对象
//i++;报错 说integer是final的
//integer++; 报错了 和上面一样
//可是integer 明明是包装器类型啊 难道说integer++ 让它重新指向了一个新的 Integer对象?
//我在java编程思想里 看到 作者说
//final 修饰的 int 不可以改变值 但是 换成Integer 其值 就是可以改变的
// 不知道是不是 jdk版本的问题
}
}
int i=0;
}public class Test2 { private static final int i=0;
private static final Integer integer= new Integer("1");
private static final A a=new A();
private static final String string="a"; public static void main(String[] args) {
a.i++;
//string="string"; 报错 因为是final的 所以不能让它重新指向别的对象
//i++;报错 说integer是final的
//integer++; 报错了 和上面一样
//可是integer 明明是包装器类型啊 难道说integer++ 让它重新指向了一个新的 Integer对象?
//我在java编程思想里 看到 作者说
//final 修饰的 int 不可以改变值 但是 换成Integer 其值 就是可以改变的
// 不知道是不是 jdk版本的问题
}
}
integer ++ 相当于 integer = integer + 1 ;就相当于引用指用一个新的Integer对象
final修饰的引用类型是不允许重新指向别的对象
我只是奇怪 Integer 是对象类型 integer++ 居然让它重新指向了一个对象
就和a.i++ 一样才对嘛难道 java编程思想的作者 自己都没有试过 就乱说?
一样吗????
i是A类中的一个属性,a.i++和integer++不一样,
首先final是终态的意思,只能赋值一次,a.i++只是改变A类中的属性i的值,integer势必会造成重新赋值、、
而不是改变 integer当中的 int 属性?