JAVA基礎知識注意事項


JAVA核心技術卷一 (第十版)java

下面是須要注意的:web

  1. 只有方法名和參數類型叫作方法的簽名, 不一樣的返回類型值不能做爲方法的簽名。(4.6.1)
  2. 這是域與局部變量的主要不一樣點。 必須明確地初始化方法中的局部變量。 可是,若是沒有初始化類中的域, 將會被自動初始化爲默認值(0、 false 或 null )。(4.6.2)
  3. 初始化塊或靜態的初始化塊在建立對象的時候執行裏面的代碼。(4.6.7)
  4. 從編譯器的角度來看, 嵌套的包之間沒有任何關係。(4.7)
    例如:ava.util 包與java.util.jar 包毫無關係。每個都擁有獨立的類集合。
    import java.util.* 語句不能導入java.util.jar包中的類.
  5. 標記爲 public 的部分能夠被任意的類使用;
    標記爲 private 的部分只能被定義它們的類使用。
    若是沒有指定 public 或 private, 這 個 部分(類、方法或變量)能夠被同一個包中的全部方法訪問。
  6. 使用super 調用構造器的語句必須是子類構造器的第一條語句。(5.1.3)
  7. 在覆蓋一個方法的時候,子類方法不能低於超類方法的可見性。(5.1.6)
  8. 若是將一個類聲明爲 final, 只有其中的方法自動地成爲 final, 而不包括域。(5.1.7)
  9. 若是方法很簡短、 被頻繁調用且沒有真()正地被覆蓋, 那麼即時編譯器就會將這個方法進行內聯處理。(5.1.7)
  10. 將一個子類的引用賦給一個超類變量, 編譯器是容許的。但將一個超類的引用賦給一個子類變量, 必須進行類型轉換 。(5.1.8)
  11. 對本包和全部子類可見 ---- protected。(5.1.10)
  12. instanceof經過返回一個布爾值來指出,這個對象是不是這個特定類或者是它的子類的一個實例。
  13. Object類中的equals方法將判斷兩個對象是否具備相同的引用。可是對於大多數類來講並無意義。(5.2.1)
  14. 數組繼承了 object 類的 toString 方法,數組類型將按照舊的格式打印,生成字符串「 [I@la46e30」 ,修正的方式是調用靜態方法 Arrays.toString
  15. ArrayList 若是已經清楚或可以估計出數組可能存儲的元素數量, 就能夠在填充數組以前調ensureCapacity方法:
  16. 對象包裝器類是不可變的,對象包裝器類仍是 final ,裝箱和拆箱是編譯器承認的。
  17. 容許將一個數組傳遞給可變參數方法的最後一個參數。main方法
  18. javap是 Java class文件分解器,能夠反編譯(即對javac編譯的文件進行反編譯),也能夠查看java編譯器生成的字節碼。用於分解class文件。 javap -p <類文件>
  19. Class類中的newlnstance( )調用默認的構造器,若是這個類沒有默認的構造器, 就會拋出一個異常,若是想要提供參數,能夠是使用Constructor中名字相同的的方法。
  20. 一個 Class 對象實際上表示的是一個類型, 而這個類型未必必定是一種類。
  21. lambda 表達式中捕獲的變量必須其實是最終變量
  22. lambda 表達式的體與嵌套塊有相同的做用域。
  23. 強烈建議解耦合 try/catch 和 try/finally 語句塊
  24. Java 語 言 規 範 將 派 生 於 Error 類 或 RuntimeException 類的全部異常稱爲非受查
    ( unchecked ) 異常, 全部其餘的異常稱爲受查(checked) 異常。
  25. for each 循環能夠與任何實現了 Iterable 接口的對象一塊兒工做, 可是Collection 接口擴展了 Iterable 接口。
  26. 四種循環
1. arrayList.iterator().forEachRemaining(System.out::println);
        2. arrayList.forEach(System.out::println);
        3. for (String str : arrayList)
           	System.out.println(str);
        4. Iterator it = arrayList.iterator();
        	while(it.hasNext())
            	System.out.println(it.next());
  1. 標記接口 RandomAccess 用它來測試一個特定的集合是否支持高效的隨機訪問
  2. 在ArrayList的無參構造函數上的註釋 Constructs an empty list with an initial capacity of ten. 初始化的時候並無真正的建立10個空間,這是惰性初始模式對象,在這篇.和這篇文章中能夠一探究竟。
  3. 內部類的對象有一個隱式引用, 它引用了實例化該內部對象的外圍類對象。經過這個指針, 能夠訪問外圍類對象的所有狀態,可是static內部類並無。
  4. 局部類還有一個優勢。它們不只可以訪問包含它們的外部類, 還能夠訪問局部變量。不過, 那些局部變量必須事實上爲 final
  5. 雙括號初始化
    • 一個方法不能修改一個基本數據類型的參數
    • 一個方法能夠改變一個對象參數的狀態
    • 一個方法不能讓對象參數引用一個新的對象
  6. add 方法只依賴於迭代器的位置, 而 remove 方法依賴於迭代器的狀態。
  7. Vector 類的全部方法都是同步的,synchronized
  8. 若是 a_equals(b) 爲 true, a 與 b 必須具備相同的散列碼。
相關文章
相關標籤/搜索