Java数组的初始化大小_对Java接口实现的建议

1 一维数组初始化

public class ArrayDemo1 { 

public static void main(String[] args) { 

// 格式一(动态初始化)
int[] arr1 = new int[3]; // 数组的长度(这里为3)必须指定
// 格式二(静态初始化)
int[] arr2 = new int[]{ 
1, 2, 3}; // 这里数组长度不能指定,花括号里面的元素个数就是数组长度
// 或者按照下面的简写形式
int[] arr3 = { 
1, 2, 3}; // 格式二的简写形式
}
}

内存图分析略。

2 二维数组初始化

public class ArrayDemo2 { 

public static void main(String[] args) { 

// 格式一(动态初始化)
/*int[][] arr = new int[3][2]; System.out.println(arr); // [[I@1b6d3586 System.out.println(arr[0]); // [I@4554617c System.out.println(arr[1]); // [I@74a14482 System.out.println(arr[2]); // [I@1540e19d System.out.println(arr[1][0]); // 0 System.out.println(arr[2][1]); // 0 System.out.println("------------------------"); arr[1][0] = 3; arr[2][1] = 4; System.out.println(arr); // [[I@1b6d3586 System.out.println(arr[0]); // [I@4554617c System.out.println(arr[1]); // [I@74a14482 System.out.println(arr[2]); // [I@1540e19d System.out.println(arr[1][0]); // 3 System.out.println(arr[2][1]); // 4*/
// 格式二(动态初始化)
/*int[][] arr = new int[3][]; System.out.println(arr); // [[I@1b6d3586 System.out.println(arr[0]); // null System.out.println(arr[1]); // null System.out.println(arr[2]); // null // 打印arr相同,都是地址;但是对于arr[0] arr[1] arr[2]结果都是null,因为列的维度没有指定,不知道如何分配内存。 // System.out.println(arr[0][0]); // NullPointerException System.out.println("------------------------"); // arr[1] = {1, 2, 3}; // 报错 arr[1] = new int[]{1, 2, 3}; arr[2] = new int[]{10, 20}; System.out.println(arr[0]); // null System.out.println(arr[1]); // [I@4554617c System.out.println(arr[2]); // [I@74a14482 System.out.println(arr[1][0]); // 1 System.out.println(arr[2][1]); // 20 // 总结:格式二需要new两次,并且Java中二维数组每行元素的个数可以不相同(和C/C++不同)。*/
// 格式三(静态初始化)
// int[][] arr = new int[][]{ 
{1, 2, 3}, {4, 5}, {6}}; // 此时行、列维度都不能指定
// int[][] arr = new int[2][]{ 
{1, 2, 3}, {4, 5}}; // 报错
// int[][] arr = new int[][3]{ 
{1, 2, 3}, {4, 5}}; // 报错
int[][] arr = { 
{ 
1, 2, 3}, { 
4, 5}, { 
6}}; // 格式三的简化形式
System.out.println(arr); // [[I@1b6d3586
System.out.println(arr[0]); // [I@4554617c
System.out.println(arr[1]); // [I@74a14482
System.out.println(arr[2]); // [I@1540e19d
System.out.println(arr[1][0]); // 4
// System.out.println(arr[2][1]); // ArrayIndexOutOfBoundsException
}
}

总结:数组初始化分为静态初始化和动态初始化,一维数组和二维数组的静态初始化类似;对于动态初始化,一维数组只有一种形式,且必须指定数组的长度,二维数组有两种形式,且必须指定数组的行,列可以不用指定(这种情况要new两次)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值