会在 string 中创建一个新对象i++,还是会增加被引用的对象?
public static void main(String[] args) {
Integer i = 8;
inc(i);
System.out.println(i);
}
public static void inc(Integer i) {
i++;
System.out.println(i);
}
更准确地说,不是这样,我确信旧对象将保持不变,但是会发生什么i++?原来,会创建一个新对象?
在这种情况下,增量等价于赋值:
, IE。该值将被解包,将添加一个,结果值将被打包回 i。
一步步:
该类
Integer是不可变的,不能自行递增。规范中描述了增量行为(15.14.2. Postfix Increment Operator ++)
那些。如果变量的类型需要,运算符会增加装箱的值。
我将补充@defaultlocale的答案,实际上从对象的角度来看,增量操作将如下所示:
也就是说,实际上会创建一个新对象,
Integer所以iin的值main()不会改变。编译器收集这样一个字节码