提问人:The highlight 提问时间:6/26/2021 更新时间:6/29/2021 访问量:118
创建具有可变数据类型的数组
Creating an array with mutable data type
问:
**Initializing an array of NaturalNumbers with values 1 through 4**
当我调试时,我发现数组 = [5,5,5,5],我的目标是数组 = [1,2,3,4]。
NaturalNumber[] array = new NaturalNumber[4];
NaturalNumber count = new NaturalNumber2(1);
for (int i = 0; i < array.length; i++) {
array[i] = count;
count.increment();
这是可用于自然数的所有方法的链接。我只是不明白如何在不更改值的情况下创建所需的数组。count
答:
0赞
The highlight
6/26/2021
#1
NaturalNumber[] array = new NaturalNumber[4];
NaturalNumber count = new NaturalNumber2(0);
for (int i = 0; i < array.length; i++) {
count = new NaturalNumber2(i);
count.increment();
array[i] = count;
0赞
sanjeevRm
6/26/2021
#2
**Initializing an array of NaturalNumbers with values 1 through 4**
你也可以这样做
int[] numbers = IntStream.range(1, 5).toArray();
0赞
Alan
6/29/2021
#3
你得到了 5,5,5,5,5,因为你使用的是盒装非基元类型而不是基元。
因此,对对象的引用是指向对象的位置。当你把它放到数组中时,你把引用(四个副本)放在里面,它包含最后一个值。由于您在最后一次循环中执行增量作为最后一件事,因此它指向值 5(但不是值 5)。NaturalNumber count
count
如果你声明并使用,因为你不能调用一个基元,那么你会得到序列 1、2、3、4。运行时引擎会将每次的实际计数值放入数组中。int count
count++
.increment ()
评论