讨论/技术交流/向大佬提问 Integer++ 是如何实现的?/
向大佬提问 Integer++ 是如何实现的?

我们都知道 Integer 内部 value 是用 final 修饰的当我们做 Integer++ 操作时,等同于 newInteger = new Integer(integer.getvalue)+ 1;integer = new Integer;(个人理解,如有错误请指正)修改了引用指向的对象。
这样会造成我们无法类似于 C++ 中指针对 int 变量的操作,所以我想实现一个类,解决这个问题,实现方法也很简单将 final 去掉就可以了,但是要如何实现++操作呢?

共 6 个回复

javap 命令,字节码了解一下。. class文件里就能看到是怎么回事的。

++操作对于Java编译器而言只能识别基本数据类型

Integer++是不存在的,之所以给你这种错觉是因为Java编译器的语法糖,就如你上述步骤,但是没有最后一步转为Integer,除非你讲++Integer赋值给Integer。总而言之,这是编译器的原因,Java编译器没有直接识别然后使用Integer++的操作,只会先转int再++

Integer实例是immutable对象,一旦创建无法修改 ,你的要求是无法满足的。你只能使用AtomicInteger,但这会增加程序开销。

参考一下 AtomicInteger 这个类

java没有操作符重载