我正在尝试学习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];
}
}
如果你能告诉我如何做到这一点,我将不胜感激。
答案 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);