如何将数组传递给构造函数?

5

我想学习Java,但是在将数组传递给构造函数时遇到了问题。

例如:

应用程序类:

byte[][] array = new byte[5][5]; targetClass target = new targetClass(array);

目标类:

public class targetClass {
    /* Attributes */
    private byte[][] array = new byte[5][5];

    /* Constructor */
    public targetClass (byte[][] array) {
        this.array[5][5] = array[5][5];
    }

}

如果您能向我展示如何做到这一点,我将不胜感激。


由于您正在学习Java,类名应始终以大写字母开头。 - Bhushan
6个回答

13

首先,Java中的类名通常以大写字母开头。现在,针对你遇到的问题,应该是:

public class TargetClass { /* Attributes */ 
    private byte[][] array;

    /* Constructor */
    public TargetClass (byte[][] array) {
        this.array = array;
    }
}

1
@BlagovestBalchev 那就是最棒的部分!:) - MByD

2
您不需要在类声明时初始化数组。它可以设置为传递的数组引用。例如:
public class targetClass { 
    /* Attributes */ 
    private byte[][] array = null; 

    /* Constructor */ 
    public targetClass (byte[][] array) { 
        this.array = array; 
    } 

} 

1
在您的应用程序类中,以下内容应该可以正常工作:
byte[][] array = new byte[5][5];
TargetClass target = new TargetClass(array); // Not array[5][5]

此外,针对您的目标类,以下代码应该可以正常工作:
public class TargetClass {
    /* Attributes */
    private byte[][] array; // No need to explicitly define array

    /* Constructor */
    public TargetClass (byte[][] array) {
        this.array = array; // Not array[5][5]
    }
}

如前所述,类名通常是大写的,因此我已经将您的类名改为大写。


1
public class targetClass {
    /* Attributes */
    private byte[][] array = null;

    /* Constructor */
    public targetClass (byte[][] array) {
        this.array = array;
    }

}

然后像这样调用它

byte[][] array = new byte[5][5]; 
targetClass target = new targetClass(array);

0
我假设你想要将私有数组分配给传入的数组,而不是尝试从传入的数组中选择5,5元素。
在构造函数内部,语法应该是:
this.array = array;
在应用程序中,它应该是
targetClass target = new targetClass(array);

0

要将数组传递给构造函数,我们需要在创建对象时将数组变量传递给构造函数。

那么我们如何将该数组存储在我们的类中以进行进一步操作呢?

  • 我们需要一个实例变量来存储它,在我们的情况下可以是private byte[][] array;

  • 我们不需要为它分配内存,因为那样会浪费,因为后来它将指向内存中原始数组的堆位置。

  • 我们可以使用各种技术复制数组

      public class targetClass {
      /* 属性 */
      private byte[][] array = new byte[5][5];
    
      /* 构造函数 */
      public targetClass (byte[][] array) {
          this.array  = array;
          this.array = array.clone();//如果你想在堆上有单独的对象实例
      }
    }
    byte[][] data = new byte[10][10];
    targetClass t1 = new targetClass(data);
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接