|
1
2
您遇到的主要问题是易变性和引用。 对象变量有一个引用作为其值,然后根据需要取消引用。赋值运算符更改引用,而不是其基础值。Java双包装器类是不可变的,因此不能更改它的值。
苹果/桔子指向的对象的值不加3,而是创建一个新的双对象,其值3大于苹果/桔子。然后,苹果/桔子被分配到各自对象的引用。您的列表仍然具有对旧对象的引用。 正如Martn Zaragoza建议的那样,您可以创建一个包装类,它是一个非常基本的类,具有一个公共成员,并且只有一个构造函数,如下所示:
然后可以将苹果和桔子指定为可变的双值,并更改apples.value和oranges.value字段。 您也可以使用原子参考,正如下面评论中stephane k.建议的那样。
然后:
输出:
如果更改基础对象,而不是将变量重新分配给新对象,则引用该对象的代码的其他区域将看到更改。
关于减法的问题,您试图为一个值赋值。get(1)返回一个double,所以你基本上是说
这将把减法的值赋给列表中索引1处的项。 |
|
2
1
理解的例子
输出
|