Java 数组面试题

1. 如何声明一个数组?

声明数组时,需要指定元素类型和数组名称,并用方括号[]标记数组。

int[] myArray; // 声明一个整型数组

2. 如何初始化一个数组?

可以使用数组初始化器{}new关键字初始化数组。

int[] myArray = {1, 2, 3}; // 静态初始化
int[] myArray = new int[3]; // 动态初始化

3. Java中数组的长度是什么?

数组的长度是一个整数,表示数组中可以存储的元素数量,可以通过length属性访问。

4. 如何获取数组的长度?

使用length属性获取数组的长度。

int[] myArray = {1, 2, 3};
int length = myArray.length;

5. 如何遍历数组?

可以使用传统的for循环或增强的for循环(foreach循环)遍历数组。

int[] myArray = {1, 2, 3};
for (int i = 0; i < myArray.length; i++) {
    System.out.println(myArray[i]);
}

for (int value : myArray) {
    System.out.println(value);
}

6. 如何复制数组?

可以使用System.arraycopy()方法或通过循环手动复制数组。

int[] original = {1, 2, 3};
int[] copy = new int[original.length];
System.arraycopy(original, 0, copy, 0, original.length);

7. 如何多维数组?

多维数组可以看作是数组的数组,例如二维数组可以看作是数组的数组。

int[][] twoDimArray = new int[3][2]; // 二维数组

8. 如何初始化多维数组?

可以同时指定所有维度的大小,或者只指定第一维度的大小,其余维度的大小在声明时可以省略。

int[][] twoDimArray = new int[3][];
twoDimArray[0] = new int[2];
twoDimArray[1] = new int[2];
twoDimArray[2] = new int[2];

9. 如何查找数组中的最大值或最小值?

遍历数组,使用条件语句比较元素值来查找最大值或最小值。

int[] myArray = {1, 3, 5, 7, 9};
int max = myArray[0];
for (int i = 1; i < myArray.length; i++) {
    if (myArray[i] > max) {
        max = myArray[i];
    }
}

10. 如何对数组进行排序?

可以使用Arrays.sort()方法对数组进行排序。

int[] myArray = {9, 7, 5, 3, 1};
Arrays.sort(myArray);

11. 如何判断数组是否包含某个元素?

可以使用contains()方法判断数组是否包含某个元素,但需要将数组转换为列表。

int[] myArray = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(myArray);
boolean contains = list.contains(3);

12. 如何在数组中查找元素的索引?

可以使用indexOf()方法查找元素的索引,但同样需要将数组转换为列表。

int[] myArray = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(myArray);
int index = list.indexOf(3);

13. 如何反转数组?

可以使用Collections.reverse()方法反转数组,但需要将数组转换为列表。

int[] myArray = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(myArray);
Collections.reverse(list);

14. 如何将数组转换为字符串?

可以使用Arrays.toString()方法将数组转换为字符串。

int[] myArray = {1, 2, 3};
String arrayString = Arrays.toString(myArray);

15. 如何填充数组?

可以使用Arrays.fill()方法填充数组。

int[] myArray = new int[5];
Arrays.fill(myArray, 1);

16. 如何复制数组的一部分?

可以使用System.arraycopy()方法复制数组的一部分。

int[] original = {1, 2, 3, 4, 5};
int[] part = new int[3];
System.arraycopy(original, 1, part, 0, 3);

17. 如何将一个数组与其他数组合并?

可以使用System.arraycopy()方法或循环将一个数组的内容复制到另一个数组的末尾。

int[] first = {1, 2};
int[] second = {3, 4};
int[] combined = new int[first.length + second.length];
System.arraycopy(first, 0, combined, 0, first.length);
System.arraycopy(second, 0, combined, first.length, second.length);

18. 如何检查数组是否为null或空?

可以检查数组是否为null,以及数组的长度是否为0。

int[] myArray = null;
if (myArray != null && myArray.length > 0) {
    // 数组不为null且不为空
}

19. 如何查找数组中特定元素的出现次数?

可以遍历数组,使用条件语句计数特定元素的出现次数。

int[] myArray = {1, 2, 2, 4, 2, 5};
int count = 0;
for (int value : myArray) {
    if (value == 2) {
        count++;
    }
}

20. 如何对数组进行二分查找?

可以使用Arrays.binarySearch()方法对已排序的数组进行二分查找。

int[] myArray = {1, 3, 5, 7, 9};
Arrays.sort(myArray);
int index = Arrays.binarySearch(myArray, 5);

21. 如何将List转换为数组?

可以使用Arrays.asList()方法将List转换为数组。

List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));
Integer[] array = list.toArray(new Integer[0]);

22. 如何将数组转换为List?

可以使用Arrays.asList()方法将数组转换为List。

int[] myArray = {1, 2, 3};
List<Integer> list = Arrays.asList(myArray);

23. 如何判断两个数组是否相等?

可以使用Arrays.equals()方法判断两个数组是否相等。

int[] array1 = {1, 2, 3};
int[] array2 = {1, 2, 3};
boolean isEqual = Arrays.equals(array1, array2);

24. 如何将一个基本类型数组转换为包装类数组?

可以使用Arrays.stream()方法和map()方法将基本类型数组转换为包装类数组。

int[] intArray = {1, 2, 3};
Integer[] wrapperArray = Arrays.stream(intArray).boxed().toArray(Integer[]::new);

25. 如何将一个包装类数组转换为基本类型数组?

可以使用StreammapToInt()方法将包装类数组转换为基本类型数组。

Integer[] wrapperArray = {1, 2, 3};
int[] intArray = Arrays.stream(wrapperArray).mapToInt(Integer::intValue).toArray();