Java 如何初始化二维数组?

Java 如何初始化二维数组?,java,arrays,initialization,Java,Arrays,Initialization,如何初始化p[].x和p[]].x?如果是多级,则需要手动初始化整个阵列和所有级别: public class example { static class point { int x; int y; } static void main(String args[]) { point p = new point(); point[] p1 = new point[5]; po

如何初始化p[].x和p[]].x?

如果是多级,则需要手动初始化整个阵列和所有级别:

public class example
{
    static class point
    {
        int x;
        int y;
    }

    static void main(String args[])
    {
        point p = new point();
        point[] p1 = new point[5];
        point[][] p2 = new point[5][5];

        p.x = 5; //No problem
        p[0].x = 5; //When I run the program, it gives error:java.lang.NullPointerException
        p[0][0].x = 5; //When I run the program, it gives error:java.lang.NullPointerException
    }
点[]p1=新点[5];
//现在整个数组只包含空元素
对于(int i=0;i<5;i++)
p1[i]=新点();
p1[0]。x=1;//会没事的
它是
对象

 point p = new point();
这个
对象是一个1D数组。它保存
对象引用。您应该创建一个
对象,并像-

point[] p1 = new point[5];
for(int i=0;i<5;i++)
p1[i]=新点();
p1[0].x=1;
对于二维阵列-

for (int i = 0; i < 5; i++)
  p1[i] = new point();

p1[0].x = 1;
点[][]p2=新点[5][5];
对于(int i=0;i<5;i++){
对于(int j=0;j<5;j++)
p1[i][j]=新点();
}
p[0][0].x=5;

当您构造一个对象数组时,数组本身被构造,但单个元素被初始化为null。因此,假设
Point()
是您想要的构造函数

point[][] p2 = new point[5][5];

for (int i = 0; i < 5; i++){
  for (int j = 0; j < 5; j++)
      p1[i][j] = new point();
}
p[0][0].x = 5;
点[]p1=新点[5];
对于(int i=0;i
这样想吧;当您执行
新建点[5]
(您应该遵循编码标准,并使用大写字母btw命名类)时,您将得到一个数组,其中每个元素都是该类型的默认值(在本例中为null)。数组已初始化,但如果希望初始化数组的各个元素,也必须在初始行中进行初始化,如下所示:

Point[] p1 = new Point[5];
for (int i = 0; i < p1.length; ++i) {
  p1[i] = new Point();
}
(上述方法将创建一个数组,其中每个元素都已初始化,其最小大小将容纳这些元素,在本例中为2。)

或者通过在阵列中循环并手动添加点:

point[] p1 = new point[] { new point(), new point() };

point[]p2=新点[5][5];
对于(int i=0;i
请始终对类名使用CamelCase。数组元素初始化为给定元素类型的默认值。对象的默认值是什么?为什么这会导致空点异常?-1,因为1、2和42维数组之间没有区别。作为一名开发人员,隔离[实际]问题至关重要。搜索:
[java][array]NullPointerException
会导致许多重复的可能重复的Yes,您必须这样做。为此,请使用双for循环。在维度数量上没有真正的区别,每个元素都存在,但在创建时都持有空引用。
point[] p1 = new point[] { new point(), new point() };
point[] p1 = new point[5];
for (int i = 0; i < p1.length; i++) {
   point[i] = new point();
}
point[] p2 = new point[][] {
    new point[] { new point(), new point() }
    new point[] { new point(), new point() }
};
point[] p2 = new point[5][5];
for (int i = 0; i < p2.length; i++) {
    for (int j = 0; j < p2[i].length; j++) {
        p2[i][j] = new point();
    }
}