標籤:
1.main方法的屬性public static是可以交換的,但是傳回型別一定是void類型,形式參數必須為String[]類型,名稱可變。
2.查看載入類:new HelloWorld().getClass().getClassLoader().toString()。
3.在Java中,過程和函數統稱為方法,方法分為類方法和執行個體方法,變數分為類變數和執行個體變數。類方法只能訪問類變數,不能訪問執行個體變數。執行個體方法可以訪問執行個體變數和類變數。
4.任何設計語言錯誤:詞法錯誤,語法錯誤,運行錯誤,邏輯錯誤。
5.可以使用System.out.println()來檢查方法內執行情況,但要粗體或其他注釋符號以便刪除。
6.需要利用邊界條件來測試方法的正確性。
7.注意“==”號的使用。“==”操作符用來比較變數的值是否相等,而equals用來判斷對象是否是同一個對象。
8.String和StringBuffer:String儲存的為對象,StringBuffer儲存的為地址。採用String作為參數,其為值傳遞;但使用StringBuffer作為參數,其引用傳遞。同時,需要注意的是,在給對象的私人變數賦值時,應該使用s="Inital Value";而不是s=new String("Inital Value");因為後者每次會調用構造器。產生新對象,效能低下,記憶體開銷大,而且沒有意義。
9.邏輯操作符:&,^,| 短路邏輯操作符:&&,||。
10.length,length(),size()的區別:length屬性是針對數組的,而length()方法是針對字串的,size()方法是針對泛型集合的。
11.使用break後的標號跳出多重迴圈。
12.Java中對double類型設定了兩個特殊值:Infinity和NaN。
13.javac -d 後跟一個目錄名,該目錄就是要存放編譯的類檔案的地方。
14.javac -cp abc.a.One就是強迫Java命令到目前的目錄的abc子目錄的a的子目錄下尋找One.class類檔案。
15.抽象方法必須以分號結束,abstract方法不能使用private修飾。
16.局部變數前不能放置任何存取修飾詞(private,public,protected),但final非存取修飾詞可以用來修飾局部變數。
17.關於類的封裝性,get方法只能擷取一些基本類型的成員變數。對於參考型別的成員變數,可以採用對象深複製的方法。
18.用static修飾的代碼,在類載入的時候,就會載入到記憶體中。
19.System.exit(0)表示在拋出異常前將Java虛擬機器關閉。
20.方法覆蓋的基本規則:
(1)覆蓋方法的傳回型別和參數列表必須同它所覆蓋的方法精確匹配
(2)覆蓋方法不能比它所覆蓋的方法的可訪問性更差
(3)覆蓋方法不能比它所覆蓋的方法拋出更多的異常
21.設計類的基本技巧:
(1)要將內部資料設計為私人:只許看,不準摸。
(2)一定要對資料進行初始化:Java中不對局部變數進行初始化,但是會對類的成員變數進行初始化。
(3)不在類中過多使用基礎資料型別 (Elementary Data Type):如果一個類中的基礎資料型別 (Elementary Data Type)過多,應該將多個相關的基礎資料型別 (Elementary Data Type)封裝成一個類。
(4)不是所有的成員變數都需要使用set和get方法。
(5)使用標準格式進行類的定義:1>公用訪問特性部分,包訪問可訪問的特性部分,私人存取權限的特性部分
2>執行個體方法,靜態方法,執行個體域,靜態域
(6)將職責過多的類進行分解
(7)類名和方法要能體現出職責
22.抽象類別無法執行個體化,所以它會引用具體子類的對象。
23.從JDK5.0開始,採用@Override對覆蓋超類的方法進行標記。
24.Java要求equals方法具有以下特性:自反性,對稱性,傳遞性,一致性,空處理返回假
25.equals方法內實現的內容:
(1)判斷兩個對象的引用是否相同:this==object
(2)判斷參數是否為空白值:object==null
(3)判斷類型是否匹配:this.getClass()==object.getClass()
(4)將object轉換成相應類型的類型變數:ClassName other=(ClassName)object
(5)判斷各個域的值是否相同:this.name==object.name...
26.設計繼承的建議:
(1)將公用操作和成員變數定義在超類
(2)盡量少使用保護域protected
(3)使用繼承實現"is-a"關係
(4)除非所有的繼承的方法都有意義,否則不要使用繼承:假日類和日曆類就不該試用繼承,因為日曆類有個將假日轉為非假日的方法,這時,不該使用繼承
(5)在覆蓋方法時,不要改變預期的方法
(6)使用多態而非類型資訊:對於如下類型的代碼,應該將action定義成方法,並將其放置在兩個類的超類或介面中,然後進行調用,使用多態。
1 if(x is of type 1) 2 action1(x); 3 else if(x is of type 2) 4 action2(x);
27.對象複製:clone()方法是Object類的一個protected方法。此方法返回的對象獨立於被複製的對象。
28.內部類相當於一個成員變數。因此內部類可以定義在成員方法中,稱為局部內部類。
29.使用內部類的原因:
(1)內部類中的方法可以訪問內部類所在定義域內的所有資料,包括私人資料
(2)內部類可以將同一個包中的其他類隱藏起來
(3)當想要定義一個方法解析自己時,試用匿名內部類比較便捷
《Java改錯學習法》學習筆記