int[][][] arr = {{{1,2}, {3,4}}, {{5,6}, {7,8}}};
或通过arr[i][j][k] = value
动态赋值。声明与初始化三维数组
语法:
数据类型[][][] 数组名 = new 数据类型[长度1][长度2][长度3];
- 长度1:第一维(外层)数组大小
- 长度2:第二维(中层)数组大小
- 长度3:第三维(内层)数组大小
示例: 创建一个 2×3×4
的整型数组
int[][][] arr = new int[2][3][4];
赋值方法
(1) 嵌套循环逐元素赋值
for (int i = 0; i < arr.length; i++) { // 第一维 for (int j = 0; j < arr[i].length; j++) { // 第二维 for (int k = 0; k < arr[i][j].length; k++) { // 第三维 arr[i][j][k] = i + j + k; // 自定义赋值逻辑 } } }
(2) 直接初始化(静态赋值)
在声明时直接赋值:
int[][][] arr = { { {1, 2}, {3, 4} }, // 第一维的第一个元素 { {5, 6}, {7, 8} }, // 第一维的第二个元素 { {9, 10}, {11, 12} } // 第一维的第三个元素 };
- 此数组结构为
3×2×2
(3个二维数组 → 每个二维数组含2个一维数组 → 每个一维数组含2个元素)。
不规则三维数组赋值
Java支持各维度长度不同的“不规则数组”:
int[][][] irregularArr = new int[3][][]; // 仅指定第一维长度 // 手动初始化第二维和第三维 irregularArr[0] = new int[2][]; // 第一维第一个元素有2个二维数组 irregularArr[0][0] = new int[]{1, 2}; // 第三维赋值 irregularArr[0][1] = new int[]{3, 4, 5}; // 第三维长度可不同 irregularArr[1] = new int[][]{ {6}, {7, 8}, {9} }; // 直接赋值 irregularArr[2] = new int[1][3]; // 第二维长度为1,第三维长度为3 irregularArr[2][0] = new int[]{10, 11, 12};
注意事项
- 索引范围:访问
arr[i][j][k]
时,需确保i
、j
、k
在各自维度长度范围内,否则抛出ArrayIndexOutOfBoundsException
。 - 内存占用:三维数组可能消耗大量内存,需合理设计维度大小。
- 空指针风险:若未初始化第二、三维直接赋值(如
new int[3][][]
后未初始化irregularArr[0]
),会导致NullPointerException
。
完整示例代码
public class ThreeDArrayExample { public static void main(String[] args) { // 规则数组赋值 int[][][] cube = new int[2][3][4]; for (int i = 0; i < cube.length; i++) { for (int j = 0; j < cube[i].length; j++) { for (int k = 0; k < cube[i][j].length; k++) { cube[i][j][k] = (i * 100) + (j * 10) + k; // 生成如011,112的值 } } } // 不规则数组赋值 int[][][] irregular = { { {1, 2}, {3} }, { {4, 5, 6}, {7}, {8, 9} } }; // 打印验证 System.out.println("规则数组:"); System.out.println(cube[1][2][3]); // 输出123 System.out.println("不规则数组:"); System.out.println(irregular[1][0][2]); // 输出6 } }
引用说明
通过以上方法,您可灵活操作三维数组,满足从科学计算到图形处理等场景的需求,建议在复杂场景下封装工具类以提升代码可维护性。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/31538.html