一些必須知道的JAVA基礎知識
阿新 • • 發佈:2019-01-05
作為一名Android開發人員,面試的時候也會經常被問到一些java基礎方面的。這就前段時間面試中遇到的一些java方面的,可能不全,只是我面試中遇到的。
寫這篇部落格只是為了自己在以後的面試中(雖然現在上班了)不要在被同樣的問題難到,以後還會持續更新。
1. ArrayList 和 LinkedList:
1.兩者是是集合,不同的是內部的資料結構和實現原理有所不同。ArrayList內部是陣列結構,LinkedList內部是連結串列的資料結構。ArrayList的優點是get或set(查詢)效率高。LinkedList是add(新增)和remove(刪除)效率高。
2. ArrayList他既然是陣列結構,陣列就每一個元素都有索引,那麼當向其中新增一個數據的話,則每一個元素的索引都會發生變化。這樣導致效率地下。但是查詢的話,我們可以根據索引很容易找到具體的元素。
LinkedList是連結串列資料結構,當向其中新增或者刪除一個數據的時候,它只需要對其前後的資料改變引用即可。因此這方面它比ArrayList效率高。查詢的話,由於連結串列,它必須從頭到尾的去遍歷,除非要找的元素正好在開頭或者末尾,否則他是很好時的
2. Java類中的變數如果不寫修飾符,則預設修飾符是什麼 ?,是protected。
我面試的時候是直接給看了一張類似的圖:
請問圖中沒有修飾符的textView的預設修飾符是什麼。也是protected許可權的
3. Java遍歷List有幾種方式,分別是什麼?
- for迴圈(這個是最容易想到的)
- for eaceh
- Iterartor 迭代器遍歷
示例程式碼:
public static void main(String[] args) {
List<String> list = new ArrayList<>();
for (int i = 1; i < 7; i++) {
list.add("星期" + i);
}
listFor(list); //for迴圈
listForEach(list);//foreach迴圈
listIterator(list);//迭代器迴圈
}
private static void listIterator(List<String> list) {
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String i = (String) iterator.next();
System.out.println("Iterator迴圈---"+i);
}
}
private static void listForEach(List<String> list) {
for (String string : list) {
System.out.println("foreach迴圈---"+string);
}
}
private static void listFor(List<String> list) {
for (int i = 0; i < list.size(); i++) {
System.out.println("for迴圈---"+list.get(i));
}
}
輸出結果: