如何初始化大小为n的空Java int数组?实现仅返回有效元素的数组
Java数组相关问题解答
嘿,这两个Java数组的问题我熟,给你一步步讲清楚~
问题1:如何初始化一个大小为n的空Java int数组?
在Java里,初始化指定大小的int数组很直接,代码如下:
int[] emptyArr = new int[n];
这里要注意:Java的基本类型数组(比如int)初始化后,每个元素会被自动赋予默认值0——因为int是值类型,不存在真正意义上的“空”元素。如果你的“空数组”指的是长度为0的数组,那可以写new int[0],不过你明确要求大小为n,上面的写法就完全符合需求啦。
问题2:初始化最大容量为n的数组,添加3个元素后返回仅包含这3个元素的数组(不使用ArrayList)
首先得明确Java数组的关键特点:数组的长度是固定不变的,一旦创建就没法修改。所以如果你一开始创建了长度为n的数组,未赋值的位置会默认填充0,直接返回的话肯定会带那些0。
要实现你的需求,思路很简单:最后返回时,新建一个刚好能装下3个元素的数组,把原数组里的有效元素复制进去就行。给你写个实用的代码示例:
public static int[] getFilledArray(int n) { // 初始化最大容量为n的数组 int[] tempArray = new int[n]; // 添加3个示例元素(你可以换成自己需要的任意值) tempArray[0] = 1; tempArray[1] = 2; tempArray[2] = 3; // 方式1:用System.arraycopy复制有效元素,性能优异 int[] resultArray = new int[3]; System.arraycopy(tempArray, 0, resultArray, 0, 3); // 方式2:用Arrays.copyOf,代码更简洁(需导入java.util.Arrays) // int[] resultArray = Arrays.copyOf(tempArray, 3); return resultArray; }
这样返回的resultArray长度就是3,里面只有你添加的3个元素,不会带后面的默认0。
如果你不想一开始就创建大数组,也可以维护一个计数器动态扩容,但你要求初始化最大容量为n,所以先建n的数组再截断的方式最直接高效。
内容的提问来源于stack exchange,提问作者Mahith Bhima
相关产品推荐
相关产品推荐

