答:数组和集合的区别以下:java
int[] arr = new int[5] {1, 2, 3, 4, 5}; System.out.println(arr[4]);
答:程序编译报错,在 Java 中初始化数组时,若是直接给数组赋值,不能声明数组长度;若是声明了数组长度,则不能赋值给数组,不然编译器报错。数组
正确的写法以下:app
int[] arr = new int[]{1, 2, 3, 4, 5}; System.out.println(arr[4]);
输出的结果为:5,访问元素从 0 开始。this
public static void main(String[] args) { int[] arr = {2, 3, 4, 8}; change(arr); System.out.println(arr[2]); } private static void change(int[] arr) { for (int i = 0; i < arr.length; i++) { if (i % 2 == 0) { arr[i] *= i; } } }
答:输出的结果是 8。code
题目解析:在 Java 中数组本质是引用类型,所以在调用方法中修改数组,就是对原数组自己的修改。对象
int[] intArr = new int[3]; String[] StrArr = new String[3]; System.out.println(intArr[1]); System.out.println(StrArr[1]);
答:以上程序打印的结果是:0 和 null。排序
题目解析:new int[3] 至关于声明了数组的长度为 3,每一个元素初始化为 0,而 new String[3] 至关于声明了数组的长度为 3,每一个元素初始化为 null。字符串
答:数组转换字符串,有如下几种方式。编译器
方式一:遍历拼接,完整代码以下:源码
String[] arr = {"laowang", "stone", "wanglei"}; StringBuffer sb = new StringBuffer(); for (int i = 0; i < arr.length; i++) { sb.append(arr[i]); if (i != arr.length - 1) sb.append(","); } System.out.println(sb.toString());
方式二:Arrays.toString() 转换,完整代码以下:
String[] arr = {"laowang", "stone", "wanglei"}; String str2 = Arrays.toString(arr); System.out.println(str2);
方式三:StringUtils.join() 转换,完整代码以下:
String[] arr = {"laowang", "stone", "wanglei"}; String str3 = StringUtils.join(Arrays.asList(arr), ","); // 使用英文逗号分隔 System.out.println(str3);
答:常见的数组遍历有如下三种方式。
Integer[] arr = {2, 3, 6, 7, 9}; Arrays._asList_(arr).forEach(x -> System._out_.println(x));
String[] strArr = {"dog", "cat", "pig", "bird"}; String[] strArr2 = {"dog", "cat", "pig", "bird"}; System.out.println(Arrays.equals(strArr, strArr2)); System.out.println(strArr.equals(strArr2)); System.out.println(strArr == strArr2);
答:上面代码执行的结果,分别为:true、false、false。
题目解析:strArr == strArr2 为引用比较,所以结果必定是 false,而数组自己的比较也就是 strArr.equals(strArr2) 为 false 的缘由是由于数组没有重写 equals 方法,所以也是引用比较。数组 equals 源码实现以下:
public boolean equals(Object obj) { return (this == obj); }
而 Arrays.equals 的结果之因此是 true 是由于 Arrays.equals 重写了 equals 方法。源代码实现以下:
public static boolean equals(Object[] a, Object[] a2) { if (a==a2) return true; if (a==null || a2==null) return false; int length = a.length; if (a2.length != length) return false; for (int i=0; i<length; i++) { Object o1 = a[i]; Object o2 = a2[i]; if (!(o1==null ? o2==null : o1.equals(o2))) return false; } return true; }
String[] arr = {"dog", "cat", "pig", "bird"}; int result = Arrays.binarySearch(arr, "bird"); System.out.println(result == -1);
答:返回的结果是:true。
题目解析:使用 Arrays.binarySearch 以前必定要先调用 Arrays.sort() 对数组进行排序,不然返回的结果有误,本数组返回的结果是 ﹣1,是由于没有使用排序的结果,正确的使用请查看如下代码:
String[] arr = {"dog", "cat", "pig", "bird"}; Arrays.sort(arr); int result = Arrays.binarySearch(arr, "bird"); System.out.println(result == -1);
答:Arrays 经常使用方法以下:
答:常见查询数组中是否包含某个值有如下两种方式:
具体的实现代码以下:
String[] arr = {"doc", "pig", "cat"}; // 方式一:Arrays.asList(array).contains boolean bool = Arrays.asList(arr).contains("cat"); System.out.println(bool); // 方式二:Arrays.binarySearch Arrays.sort(arr); boolean bool2 = Arrays.binarySearch(arr, "cat") > -1; System.out.println(bool2);
答:本题考察的知识点显然不是使用 for 循环修改那么简单,而是考察对 Arrays.fill() 方法的掌握,如下提供了两种实现方式可供参考。
方式一:for 循环方式
int[] arrInt = new int[10]; for (int i = 0; i < arrInt.length; i++) { if (i >= 2 && i < 5) { arrInt[i] = 6; } }
方式二:Arrays.fill() 方式
int[] arrInt = new int[10]; Arrays.fill(arrInt, 2, 5, 6);