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

时间:2011-12-11 00:18:29

标签: java arrays constructor

我正在尝试学习Java,但是我将数组传递给构造函数时遇到了问题。 例如:

申请类: byte[][] array = new byte[5][5]; targetClass target = new targetClass(array[5][5]);

目标类:

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

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

}

如果你能告诉我如何做到这一点,我将不胜感激。

6 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:2)

在声明时,您不需要在类中初始化数组。它可以设置为过去的数组引用。例如,

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

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

} 

答案 2 :(得分: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]
    }
}

如上所述,类名通常是大写的,所以这就是我对你的类名所做的。

答案 3 :(得分: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);

答案 4 :(得分:0)

我将假设您正在尝试将私有数组分配给传入的数组,而不是尝试从传入的数组中选择5,5元素。

在构造函数中,语法应为:

  

this.array = array;

在应用程序中,它应该是

  

targetClass target = new targetClass(array);

答案 5 :(得分:0)

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

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

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

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

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

      public class targetClass {
      /* Attributes */
      private byte[][] array = new byte[5][5];
    
      /* Constructor */
      public targetClass (byte[][] array) {
          this.array  = array;
          this.array = array.clone();//If you want separate object instance on heap
      }
    }
    byte[][] data = new byte[10][10];
    targetClass t1 = new targetClass(data);