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