首页 > 解决方案 > java中的数组是如何工作的,类的数据类型是什么意思?

问题描述

如果我们想将一个元素添加到一个预先存在的数组的末尾,请你向我解释一下它是如何正确完成的。

我很难理解 Littler 类,特别是 add 方法。

我知道“Puppy[] temp = new Puppy[this.puppies.length + 1];”

我们有一个新数组,它的长度比 puppies 数组(实例变量)大一。“temp[i] = this.puppies[i];” 根据索引将 puppies 数组中的所有元素分配给 temp。

我的困惑在于线路: temp[this.puppies.length] =puppy;

1.) 这里到底发生了什么?

在我看来,我认为我们正在将 this.puppies.length 的最后一个索引位置重新分配给 puppy 参数。

2.)将那个+1(大一号)制作出来,临时数组的额外索引就行了

“小狗 [] 温度 = 新小狗 [this.puppies.length + 1];”

保持空白?

3.) 是否“this.puppies = temp;” 代表浅拷贝?

4.) 制作更大的数组并添加对象的过程称为什么,我们是否每次都必须这样做(创建一个更大的数组)。

5.)如果我们不这样做会发生什么,是否存在我们不必做大或需要临时数组的情况?(我只是对我们为什么需要它感到困惑)。

6.) 类类型的对象是什么意思?"private Puppy[] 小狗;" 是什么意思?究竟是什么意思?

7.) 请你帮我破译这段代码,以便我理解。特别是假设 this.values.length 是一个大小为 5 个元素(索引 0-4)的数组。

//Class where add actions taking place
public class Litter {
    private Puppy[] puppies;

    public Litter() {
        this.puppies = new Puppy[0];
    }
    public void add(Puppy puppy) {
        Puppy[] temp = new Puppy[this.puppies.length + 1];
        for (int i = 0; i < puppies.length; i++) {
            temp[i] = this.puppies[i];
        }
        temp[this.puppies.length] = puppy;
        this.puppies = temp; 
    }
}

标签: javaarraysobjecttypes

解决方案


首先也是最重要的 - 数组索引是基于 0 的。如果您有一个大小为 10 的数组,则有效的数组索引是从 0 到 9。

temp[this.puppies.length] = 小狗

这会将某个对象 ( )的引用存储为数组的最后一个元素。(因为 的长度是)Puppypuppytemppuppies.length + 1

那个+1(大一号)会不会,行[..]上的临时数组的额外索引保持空白

不,上述分配是对最后一个元素进行的,因为数组使用基于 0 的索引。

是否“this.puppies = temp;” 代表浅拷贝?

没有创建新对象。赋值后,两个变量this.puppies和 Puppy 数组 ( temp) 都指向堆上的同一个对象。

这个制作更大的数组并添加对象的过程叫什么,我们是否每次都必须这样做(创建一个更大的数组)。

对此没有通用名称。在这里完成向数组添加一个新元素。通常,为了避免这种情况(通常),将创建一个大小为两倍的新数组。

如果我们不这样做会发生什么,是否存在我们不必做大或需要临时数组的情况?(我只是对我们为什么需要它感到困惑)。

由于数组无法调整大小,因此如果要添加新对象,则必须创建更大的数组。

类类型的对象是什么意思?"private Puppy[] 小狗;" 是什么意思?究竟是什么意思? puppies是一个包含对象数组Puppy对象。

请你能帮我破译这段代码,以便我理解。特别是假设 this.values.length 是一个大小为 5 个元素(索引 0-4)的数组。

这个方法是在现有的 Puppy 上添加一个新的 Puppy。由于数组不能动态调整大小,它会创建一个新数组(temp)并添加所有现有的小狗。为了容纳新的小狗,创建的数组大小比现有小狗大一。然后,它将传递的 Puppy 实例添加为数组的最后一个元素。最后一行this.puppies = temp将创建的数组的引用分配给指向小狗数组的实例变量。


推荐阅读