You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中仅指定第一维的多维数组是否可用?能否调整其大小?

Java 多维数组常见问题解答

仅指定第一维长度的二维数组是否有实际使用价值

这种写法是合法且有明确使用场景的,它是Java实现**锯齿数组(也叫不规则数组)**的标准方式,适合第二维各子数组长度不一致的场景,比如存储不同长度的用户输入、每个学生不同数量的选课记录等,能避免固定第二维长度带来的空间浪费。
刚创建完的String[][] somearray = new String[2][];确实不能直接访问somearray[0][0]这类第二维元素,因为此时somearray的两个一级元素somearray[0]和somearray[1]都是null,还没有指向实际的一维数组对象。你需要先为一级元素赋值后才能正常访问第二维,示例如下:

// 为两个一级元素分别赋值不同长度的字符串数组
somearray[0] = new String[]{"苹果", "香蕉", "橙子"};
somearray[1] = new String[]{"小米", "华为"};
// 此时可以正常读取第二维元素
System.out.println(somearray[0][1]); // 输出 香蕉

Java数组能否直接调整大小

Java中的数组本质是定长结构,一旦完成实例化,长度就无法动态修改,不管是一维数组还是多维数组都遵循这个规则,没有任何语法支持直接修改已有数组的长度。

赋值新数组是不是唯一的调整方式

你提到的somearray = new String[2][2];本质上不是调整原有数组的大小,而是把somearray这个引用变量指向了一个全新的二维数组对象,原来的new String[2][]对象如果没有其他引用关联,后续会被JVM垃圾回收。
这种全量赋值的方式也不是唯一的处理方式,如果你需要的是不规则的子数组长度,完全可以单独给每个一级元素赋值对应长度的一维数组,不需要重新创建整个二维数组,灵活度更高。


内容的提问来源于stack exchange,提问作者Pieter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:06:03