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. 如何将一个包装类数组转换为基本类型数组?
可以使用Stream
的mapToInt()
方法将包装类数组转换为基本类型数组。
Integer[] wrapperArray = {1, 2, 3};
int[] intArray = Arrays.stream(wrapperArray).mapToInt(Integer::intValue).toArray();