2D数组大小更改错误Java

2D数组大小更改错误Java,java,arrays,dynamic,size,Java,Arrays,Dynamic,Size,我试图使用带有导入java.util.Arrays的Arrays.copyOf来调整数组的大小,但出于某种原因,即使控制台输出的数组长度是4,就像我尝试为数组第4行中的任何内容赋值时所应该的那样,它也会在尝试执行的行上给我一个nullPointerException为第4行中的内容赋值。谁能给我解释一下吗 import java.util.Arrays; import static java.lang.System.out; public class Main { static int

我试图使用带有导入java.util.Arrays的Arrays.copyOf来调整数组的大小,但出于某种原因,即使控制台输出的数组长度是4,就像我尝试为数组第4行中的任何内容赋值时所应该的那样,它也会在尝试执行的行上给我一个nullPointerException为第4行中的内容赋值。谁能给我解释一下吗

import java.util.Arrays;
import static java.lang.System.out;

public class Main {
    static int TTT[][] = new int[3][3];

    public static void main(String[] args) {
        TTT = Arrays.copyOf(TTT, 4);
        out.print(TTT.length);
        TTT[3][0] = 2;
    }
}
这给了我一个输出:

4Exception in thread "main" java.lang.NullPointerException
    at Main.main(Main.java:13)
有人知道为什么会这样吗。还有一点需要注意的是,有没有更好的方法可以让我制作一个可以改变大小的数组?如果是这样,你能给我一些示例代码请

来自:

复制指定的数组,截断或填充空值(如有必要),使副本具有指定的长度。对于副本中有效但不是原始索引的任何索引,副本将包含null。当且仅当指定的长度大于原始数组的长度时,此类索引才会存在。生成的数组与原始数组的类完全相同

发生的情况是数组大小增加了,因此在
TTT[3]
位置创建了对
int[3]
的新引用,并按照文档中的说明使用
null
对其进行初始化。数组具有基元类型这一事实并不意味着它应该自己初始化内部数组

尝试:

TTT = Arrays.copyOf(TTT, 4);
TTT[3] = new int[3];

哪一条是13号线?我只看到12
out.print(TTT.length)
系统输出打印(TTT.长度)
out.print(TTT.length)
很好,因为他正在导入特定的内部引用。至于您的旁注,如果您想要一个类似数组的可调整大小的数据结构,我建议在java.util包中使用ArrayList。您可以在helpfulIts第13行找到文档,因为有其他行对我试图解决的问题没有任何影响,它们都在运行。