答:數組和集合的區別以下: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);