我知道在 c++ 中你可以做指向包装器 Integer 对象的指针,但似乎在 java 中,包装器类不会反映跨多个引用的变化,因为它只是将值复制到新的包装器中。喜欢:
Integer s = 0;
Integer j = s;
s = 2;
我的意思是我可能会使用一些类或数据结构,但我担心它会占用很多空间,因为会有很多这样的对象。关于一个对象的节省空间实现的任何想法,该对象的动态整数在我的程序中被各种名称引用。我应该只实现一个像 struct(c++) 这样的类来存储它吗?
您需要了解自动装箱,以了解为什么您提供的代码没有按照您的想法进行操作。
Integer s = 0;
Integer j = s;
s = 2;
与以下相同:
Integer s = Integer.valueOf(0);
Integer j = s;
s = Integer.valueOf(2);
你没有改变s
的值,而是将其指向不同的对象。
有没有办法让一个值不断变化的整数对象
不。 Integer
是不可变的。
被多个名称引用?
鉴于上述情况无关紧要。
正如其他人所指出的,Integer
类是不可变的。Apache Commons Lang 库中的MutableInt
类将执行您想要的操作:
MutableInt s = new MutableInt(0);
MutableInt j = s;
s.setValue(5);
System.out.println(s.intValue()); // 5
System.out.println(j.intValue()); // 5