?? 1_java學習筆記.txt
字號:
2) 調用超類構造器。
14. 繼承(Polymorphism)
答:1) 一個對象變量可以指向多種實際類型的現象;
2) 它是一個運行時申明。
15. instanceof操作符
答:1) Boolean類型;
2) 判斷某個實例是否屬于指定類/接口
16. casting
答:1) 把一種類型強制轉換成另一種類型的過程被稱為類型轉換(casting);
2) 進行轉換的惟一原因在于有時在暫時忽視對象實際類型之后,需要使用實際對象的全部功能;
3) 要養成在類型轉換之前先判斷它是否能成功的編程習慣(使用instanceof);
4) 應盡量少用類型轉換和instanceof操作符。
17. 方法重寫(overridden)
答:1) 名稱、參數列表和返回類型相同;
2) modifier不能越來越窄;
3) 異常拋出不能越變越寬;
2004-8-23 星期一 晴
高級語言特性(上)
1. 靜態字段和方法
答:1) 靜態字段:每個類中只存在一個這樣的字段,反之,類的每一對象都有自己一份對這個實例字段的拷貝;
2) 靜態方法:能不通過對象直接訪問; 不能訪問非靜態變量; 不能被非靜態方法重寫;
2. 初始化塊
答:1) 只被執行一次;
2) 初始化塊首先被運行,然后才是構造器的主體部分被執行。
3. 調用構造器后詳細的執行過程
答:1) 初始化所有數據字段為默認值(0、0.0、false或null);
2) 按照在類聲明中出現的次序依次執行所有字段初始化語句和初始化塊;
3) 如果構造器的第一行代碼調用了另一個構造器,則執行被調用的構造器主體;
4) 執行構造器主體。
4. final關鍵字
答:1) final類不能被繼承;
2) final方法不能被改寫;
3) final變量不能被改變;
5. 抽象類
答:1) 方法沒有方法體,必須被聲明為抽象方法; 例:abstract int getAge();
2) 一個類中包含有抽象方法必須聲明為抽象類;
3) 抽象類不能實例化,但仍可以創建類的對象變量;
4) 能聲明方法或類類型為抽象;
注:1) 抽象方法如同方法占位符,這些方法一定要在子類中實現;
2) 即使不含抽象方法,類也可被聲明為抽象類。
6. 接口
答:1) 接口是抽象類的另外一種形式(沒有實例變量的抽象類);
2) 在一個接口中所有方法都是抽象方法;
3) 接口中所有變量都必須被定義為final static;
4) 接口可以繼承多個接口。
注:1) 接口中的方法自動被置為public, 因此,在接口中聲明方法并不需要提供public關鍵字。但在實現接口時,必須把方法聲明為public。
2004-8-24 星期二 晴
高級語言特性(中)
7. 訪問控制
答:修飾符 內部類 相同包 子類 其它
public √ √ √ √
protected √ √ √
default √ √
private √
8. “==”操作符和equals()方法
答:1) “==”操作符確定兩個引用是否指向相同對象;
2) equals()方法判斷兩個對象是否指向同一塊內存區域(這種測試并沒有太大用處,如果想測試對象是否相等,就需要覆蓋equals方法,進行更有意義的比較);
9. toString()方法
答:1) 和equals()方法一樣,toString()是Object類另外一個重要的方法;
2) 它返回一個代表該對象值的字符串。幾乎每個類都會覆蓋該方法,以便打印該對象當前狀態的表示。
3) 無論何時對象同字符串相連接,那么就可以使用"+"操作符,這時Java編譯器會自動調用toString方法獲得對象的字符串表示。例:
Point p = new Point(10,20);
String message = "The current position is " + p;//自動調用p.toString()
10. 內部類
答:內部類是定義在其他類內部的類:
1) 內部類對象能夠訪問創建它的對象的實現-包括那些私有數據;
2) 內部類能夠隱藏起來,不為同一包中的其他類所見;
3) 匿名內部類可以方便地定義運行時回調;
4) 所有內部類在編寫事件程序時用起來很方便。
11. 靜態內部類
答:1) 內部類的最簡單形式;
2) 不能和外部類同名;
3) 被編譯成一個獨立的類文件;
4) 只能訪問外部類的靜態方法、靜態實例變量(包括私有類型);
12. 實例內部類
答:1) 定義在類內部,沒有使用static修飾符;
2) 像實例變量;
3) 能訪問外部類的所有實例變量;
4) 在一個外部類里創建一個實例內部類實例:this.new Innerclass();
5) 在一個外部類外創建一個實例內部類實例:(new OuterClass()).new Innerclass();
6) 在一個內部類里訪問一個實例內部類:Outerclass.this.member;
13. 局部內部類
答:1) 定義在方法里;
2) 最少的一種內部類;
3) 和局部變量類似, 不能被定義為public,protected,private和static;
4) 只能訪問final型局部變量。
2004-8-25 星期三 晴
高級語言特性(下)
14. 匿名內部類
答:1) 沒有類名;
2) 沒有class關鍵字;
3) 沒有繼承和聲明;
4) 沒有構造函數;
15. 封裝類
答:原始基本類型 包裝類
boolean Boolean
byte Byte
short Short
char Character
int Integer
long Long
float Float
double Double
16. 集合接口類層次
答:
Collection
↑
|ˉˉˉˉˉˉ|
Set List Map
↑ ↑
| |
SortedSet SortedMap
1) Set: 集合類中不允許有重復對象;
2) SortedSet: 和Set接口同,但元素按升序排列;
3) List: 元素加載和移出時按照有順序,可以保存重復對象。
4) Map: 存儲了唯一關鍵字辨識的對象,不允許有重復關鍵字。
5) SortedMap: 和Map類同,但對象按他們關鍵字的升序排列。
17. 包括具體類在內的集合類層次
答:
Collection
↑
|ˉˉˉˉˉˉ|
HashSet LinkedList Hashtable
(Set) Vector, ArrayList Hashmap
(List) (Map)
↑ ↑
| |
TreeSet TreeMap
(SortedSet) (SortedMap)
18. 五個最常用的集合類之間的區別和聯系
答:1) ArrayList: 元素單個,非同步,效率高,多用于查詢
2) Vector: 元素單個,同步,線程安全,多用于查詢
3) LinkedList:元素單個,多用于插入和刪除
4) HashMap: 元素成對,非同步,元素可為空
5) HashTable: 元素成對,同步,元素不可為空
19. 反射
答:1) 確定一個對象的類;
2) 獲得一個類的修改符、變量、方法、構器函數、和父類的相類信息;
3) 找出哪些常量和方法是從一個接口聲明的;
4) 創建一個在運行時才知道名稱的類;
5) 調用對象的方法;
2004-8-26 星期四 晴
異常
1. 異常的基本概念
答:1) 異常事件改變程序流程;
2) 當一個異常事件發生時,一個異常被拋出;
3) 響應處理異常的代碼被稱為exception handler;
4) exception handler捕獲異常;
5) 異常處理能讓你集中精力在一個地方解決問題,然后將處理錯誤的代碼分開來放在另一個地方。
2. 捕獲異常
答:1) 設置一個try/catch的代碼塊;
2) 如果try塊內的任何代碼拋出了由catch子句指定的異常,則
a. 程序跳過try塊中的其他代碼;
b. 程序執行catch從句中的處理器代碼。
3) 如try塊內沒有拋出異常,直接跳過catch從句內容。
4) 如try塊內拋出的異常沒有在catch從句中指定, 則該方法會立即退出。
3. 處理異常
答:1) 應捕捉并處理那些已知如何處理的異常,而傳遞那些不知如何處理的異常;
2) 如想傳遞異常,必須在方法的定義中增加一個throws修飾符,以通知調用者可能會拋出一個異常;
3) 對子類方法拋出的異常不能超出超類方法throws指令的范圍。如父類不拋出任何異常,在子類方法中必須捕捉每一個“已檢查異常”。
4. 捕捉多個異常
答:1) 每個異常類型使用一個catch從句;
2) 如前面catch從句捕獲異常,將直接跳過后面catch從句內容;
3) 建議按異常類型的子類->超類的順序排列catch從句的先后順序。
5. finally 聲明
答:無論是否捕獲異常,都會執行finally從句中的代碼;
6. 異常調用棧
答:1. 哪個方法調用的代碼發生異常,返回到哪個方法;
2. main方法調用的代碼發生異常,返回到虛擬機。
7. 異常層次
答:1) 起源于Error的類代表不常用的環境(通常是硬件層面);
2) 應用程序不能夠從Error中恢復正常;
3) 所有的Java異常都起源于Exception;
4) RuntimeExcepiton也稱為未檢查異常;
5) 未檢查異常無須捕獲;
6) 其它異常,也稱為檢查異常,必須處理
Object
↑
Throwable
↑
|ˉˉˉˉˉˉˉˉ|
Error Exception
| ↑
| |ˉˉˉˉˉˉˉ|
RuntimeException
8. 一些未檢查的異常
答:1) java.lang.ArithmeticException 如:除0;
2) java.lang.NullPointerException 如:沒初始化一個References便使用;
3) java.lang.ArrayIndexoutofBoundsException 如:調用一個有十個元素的Array的第十一個元素的內容;
4) java.lang.NumberFormatException 如:Integer.parseInt("a");
9. 寫你自己的異常
答:1) 要做的僅僅是從Exception繼承或者是從Exception的一個子類衍生出自己需要的類就可;
2) 習慣為每一個異常類提供一個默認的構造器以及一個包含詳細信息的構造器。
10. 拋出你自己的異常
答:1) 在方法的定義中增加一個throws修飾符,以通知調用者可能會拋出一個異常;
2) 在方法中構造一個該類的實例,然后拋出該實例。
三個Java小笑話
1. 作為父親的兒子,我是他的子類,我繼承他的全部屬性和方法,但為什么父親會開車,我不會?開車這個方法也許是final類型。
2. 你們去二十家公司面試,也許沒有一家會問你內部類(累不累)。雖然內部類很少用,但沒人性的公司即使應聘成功,建議也別去。
3. 你今天早上出門的時候看了不該看的一幕,以致于一天沒有干活。看到這種異常,你們的項目經理過來問你是否技術上碰到了問題(試圖捕獲異常)?你搖搖頭(異常類型不對),然后你們的事務經理過來,你告訴他你在早上看到了自己最喜歡的Polo車竟然有最不喜歡的綠色。事務經理安慰你可將目標轉為寶馬,并允諾周末一起開他的寶馬去海上田園兜風(捕獲異常),你情緒大為好轉并提出自動加班(異常得到處理,程序正常運轉)。不幸的是,你們的事務經理剛好情緒也不好,他直接將你的情況反映給總經理(捕獲異常,沒處理直接拋出)。更不幸的是,也許你們公司的人事經理和項目經理剛好不在,這種情況被你們的頭看到,他將你開除(首先被Exception捕獲,粗略處理)。你被開除后,整個項目無法進行下去,最后公司被宣布解散。因為整個公司就你一個人。
2004-8-27 星期五 晴
創建圖形用戶界面
1. AWT
答:1) Abstract Window Toolkit(抽象圖形工具);
2) 提供一系列的對象去創建圖形用戶界面;
3) 在java.awt包里包括三種類型的類:
a 組件: 可視化圖形工具的基本類,包括容器;
b 容器: 一種可以裝載其他組件的特殊組件;
c 布局管理器: 容器里用來定位(布置)用戶界面組件的一種接口。
2. 創建圖形用戶界面步驟一:選擇容器
答:1) 組件可被加入到容器;
2) 通常使用以下容器: Frame, Dialog, Applet, Panel;
Component
↑
Container
↑
|ˉˉˉˉˉˉ|ˉˉˉˉˉˉ|
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -