误解了Java中的对象实例化

时间:2017-05-29 12:50:05

标签: java arrays reference instantiation

我有以下代码段用于基元数组实例化

int[] a = new int[] {10, 20, 30}

是否可以对任何对象阵列实例化执行相同的操作? 像...这样的东西。

 public class MyObject {
     int a;
     char b;
 }

然后:

 public class Main(){
     public static void main(String[] args){
         MyObject[] = new MyObject[] { {10, 'a'}, {20, 'b'}}
     }
 }

4 个答案:

答案 0 :(得分:6)

不含蓄。您必须使用构造函数来初始化每个对象。这是一个例子:

public class Example {

    static class MyObject {
        int a;
        char b;

        public MyObject(int a, char b) {
            this.a = a;
            this.b = b;
        }
    }

    public static void main(String[] args) {
        MyObject[] objs = new MyObject[] {new MyObject(10, 'a'), new MyObject (20, 'b')};
    }
}

答案 1 :(得分:3)

您需要在MyObject类中编写相应的构造函数(它需要intchar个参数并初始化成员a和{{1然后使用:

初始化数组
b

答案 2 :(得分:2)

您必须在类中声明一个构造函数。

public class MyObject {
   int a;
   char b;
   MyObject(int a, char b){
    this.a = a;
    this.b = b;
   }
}

之后你可以像这样初始化数组

MyObject[] somedamn = new MyObject[] { new MyObject(10,'a'), new MyObject(20,'b')};

答案 3 :(得分:0)

MyObject课程中创建一个构造函数:

public MyObject(int x, char c) {
    // comment: set them equal to the variables you put up in your MyObject class already
}

然后您可以在Main班级中创建一个对象:

MyObject object1 = new MyObject(10, 'a');

然后将object1放入数组:array[0] = object1

或者您可以将new MyObject(10, 'a')直接存储到数组中 - 但如果您不熟悉它可能会有点难以理解。