学习笔记之Java程序设计实用教程
生活随笔
收集整理的這篇文章主要介紹了
学习笔记之Java程序设计实用教程
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Java程序設(shè)計(jì)實(shí)用教程 by 朱戰(zhàn)立 & 沈偉
學(xué)習(xí)筆記之JAVA多線程(http://www.cnblogs.com/pegasus923/p/3995855.html)
國(guó)慶休假前學(xué)習(xí)了多線程,休假花了兩天時(shí)間把整本書學(xué)完了。看書還就得一鼓作氣。
?第一章 概述
- 1995年SUN正式發(fā)布Java,前身是Oak。
- 1998年發(fā)布帶有JDK1.2的Java 2。
- JDK(JAVA DEVELOPMENT KIT),也稱作JAVA SDK(JAVA SOFTWARE DEVELOPMENT KIT)。
- J2ME(JAVA 2 MICRO EDITION)
- J2SE(JAVA 2 STANDARD EDITION)
- J2EE(JAVA 2 ENTERPRISE EDITION)
- 簡(jiǎn)單、面向?qū)ο蠛团c現(xiàn)有高級(jí)語(yǔ)言形式類似。
- 魯棒性和安全性。可靠性依靠JAVA的編譯時(shí)檢查和運(yùn)行時(shí)檢查兩層檢查機(jī)制實(shí)現(xiàn)。主要用于分布式的網(wǎng)絡(luò)環(huán)境。
- 結(jié)構(gòu)中立。JAVA先編譯產(chǎn)生字節(jié)碼(不依賴于任何硬件和操作系統(tǒng)的中間代碼),然后用解釋的方法產(chǎn)生最終在具體計(jì)算機(jī)上運(yùn)行的機(jī)器碼。
- 高性能。解釋性程序設(shè)計(jì)語(yǔ)言運(yùn)行速度慢,JAVA是半解釋型,但JAVA的解釋執(zhí)行能全速進(jìn)行,不用檢查運(yùn)行時(shí)的環(huán)境(因該環(huán)境已在編譯時(shí)保證)。自動(dòng)垃圾回收線程定義成優(yōu)先級(jí)很低的后臺(tái)線程,只在系統(tǒng)空閑時(shí)啟動(dòng)執(zhí)行,也保證了運(yùn)行速度。
- 解釋型、多線程和動(dòng)態(tài)性。只要安裝JAVA解釋器,JAVA字節(jié)碼就能在任何計(jì)算機(jī)上解釋執(zhí)行。JAVA的多線程機(jī)制可提高復(fù)雜應(yīng)用程序的運(yùn)行速度,并且有系統(tǒng)提供的同步功能做安全保證。JAVA的對(duì)象綁定是動(dòng)態(tài)的,類在被要求的時(shí)候才被從指定任意位置導(dǎo)入。
- 和C++等相比,JAVA是純面向?qū)ο蟮母呒?jí)語(yǔ)言。
- 獨(dú)立于各種操作平臺(tái)。先按編譯方式翻譯到字節(jié)碼,然后把字節(jié)碼按解釋方式翻譯到具體機(jī)器的機(jī)器語(yǔ)言。這種半編譯、半解釋的高級(jí)語(yǔ)言翻譯方式,使獨(dú)立于硬件環(huán)境和操作系統(tǒng)平臺(tái)。
- 安全性好。
- 多線程。操作系統(tǒng)多任何和分時(shí),允許同一時(shí)間運(yùn)行多個(gè)程序。主要有多進(jìn)程和多線程兩種方式,多線程效率更高。同步機(jī)制能保證多線程正確運(yùn)行。
- 字節(jié)碼(BYTECODE)是和任何具體機(jī)器環(huán)境無(wú)關(guān)的中間代碼。
- JAVA程序文件為.JAVA,字節(jié)碼文件.CLASS。
- JAVA虛擬機(jī)(JAVA VIRTUAL MACHINE, JVM)上有JAVA解釋器。
- JAVA一次編寫,任意運(yùn)行(WRITE ONCE, RUN ANYWHERE),解決了硬件環(huán)境和操作系統(tǒng)平臺(tái)的異構(gòu)問題。
- 網(wǎng)絡(luò)環(huán)境下應(yīng)用軟件的開發(fā)模式多是B/S(BROWSE/SERVER)模式,即應(yīng)用軟件放在服務(wù)器端,客戶端通過瀏覽器來(lái)進(jìn)行應(yīng)用。B/S模式的應(yīng)用系統(tǒng)特別需要異構(gòu)環(huán)境的支持。
- 嵌入HTML的JAVA程序稱作APPLET程序(小程序)。
- 如果把JAVA源程序在瀏覽器上按解釋方式運(yùn)行,客戶計(jì)算機(jī)的運(yùn)行速度將非常慢。
- 當(dāng)JAVA虛擬機(jī)采用硬件直接實(shí)現(xiàn)時(shí),運(yùn)行速度將大大快于目前的運(yùn)行速度。
- JDK的文件夾結(jié)構(gòu):BIN,包含編譯器、解釋器等可執(zhí)行文件;DEMO,程序示例;INCLUDE,頭文件,用于本地機(jī)的C語(yǔ)言;INCLUDE-OLD,頭文件,用于兼容支持舊接口;JRE,JAVA運(yùn)行時(shí)環(huán)境的根路徑;LIB,可執(zhí)行程序使用的包文件。
- set path設(shè)置了JAVA編譯運(yùn)行程序的路徑。
- set classpath設(shè)置了JAVA包的路徑,最前面的“.”表示在當(dāng)前工作路徑下可執(zhí)行JAVA程序。
- JAVA源程序文件名必須和類名完全一樣;JAVA文件名的命名也是大小寫敏感;JAVA源程序文件名后綴必須為.JAVA。
- 編譯命令JAVAC將編譯.JAVA,若編譯正確,產(chǎn)生相應(yīng)字節(jié)碼文件(類文件).CLASS。
- 運(yùn)行命令JAVA可運(yùn)行.CLASS。
- JAVA程序主要有兩種:JAVA APPLICATION(應(yīng)用程序)和JAVA APPLET(小程序)。
- JAVA APPLET是嵌入在網(wǎng)頁(yè)中、用瀏覽器加載后才能解釋執(zhí)行的程序。
?第二章 JAVA語(yǔ)言基礎(chǔ)
- JAVA語(yǔ)言的字符使用UNICODE編碼標(biāo)準(zhǔn)。
- 標(biāo)識(shí)符由字母數(shù)字下劃線_和美元符$組成,必須以字母_或$開頭,字符個(gè)數(shù)有限的字符序列。字母符號(hào)大小寫敏感,區(qū)分大小寫。
- JAVA有47個(gè)固定含義的標(biāo)識(shí)符,關(guān)鍵字。
- 變量必須先定義(聲明),才能賦值。
- 變量定義是指示編譯器為特定數(shù)據(jù)類型的數(shù)值保存在內(nèi)存中分配適當(dāng)?shù)膬?nèi)存空間。
- 變量的使用范圍稱作變量的作用域。
- 常見的程序塊形式是if、while、for等后面跟隨的一對(duì)花括號(hào)。
- 整個(gè)程序運(yùn)行期間保持不變的變量稱為常量。
- 定義常量用關(guān)鍵字final。
- 常量名通常全大寫字母。
- 數(shù)據(jù)類型規(guī)定一類數(shù)據(jù)的數(shù)據(jù)位長(zhǎng)度(字符個(gè)數(shù)),取值范圍,以及對(duì)該類數(shù)據(jù)所能進(jìn)行的操作。
- JAVA定義了8種基本數(shù)據(jù)類型:整型,byte/short/int/long;浮點(diǎn)型,float/double;邏輯型,boolean;字符型,char。
- byte 8 bits, short 16 bits, int 32 bits, long 64 bits.
- 十進(jìn)制首位不能為0;八進(jìn)制以0打頭;十六進(jìn)制以0x或0X打頭。
- 字面值是程序中用到的顯示數(shù)據(jù)值。所有整型字面值都隱含為int型。若要表示為long型時(shí),在后面加L或l,如12345L。
- 浮點(diǎn)型由整數(shù)部分和小數(shù)部分組成。兩種表示方式標(biāo)準(zhǔn)記數(shù)法和科學(xué)記數(shù)法,指數(shù)部分由e(E)后跟帶正負(fù)號(hào)的整數(shù)表示。
- float 32 bits, double 64 bits.
- 所有浮點(diǎn)型數(shù)的字面值隱含為double。若要表示為float,需加F或f,如123.123F。
- 邏輯型用來(lái)定義保存邏輯值的變量,也稱布爾型。
- 一個(gè)UNICODE標(biāo)準(zhǔn)下的編碼稱作一個(gè)字符。
- 字符型字面值用一對(duì)單引號(hào)括起來(lái)。
- 轉(zhuǎn)義字符:\r 回車,\\ 反斜杠,\' 單引號(hào),\“ 雙引號(hào)。
- JAVA是強(qiáng)類型語(yǔ)言。強(qiáng)類型語(yǔ)言是指對(duì)數(shù)據(jù)類型的匹配要求十分嚴(yán)格。如果表達(dá)式的數(shù)據(jù)類型不一致,則編譯器給出類型不一致的出錯(cuò)信息。
- 賦值語(yǔ)句的類型匹配有兩種:類型相同和類型兼容。類型兼容是指賦值號(hào)左端的數(shù)據(jù)類型比賦值號(hào)右端的數(shù)據(jù)類型長(zhǎng)。數(shù)據(jù)類型長(zhǎng),是指數(shù)據(jù)類型的位數(shù)長(zhǎng)。
- 類型不兼容時(shí),可以重新定義賦值號(hào),或用強(qiáng)制類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換可能丟失數(shù)據(jù)或損失數(shù)據(jù)的精度。
- JAVA在基本關(guān)鍵字、運(yùn)算符、表達(dá)式、賦值語(yǔ)句、流程控制語(yǔ)句等方面,是和C/C++基本相同的。
- JAVA運(yùn)算符分為四類:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符和位運(yùn)算符。
- 算術(shù)運(yùn)算符分為一元和二元,操作數(shù)必須是數(shù)值類型。
- 一元運(yùn)算符:+/-/++/--。一元運(yùn)算符與其前后的操作數(shù)之間不允許有空格,否則編譯出錯(cuò)。
- 二元運(yùn)算符:+/-/×///%。取余運(yùn)算符可用于整數(shù)和浮點(diǎn)數(shù)的情況。
- 二元運(yùn)算的所得結(jié)果的數(shù)據(jù)類型與精度較高(位數(shù)更長(zhǎng))的那種數(shù)據(jù)類型一致。
- 關(guān)系運(yùn)算符:==/!=/>/>=/</<=。
- 邏輯運(yùn)算符:&&/||/!/^/&/|。
- &和|運(yùn)算是把邏輯表達(dá)式全部計(jì)算完,而&&和||運(yùn)算具有短路計(jì)算功能。短路計(jì)算,指系統(tǒng)從左至右進(jìn)行邏輯表達(dá)式的計(jì)算,一旦出現(xiàn)計(jì)算結(jié)果已經(jīng)確定的情況,則計(jì)算過程即被終止。短路計(jì)算功能可以提高程序的運(yùn)算速度。在程序設(shè)計(jì)時(shí)使用&&和||運(yùn)算符,而不使用&和|。
- 位運(yùn)算是以二進(jìn)制位為單位進(jìn)行的運(yùn)算,其操作數(shù)和運(yùn)算結(jié)果都是整型值。
- 位運(yùn)算符:&/|/~/^/>>/<</>>>。位運(yùn)算相應(yīng)的操作數(shù)和運(yùn)算結(jié)果都是二進(jìn)制整數(shù),而邏輯運(yùn)算相應(yīng)的操作數(shù)和運(yùn)算結(jié)果都是邏輯值。
- 右移是將一個(gè)二進(jìn)制數(shù)按指定位數(shù)向右移位,移掉的被丟棄,左邊移進(jìn)的部分補(bǔ)0(該數(shù)為正時(shí)),或者補(bǔ)1(該數(shù)為負(fù)時(shí))。整數(shù)在機(jī)器內(nèi)部采用補(bǔ)碼表示法,正數(shù)符號(hào)位為0,負(fù)數(shù)的符號(hào)位為1。
- 0填充的右移>>>:不論正負(fù),左邊移進(jìn)的部分一律補(bǔ)0。
- 賦值運(yùn)算符還可以與二元算術(shù)運(yùn)算符、邏輯運(yùn)算符和位運(yùn)算符組合成簡(jiǎn)捷運(yùn)算符,如 +=。
- []是數(shù)組運(yùn)算符,其中數(shù)值為數(shù)組下標(biāo)。
- ()用于改變表達(dá)式中運(yùn)算符的優(yōu)先級(jí)。
- 操作數(shù)是字符串時(shí),+運(yùn)算符用來(lái)合并兩個(gè)字符串;當(dāng)一邊是字符串,一邊是數(shù)值時(shí),機(jī)器自動(dòng)將數(shù)值轉(zhuǎn)換為字符串。
- 條件運(yùn)算符(?:)
- 對(duì)象運(yùn)算符instanceof用來(lái)測(cè)試一個(gè)指定對(duì)象是否是指定類(或其子類)的實(shí)例。
- 點(diǎn)運(yùn)算符(.)功能:一是引用類中成員;二是指示包的層次等級(jí)。
- 用運(yùn)算符和圓括號(hào)把運(yùn)算對(duì)象連接起來(lái)的、符合JAVA語(yǔ)言語(yǔ)法規(guī)則的式子稱作表達(dá)式。
- 表達(dá)式按照運(yùn)算符優(yōu)先級(jí)高的先運(yùn)算;同一優(yōu)先級(jí)的運(yùn)算符,按照運(yùn)算符的結(jié)合性(從左向右還是從右向左)的次序進(jìn)行運(yùn)算。大多數(shù)從左向右,少數(shù)(賦值、條件運(yùn)算等)是從右向左。
- 表達(dá)式還可以是某個(gè)類的方法調(diào)用。
- 流程控制語(yǔ)句用來(lái)控制程序的執(zhí)行流程:條件選擇,循環(huán),和轉(zhuǎn)移語(yǔ)句。
- 基本結(jié)構(gòu):順序結(jié)構(gòu),分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。
- 一個(gè)以;結(jié)束的符號(hào)串稱為語(yǔ)句。
- JAVA流程控制語(yǔ)句有:分支語(yǔ)句,if, switch;循環(huán)語(yǔ)句,for, while, do-while;轉(zhuǎn)移語(yǔ)句,break, continue。
- 函數(shù)或類的成員函數(shù)運(yùn)行結(jié)束后需要返回原調(diào)用處,并可能需要帶回返回值的流程控制用return語(yǔ)句。
- if實(shí)現(xiàn)二路分支,switch多路分支。
- if-else中,else語(yǔ)句是任選的。
- JAVA規(guī)定:else總是與最近的一個(gè)if語(yǔ)句匹配。
- switch, case, default是關(guān)鍵字,default語(yǔ)句是可選的。
- switch表達(dá)式和case常量值的類型可以是byte,short,int,long和char,但不能為boolean,并且要求兩者的數(shù)據(jù)類型必須一致。
- switch語(yǔ)句中的break語(yǔ)句結(jié)束switch語(yǔ)句的執(zhí)行。
- for語(yǔ)句中的循環(huán)初始化,循環(huán)條件判斷和循環(huán)變量修改都可以任選,即for (;;)。
- 循環(huán)過程永不結(jié)束,為死循環(huán)。
- do-while至少執(zhí)行一次循環(huán)體,while可以一次也不執(zhí)行。
- break通常和switch或循環(huán)語(yǔ)句配合使用;continue通常和循環(huán)語(yǔ)句配合使用。
- continue語(yǔ)句僅跳過當(dāng)前層中循環(huán)體的剩余語(yǔ)句。
- 若函數(shù)為void類型,則return語(yǔ)句后沒有返回值;若為非void,則return語(yǔ)句后需要有返回值,且返回值的累心個(gè)必須和函數(shù)的類型一致。
- 當(dāng)return語(yǔ)句不帶返回值,并且位于函數(shù)的最后時(shí),它可以省略。
- 單行注釋以//開頭,至行尾;多行注釋以/*開頭,以*/結(jié)束;文件注釋用來(lái)自動(dòng)生成一個(gè)HTML文檔,為程序自動(dòng)提供網(wǎng)絡(luò)環(huán)境下的文檔說(shuō)明,以/**開頭,以*/結(jié)束。
- 數(shù)組是連續(xù)內(nèi)存單元中一組名字和數(shù)據(jù)類型相同的數(shù)據(jù)元素的有限集合。數(shù)組中每個(gè)數(shù)據(jù)元素稱作數(shù)組元素。JAVA還可以構(gòu)造不規(guī)則數(shù)組。
- JAVA使用一維數(shù)組分三步:定義一堆數(shù)組變量、為數(shù)組分配內(nèi)存單元和使用數(shù)組元素。
- 數(shù)組定義后,系統(tǒng)將給數(shù)組標(biāo)識(shí)符分配一個(gè)內(nèi)存單元,用于指示數(shù)組在內(nèi)存中的實(shí)際存放位置。由于數(shù)組變量定義時(shí),數(shù)組元素本身在內(nèi)存中的實(shí)際存放位置還沒給出,所以此時(shí)該數(shù)組名的值為空NULL。
- new運(yùn)算符:向系統(tǒng)申請(qǐng)指定數(shù)據(jù)類型所需的內(nèi)存單元空間。new運(yùn)算符返回所申請(qǐng)內(nèi)存單元的首地址。
- JAVA規(guī)定,在數(shù)組分配內(nèi)存單元后,系統(tǒng)將自動(dòng)給每個(gè)數(shù)組元素賦初值,數(shù)值型為0,邏輯型為false,類類型為null。
- 數(shù)組下標(biāo)由0開始。
- 數(shù)組名是指向內(nèi)存中存放數(shù)組元素的一片連續(xù)內(nèi)存單元的首地址。
- 數(shù)組名的類型是引用類型。引用類型是指該類型的標(biāo)識(shí)符所表示的是一片內(nèi)存連續(xù)地址的首地址。字符串名和數(shù)組名,所有對(duì)象名都是引用類型。
- 數(shù)組的定義和為數(shù)組分配內(nèi)存空間兩步可以結(jié)合起來(lái)。數(shù)組元素的初始化賦值也可以結(jié)合一起。
- JAVA提供了length成員變量返回?cái)?shù)組元素的個(gè)數(shù)。
- 如果一維數(shù)組的每個(gè)數(shù)組元素都是一個(gè)一維數(shù)組,則構(gòu)成二維數(shù)組。若二維數(shù)組中的每個(gè)一維數(shù)組定義為不同的元素個(gè)數(shù),就構(gòu)成不規(guī)則的二維數(shù)組。
- 字符串是N(N>=0)個(gè)字符組成的序列。JAVA中字符串用雙引號(hào)括起來(lái),字符個(gè)數(shù)稱作字符串長(zhǎng)度。
- JAVA字符串變量用String來(lái)定義。String是JAVA API中定義的一個(gè)類。
- 一對(duì)雙引號(hào)括起來(lái)的任何字符序列都是一個(gè)字符串常量。
- 把一片連續(xù)內(nèi)存單元的首地址賦給字符串變量名,是讓字符串變量指向存放字符串的內(nèi)存單元的首地址。
- JAVA提供了特殊的字符串運(yùn)算符+,把兩個(gè)字符串連接起來(lái)。
- System.out.print()和Sytem.out.println()要求的參數(shù)是字符串或字符串表達(dá)式。
第三章 類和對(duì)象
- 類是對(duì)具有相同屬性和方法的一組相似對(duì)象的抽象。對(duì)象是類的實(shí)例。包是JAVA組織和管理類的一種方法。
- 類的封裝性、多態(tài)性和繼承性是OOP的重要特點(diǎn)。
- 類的設(shè)計(jì)分為類聲明和類主體設(shè)計(jì)兩部分。
- 接口名多于一個(gè)時(shí)用逗號(hào)分隔開。
- 類聲明的修飾符分為訪問控制符和類型說(shuō)明符兩部分。一起使用時(shí),訪問控制符在前,類型說(shuō)明符在后。
- 訪問控制符為public,被定義為公共類,能被任何類訪問。包中的類能互相訪問,不在一個(gè)包中的類不能直接訪問,必須用import導(dǎo)入到該包中。被導(dǎo)入的類必須是public。
- 沒有public時(shí),即是默認(rèn)類(缺省類)。默認(rèn)類表示該類只能被同一個(gè)包中的類訪問,不能被其他包的類訪問。JAVA文件中可以有很多類,但最多只能有一個(gè)公共類,其他為默認(rèn)類。
- 類說(shuō)明符為abstract時(shí),為抽象類。抽象類不能用來(lái)定義對(duì)象,通常被設(shè)計(jì)成一些具有類似成員變量和方法的子類的父類。
- 類說(shuō)明符為final時(shí),為最終類,不能用來(lái)再派生子類。
- 由于JAVA中所有方法必定屬于某個(gè)類,即方法一定是成員方法,所以成員方法簡(jiǎn)稱方法。
- 聲明成員變量的修飾符有private, public和protected。private成員變量只能被該類本身訪問。不加任何修飾符,定義為默認(rèn)修飾符,該成員變量只能被該類本身和同一個(gè)包的類訪問。protected除可以被該類本身和同一個(gè)包的類訪問外,還可以被它的子類(包括同一個(gè)包中的子類和不同包中的子類)訪問。public可以被所有類訪問。
- static指明是類成員變量,final指明該成員變量是常量,transient為臨時(shí)變量,很少使用。
- 聲明成員方法的修飾符有private, public和protected。static指明該方法是一個(gè)類方法。
- 方法聲明中必須給出方法名和方法的返回值類型,如果沒有返回值,用關(guān)鍵字void標(biāo)記。方法名后的()是必須的,即使參數(shù)列表為空,也要加上。
- 方法體是方法的具體實(shí)現(xiàn)。
- 定義在類中的都是成員變量,定義在方法內(nèi)的都是變量,還有定義在方法參數(shù)中的虛參變量。成員變量和變量的類型既可以是基本數(shù)據(jù)類型,也可以是已定義的類。
- 專門用來(lái)進(jìn)行對(duì)象初始化的方法稱為構(gòu)造方法(構(gòu)造函數(shù))。一個(gè)類中至少要有一個(gè)構(gòu)造方法。
- 構(gòu)造方法的名字必須與類名完全相同,沒有返回值,連表示空類型void的返回值都沒有。一般應(yīng)定義為public。
- 創(chuàng)建對(duì)象時(shí),將調(diào)用類中的構(gòu)造方法為對(duì)象的成員變量進(jìn)行初始化賦值。
- 一個(gè)類對(duì)應(yīng)一個(gè).CLASS文件,一個(gè)程序文件中可以有一個(gè)或多個(gè)類,但只允許一個(gè)類被定義成public。類中可以沒有main方法。但要運(yùn)行的類必須有main方法。程序就是從main方法開始執(zhí)行。
- 對(duì)象和數(shù)組一樣也是引用類型,即對(duì)象定義后,系統(tǒng)將給對(duì)象標(biāo)識(shí)符分配一個(gè)內(nèi)存單元,用于存放實(shí)際對(duì)象在內(nèi)存中的存放位置。
- new運(yùn)算符申請(qǐng)對(duì)象所需的內(nèi)存空間,返回所申請(qǐng)的內(nèi)存空間的首地址。賦值語(yǔ)句把new運(yùn)算符分配的連續(xù)地址的首地址賦給對(duì)象名。
- 程序設(shè)計(jì)時(shí)最經(jīng)常使用的方法,是在定義對(duì)象的同時(shí)為對(duì)象分配內(nèi)存空間和進(jìn)行初始化賦值。
- 對(duì)象可以像變量一樣賦值。不同的是,對(duì)象賦值不是把取值賦給另一個(gè)對(duì)象,而是讓另一個(gè)對(duì)象名存儲(chǔ)的對(duì)象的首地址和這個(gè)對(duì)象名存儲(chǔ)的對(duì)象的首地址相同,即對(duì)象的賦值是對(duì)象的首地址的賦值。
- 對(duì)象也可以像變量一樣,作為方法的參數(shù)使用。不同的是,變量作為實(shí)參時(shí),系統(tǒng)把實(shí)參的數(shù)值復(fù)制給虛參;對(duì)象作為實(shí)參時(shí),系統(tǒng)把實(shí)參對(duì)象名(該對(duì)象必須已創(chuàng)建)指示的對(duì)象的首地址賦給虛參對(duì)象名。
- 變量的內(nèi)存空間是系統(tǒng)在變量定義時(shí)自動(dòng)分配的;當(dāng)變量超出作用范圍時(shí),系統(tǒng)將自動(dòng)回收該變量的內(nèi)存空間。
- 對(duì)象的內(nèi)存空間是用new創(chuàng)建的。對(duì)象也有作用范圍,超出作用范圍的對(duì)象(不再使用的對(duì)象)為垃圾對(duì)象。JAVA中,收集和釋放內(nèi)存由自動(dòng)垃圾回收線程負(fù)責(zé)。自動(dòng)垃圾回收線程在系統(tǒng)空閑時(shí)自動(dòng)運(yùn)行,這個(gè)線程監(jiān)視用戶程序中所以對(duì)象的有效作用范圍;當(dāng)某個(gè)對(duì)象超出其作用范圍時(shí),該線程就對(duì)這樣的對(duì)象做上垃圾對(duì)象標(biāo)識(shí),并在適當(dāng)?shù)臅r(shí)候一次性回收這些垃圾對(duì)象。
- 類有實(shí)例成員變量與類成員變量。類成員變量也稱作靜態(tài)成員變量。
- 類定義中沒用關(guān)鍵字static的成員變量就是實(shí)例成員變量,不同對(duì)象的實(shí)例成員變量的值不相同。
- 用static的成員變量稱為類成員變量。一個(gè)類的所以對(duì)象共享該類的類成員變量,類成員變量可以用來(lái)保存和類相關(guān)的信息,或用來(lái)在一個(gè)類的對(duì)象間交流信息。
- 類有實(shí)例方法與類方法。類方法稱作靜態(tài)方法。
- 沒用static的方法就是實(shí)例方法。它只能通過對(duì)象來(lái)調(diào)用。實(shí)例方法可以訪問類成員變量和類變量。
- 用static的方法是類方法。類方法通過類名來(lái)調(diào)用,也可以用對(duì)象,但類名調(diào)用類方法程序的可讀性更好。類方法只能訪問類變量,不能訪問實(shí)例變量。類防范主要用來(lái)處理和整個(gè)類相關(guān)的數(shù)據(jù)。
- 類的各種方法(包括構(gòu)造方法)都允許重寫(重載)。方法重寫overloading,指一個(gè)方法名定義多個(gè)方法實(shí)現(xiàn)。不同的方法,其參數(shù)類型或參數(shù)個(gè)數(shù)要有所不同。這就是C++提到的函數(shù)簽名。
- 方法重寫必須要么參數(shù)個(gè)數(shù)不同,要么參數(shù)類型不同,僅返回值類型的不同則是不允許的。
- OOP一個(gè)特點(diǎn)是公共類資源可以重用。
- 包package是JAVA提供的文件(公共類)的組織方式。一個(gè)包對(duì)應(yīng)一個(gè)文件夾,一個(gè)包可以有很多類文件。包中還可以有子包,稱為包等級(jí)。
- JAVA可以把類文件存放在可以有包等級(jí)的不同的包中。
- 同一個(gè)包中的文件名必須唯一,不同包中的文件名可以相同。
- package指出該語(yǔ)句所在文件所有的類屬于哪個(gè)包。
- 如果一個(gè)JAVA文件中有package語(yǔ)句,則必須寫在源文件的第一行。
- 當(dāng)多個(gè)JAVA源文件中都有package語(yǔ)句,且包名相同時(shí),說(shuō)明這些類同屬一個(gè)包。
- 包中存放的是編譯后的類文件.CLASS。通過import,可以導(dǎo)入某個(gè)包中的某個(gè)類,也可以導(dǎo)入某個(gè)包中的全部類,但不包含其子包。
- Windows文件用\表示一條路徑下的子路徑,JAVA用.表示一個(gè)包的子包。
- JDK規(guī)定:在一個(gè)樹形結(jié)構(gòu)的包中,上層包可以導(dǎo)入下層包,而下層包不可以導(dǎo)入上層包。下層包的類要使用上層包的類時(shí),要在類前面加上包名。
- 圖形用戶界面設(shè)計(jì),需要導(dǎo)入系統(tǒng)包java.awt中的所有類;事件處理,需要導(dǎo)入事件處理包java.awt.event中的所有類。
- 一個(gè)類被嵌套定義在另一個(gè)類中,稱為內(nèi)部類INNER CLASSES或內(nèi)隱類。包含內(nèi)部類的類稱為外部類。
- 當(dāng)一個(gè)類只在某個(gè)類中使用,并且不允許除外部類外的其他類訪問時(shí),可考慮設(shè)計(jì)成內(nèi)部類。
- 在外部類中,一般通過一個(gè)內(nèi)部類的對(duì)象來(lái)訪問內(nèi)部類的成員變量或方法;在內(nèi)部類中,可以直接訪問外部類的所有成員變量和方法。
- 當(dāng)外部類引用內(nèi)部類時(shí),必須給出完整的名稱,且內(nèi)部類的類名不能與外部類的類名相同。
- 內(nèi)部類主要用來(lái)實(shí)現(xiàn)接口。
- JAVA是按類劃分程序模塊的,很好的實(shí)現(xiàn)了類的封裝性。
- OOP中,保證模塊正確性的基本方法是類的封裝性。類的封裝性是指類把成員變量和方法封裝為一個(gè)整體,這就劃分了模塊的界限。
- 保證模塊正確性的措施是由信息的隱藏性實(shí)現(xiàn)的。允許其他包程序訪問修改的成員變量/方法定義為public,只允許同一包中的其他類以及該類的子類訪問修改的成員變量/方法定義為protected,不允許其他類(內(nèi)部類除外)訪問修改的成員變量/方法定義為private。
- 和其他OOP語(yǔ)言C++相比,JAVA增加了包的概念。這樣同一包中類之間的信息傳遞就比較方便。
?第四章 類與繼承
- 繼承就是一個(gè)新類擁有全部被繼承類的成員變量和方法,它使得大型應(yīng)用程序的維護(hù)和設(shè)計(jì)變得更加簡(jiǎn)單。
- OOP的繼承機(jī)制提供了一種重復(fù)利用原有程序模塊資源的途徑。通過新類對(duì)原有類的繼承,既可以擴(kuò)充舊的程序模塊功能以適應(yīng)新用戶需求,也可以滿足新的應(yīng)用系統(tǒng)的功能要求。
- 由繼承而得到的新類為子類,被繼承的類為父類超類。子類直接的上層父類為直接父類,簡(jiǎn)稱父類。一個(gè)子類只能有一個(gè)直接父類。
- JAVA所有類都是由OBJECT類繼承派生而來(lái)。
- 繼承有兩種:多繼承和單繼承。JAVA只支持單繼承,但接口使JAVA實(shí)際上實(shí)現(xiàn)了多繼承。
- JAVA所有類構(gòu)成一顆類的層次樹結(jié)構(gòu)。
- 定義類有兩種:不指明父類和顯示的指明父類。若定義時(shí)不指明父類,則其父類是OBJECT類。顯示指明父類,用extends。
- 子類繼承原則:能繼承public和protected的成員變量方法,不能繼承private和默認(rèn)的成員變量方法。若子類聲明一個(gè)與父類同名的成員變量方法,則不能繼承,稱子類的成員變量隱藏了父類的同名成員變量,子類方法重寫了父類的同名方法。子類不能繼承父類的構(gòu)造方法。
- JAVA中,每個(gè)對(duì)象都有對(duì)自身引用的訪問權(quán),為this引用。
- super可以引用被子類隱藏的父類的成員變量方法,為super引用。經(jīng)常用在子類的構(gòu)造方法中。
- 子類隱藏父類的成員變量,不提倡,很少見;父類的某個(gè)方法不適合子類時(shí),子類可以重定義它,為子類對(duì)父類方法的覆蓋overriding,這是OOP常用的設(shè)計(jì)方法。
- 方法的重寫overloading和方法的覆蓋overriding是不同的概念,實(shí)現(xiàn)的功能也不同。
- 子類覆蓋父類方法時(shí),參數(shù)個(gè)數(shù)和參數(shù)類型必須相同。
- 子類對(duì)父類方法繼承有:完全繼承、完全覆蓋和修改繼承。
- JAVA以及所有OOP語(yǔ)言中,對(duì)象訪問方法的匹配原則是:從對(duì)象定義的類開始,逐層向上匹配尋找對(duì)象要訪問的方法。
- 繼承一方面可以大大簡(jiǎn)化程序設(shè)計(jì)的代碼,另一方面使得大型軟件的功能修改和功能擴(kuò)充較傳統(tǒng)的軟件設(shè)計(jì)方法容易許多。
- 方法的多態(tài)polymorphism指若以父類定義對(duì)象,并動(dòng)態(tài)綁定對(duì)象,則該對(duì)象的方法隨綁定對(duì)象不同而不同。
- 對(duì)象名和實(shí)際對(duì)象的這種聯(lián)系稱作對(duì)象的綁定binding。
- 對(duì)象的動(dòng)態(tài)綁定,指定一位類樹上層的對(duì)象名,可以綁定為所定義層類以及下層類的對(duì)象。對(duì)象的動(dòng)態(tài)綁定和類的繼承相結(jié)合使對(duì)象的方法有多態(tài)性。
- 方法的多態(tài)性支持Vector類的copyInto()方法用Object類參數(shù)(Object []anArrary)定義一次,就可以適合于所有類的對(duì)象。
- 構(gòu)造方法不能被聲明為抽象的。
- 不能有abstract static方法。
- 任何包含抽象方法的類必須被聲明為抽象類。抽象類不能直接用來(lái)定義對(duì)象。抽象類主要用于定義為若干個(gè)功能類同的類的父類。
- 抽象類一定是某個(gè)類或某些類的父類。若干個(gè)抽象類的子類要實(shí)現(xiàn)一些同名的方法。
- 用final指明不能被子類覆蓋的方法,為最終方法。
- 最終類可以保證一些關(guān)鍵類的所有方法,不會(huì)再以后的程序維護(hù)中,由于不經(jīng)意的定義子類而被修改;最終方法可以保證一些類的關(guān)鍵方法,不會(huì)在以后的程序維護(hù)中,由于不經(jīng)意的定義子類和覆蓋子類的方法而被修改。
- abstract和final不能合用。習(xí)慣上,public放在abstract/final的前面。
- 單繼承有結(jié)構(gòu)簡(jiǎn)單,層次清楚,易于管理,安全可靠的特點(diǎn)。多繼承則功能強(qiáng)大。
- 接口和抽象類非常相似,都是只定義了類中的方法,沒有給出方法的實(shí)現(xiàn)。
- 接口定義修飾符為缺省時(shí),只能被同一包中的方法訪問;public時(shí),接口被任何類的方法訪問。
- 若接口定義為默認(rèn)型訪問權(quán)限,則接口中的成員變量全部隱含為final static型。意味著它們不能被實(shí)現(xiàn)接口方法的類改變,并且為默認(rèn)訪問權(quán)限。
- 接口中定義的所有成員變量必須設(shè)置初值。
- 接口定義為public時(shí),接口中的所有方法和成員變量全部隱含為public型。
- 保存接口的文件名必須與接口名相同。一個(gè)文件可以包含若干個(gè)接口,但最多只能有一個(gè)public,其他必須為默認(rèn)。
- 為了實(shí)現(xiàn)接口,類必須實(shí)現(xiàn)定義在接口中的所有方法。若要實(shí)現(xiàn)多個(gè)接口,則用逗號(hào)分隔開接口名。
- JAVA API中定義了許多接口。
?第五章 JAVA API基礎(chǔ)
- JAVA語(yǔ)言的內(nèi)核非常小,僅包含基本數(shù)據(jù)類型和語(yǔ)句,強(qiáng)大功能主要體現(xiàn)在JAVA完備豐富、功能強(qiáng)大的JAVA API上。
- JAVA API(JAVA APPLICATION PROGRAMMING INTERFACE, JAVA應(yīng)用程序接口),是JAVA提供的組織成包結(jié)構(gòu)的許多類和接口的集合。
- JAVA API包含在JDK中。
- JAVA API語(yǔ)言包java.lang,包括Object類、Class類、Runtime類、Float類、String類和Math類;實(shí)用包java.util包括Arrays類、Vector類、Data類和Enumeration接口。
- java.lang包是使用最頻繁的包。為了簡(jiǎn)化編程,系統(tǒng)固定的默認(rèn)導(dǎo)入java.lang包,所以使用它時(shí)不用import。
- Object類是JAVA總所有類的根,在Object類中定義的成員變量和方法,在其他類中都可以使用。
- 當(dāng)兩個(gè)值比較、對(duì)象或變量與值比較、兩個(gè)變量比較時(shí),使用==;當(dāng)兩個(gè)對(duì)象比較時(shí),使用Object.equal()方法。
- System類提供了許多獲取或重新設(shè)置系統(tǒng)資源的靜態(tài)方法。
- System類中定義了三個(gè)和輸入輸出流有關(guān)的靜態(tài)成員變量in, out和err。
- Class類的實(shí)例代表一個(gè)正在運(yùn)行的JAVA應(yīng)用程序的類或接口。JAVA的基本數(shù)據(jù)類型,數(shù)組和關(guān)鍵字void都是由Class對(duì)象來(lái)表達(dá)。
- Class類沒有公共的構(gòu)造方法,Class對(duì)象由Java虛擬機(jī)自動(dòng)構(gòu)造。
- Class類的forName()方法可用于安裝驅(qū)動(dòng)程序。
- 每個(gè)JAVA應(yīng)用程序都有一個(gè)Runtime類的實(shí)例,從而允許應(yīng)用程序與其運(yùn)行的環(huán)境進(jìn)行交互。可利用Runtime類直接訪問運(yùn)行時(shí)環(huán)境資源。
- 語(yǔ)言包中提供了8個(gè)數(shù)據(jù)類型包裝類的類,把JAVA語(yǔ)言的8個(gè)基本數(shù)據(jù)類型(byte/short/int/long/float/double/char/boolean)包裝成相應(yīng)的類:Byte, Short, Integer, Long, Float, Double, Character, Boolean。
- Math類包含了一組基本的數(shù)學(xué)運(yùn)算的方法和常數(shù)。Math類中所有方法都定義為靜態(tài)的。還把E和PI定義為類的靜態(tài)成員變量。
- Math類是最終類final,所有不能從Math類中派生其他的新類。
- random()方法非常有用。把random()的返回值乘上一個(gè)整數(shù),可以得到任意區(qū)間的double類型的隨機(jī)數(shù);若轉(zhuǎn)換成int類型,可以得到任意區(qū)間的int類型的隨機(jī)數(shù)。
- java.util包主要包含集合框架、事件模型、日期和時(shí)間機(jī)制、國(guó)際化等的類和接口。
- Arrays類中包含有數(shù)組操作的一些常用方法,如排序和查找。
- 在使用binarySearch()方法時(shí),要求數(shù)組a中的元素已經(jīng)有序排列,否則返回值未定義。
- Vector類稱作向量類,實(shí)現(xiàn)了動(dòng)態(tài)的數(shù)組,用于元素?cái)?shù)量變化的對(duì)象數(shù)組。Vector類也用從0開始的下標(biāo),但和數(shù)組不同的是,當(dāng)Vector對(duì)象創(chuàng)建后,數(shù)組的元素個(gè)數(shù)會(huì)隨著Vector對(duì)象元素個(gè)數(shù)的增大和縮小變化。
- Date類提供了獲取當(dāng)前精確到毫秒時(shí)間的方法,并提供許多方法截取當(dāng)前時(shí)間的年月日等數(shù)值。
- Calendar類定義了許多如YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, DAY_OF_WEEK等成員變量,get()方法可以獲取這些成員變量的值。
- Enumeration接口主要用于集合類對(duì)象的序列化。所謂對(duì)象是序列化,就是說(shuō)可以依次取出該對(duì)象中的元素。
- 任何一個(gè)類,只要實(shí)現(xiàn)了Enumeration接口,其對(duì)象就是序列化的。
?第六章 圖形用戶界面
- 圖形用戶界面是計(jì)算機(jī)程序和用戶交流的圖形接口。
- 圖形用戶界面是由各種不同的組件按照一定的布局模式排列組成的。GUI中的組件一般包括菜單、按鈕、標(biāo)簽、文本編輯行等。同時(shí)與這些組件配合工作的還有一些相關(guān)的事件。
- JAVA中,GUI所用到的類和接口都是有AWT ABSTRACT WINDOW TOOLKIT提供。AWT是JAVA API的一部分。
- java.swing包可以根據(jù)換進(jìn)過來(lái)調(diào)整GUI的外觀和感覺,使得一個(gè)程序可以使用各種不同的環(huán)境。
- Component類是一個(gè)抽象類,是AWT中所有圖形組件類的父類。
- add方法可用于在任何組件類對(duì)象中添加任何組件類對(duì)象。
- Container類主要用來(lái)防止其他組件,所以稱作容器。它繼承自Component類。容器類的派生子類有:框架Frame、面板Panel、窗口Window、對(duì)話框Dialog等。
- Panel類是一個(gè)放置其他圖形組件(包括其他Panel)的容器。
- Frame類是Window的子類,主要用來(lái)放置其他組件。Frame類提供了設(shè)置標(biāo)題、改變窗口大小等方法。
- Frame類對(duì)象是一個(gè)可在Window中獨(dú)立運(yùn)行的窗口,而Panel類對(duì)象不能單獨(dú)運(yùn)行,只能放在容器中(可以放在Frame中,也可以嵌入另一個(gè)Panel中)。
- Component類的子類除Container類外,還有Label標(biāo)簽類、Button按鈕類、TextField文本輸入行類、TextArea多行文本輸入?yún)^(qū)類、Checkbox復(fù)選框類、List列表類、Choice下拉列表類等。任何一個(gè)容器類對(duì)象本身也可以放置在任何一個(gè)容器類對(duì)象中。
- Label類是用來(lái)顯示文本text的類。
- TextField類用來(lái)創(chuàng)建允許用戶編輯的單行文本組件。TextField可以獲得焦點(diǎn),而Lable不能。所以TextField可編輯,而Label不可編輯。TextField一般用作程序的輸入。
- TextArea類用來(lái)創(chuàng)建允許用戶編輯的多行文本輸入組件,組件中的字符串可設(shè)定為可編輯的或只讀的。TextArea類還提供水平或垂直的滾動(dòng)條。
- FlowLayout布局管理器的功能是:在此框架中加入的組件將自上而下、自左而右安排放置。
- Checkbox類用來(lái)創(chuàng)建復(fù)選框組件。將幾個(gè)Checkbox對(duì)象組成一組需用到CheckboxGroup類。
- 框架中組件的位置由setBounds方法來(lái)確定(不使用任何布局管理器)。
- List組件給用戶提供了一個(gè)滾動(dòng)的文本項(xiàng)清單,用戶可以選中其中一項(xiàng)或多項(xiàng)文本。
- Choice是一個(gè)下拉式的數(shù)據(jù)選項(xiàng),當(dāng)前的選項(xiàng)會(huì)顯示在選中列表框中。
- 列表只能顯示當(dāng)前選擇的項(xiàng)目,而下拉列表可以顯示多個(gè)項(xiàng)目。
- MenuComponent類直接繼承自O(shè)bject的菜單組件的基本類,它及其子類是專門用來(lái)創(chuàng)建菜單類組件。
- MenuBar是放置菜單的容器。可以通過Frame類的setMenuBar()方法把MenuBar對(duì)象加入一個(gè)框架中。
- Menu是菜單欄上放置的菜單。每個(gè)菜單由一些菜單項(xiàng)組成。
- 所以菜單中的菜單項(xiàng)都是MenuItem類或者它的子類的對(duì)象。
- 一般在這幾種情況下系統(tǒng)會(huì)調(diào)用paint()方法繪制圖形:當(dāng)一個(gè)組件第一次顯示時(shí);當(dāng)容器容器重新調(diào)整大小時(shí);當(dāng)容器從非作用窗口變?yōu)樽饔么翱跁r(shí)。
- 當(dāng)程序運(yùn)行在較慢的平臺(tái)上或計(jì)算機(jī)較忙時(shí),應(yīng)該考慮指定在多長(zhǎng)時(shí)間內(nèi)必須執(zhí)行repaint()方法,否則就放棄。
- AWT調(diào)用update()方法來(lái)響應(yīng)對(duì)repaint()方法的調(diào)用。調(diào)用update()或paint()之前,圖形的外觀將不會(huì)發(fā)生改變。update()更新圖形的步驟:先通過填充組件的背景色來(lái)清除該圖形,再設(shè)置圖形的顏色為該圖形的前景色,最后調(diào)用paint()方法完整的重新繪制該圖形。
- Color類用來(lái)設(shè)置文本或圖形的顏色。
- JAVA中顏色定義有兩種方法:Color類有很多表示顏色的常量;用RGB值設(shè)置,每種顏色的色值范圍在0~255之間,可以靈活的定義非標(biāo)準(zhǔn)色。
- Font類用來(lái)定義文字的字體、風(fēng)格和大小等特性。
- Graphics類用來(lái)繪制各種圖形和字符串。雖然Graphics類提供的方法是抽象方法,但編程時(shí)可以直接使用,因?yàn)橄到y(tǒng)內(nèi)部已經(jīng)實(shí)現(xiàn)了這些抽象方法。
- 當(dāng)沒有設(shè)置顏色時(shí),組件會(huì)使用黑色(默認(rèn)色)。
- main()方法中不需要調(diào)用paint()方法,但程序設(shè)計(jì)者需要重定義paint()方法來(lái)告訴系統(tǒng)需要繪制的圖形。
- 組件在容器中的擺放方式為布局。JAVA中不使用坐標(biāo)這種絕對(duì)定位的方法,而是用布局管理器進(jìn)行相對(duì)定位。優(yōu)點(diǎn)是顯示界面能夠自動(dòng)適應(yīng)不同分辨率的屏幕。
- FlowLayout布局管理器從左到右排列組件,一行放滿后,再?gòu)牡诙虚_始。它是容器類組件Panel的默認(rèn)布局管理器。當(dāng)容器大小發(fā)生變化時(shí),容器上組建的排放位置會(huì)發(fā)生變化,規(guī)律是組件的大小不變,但是相對(duì)位置會(huì)發(fā)生變化。
- FlowLayout構(gòu)造方法后兩個(gè)參數(shù)的單位都是像素。
- BorderLayout布局管理器按照東西南北中五個(gè)區(qū)域放置容器中的組件。它是容器類組件Window、Frame和Dialog等的默認(rèn)布局管理器。當(dāng)容器大小發(fā)生變化時(shí),規(guī)律是組件的相對(duì)位置不變,大小發(fā)生變化。
- GridLayout布局管理器可以將容器分為若干個(gè)大小相等的矩形。
- 對(duì)于復(fù)雜的布局,有時(shí)還需要用到容器Panel組件。
- 事件源是產(chǎn)生事件的圖形組件。用戶對(duì)事件源進(jìn)行的操作叫做事件。事件的屬性信息包含事件的名稱、來(lái)源、產(chǎn)生時(shí)間等。
- 事件處理過程包括事件的接收和事件的處理兩部分。事件的接收由系統(tǒng)負(fù)責(zé)。
- 事件發(fā)生后,系統(tǒng)把時(shí)間傳遞給事件處理程序的方式稱為事件模型。
- 層次事件模型首先傳遞給直接相關(guān)的組件;若組件沒對(duì)事件進(jìn)行處理,則向上傳遞給組件所在的容器;若容器沒處理,則繼續(xù)向上傳遞給容器所在的容器。直至頂層容器。
- 委托事件模型中事件的傳遞由事件監(jiān)聽器進(jìn)行管理。任何事件處理程序首先向事件監(jiān)聽器注冊(cè),系統(tǒng)監(jiān)聽到后就委托給事件監(jiān)聽器。事件監(jiān)聽器通過分析時(shí)間的屬性信息,把事件交給已注冊(cè)的相應(yīng)事件處理器來(lái)處理。JDK1.1以后的版本都采用這個(gè)。
- ActionListener接口中只定義了一個(gè)處理按鈕單擊事件的方法actionPerformed()。
- JAVA中的組件就是事件源,它可以產(chǎn)生一個(gè)或多個(gè)事件。java.awt.AWTEvent類是所有事件類的父類,所以事件類都由它派生出來(lái)。
- 一個(gè)事件類對(duì)應(yīng)一個(gè)事件監(jiān)聽器接口,命名方法是:去掉事件類后邊的Event,換成Listener。不同的監(jiān)聽器接口中定義了不同的處理方法。
- 一個(gè)事件處理器創(chuàng)建了以后,需要在程序中用語(yǔ)句來(lái)注冊(cè)。addListener()是Component類提供的方法。
- 與鍵盤事件KeyEvent相對(duì)應(yīng)的鍵盤事件監(jiān)聽器接口是KeyListener。當(dāng)鍵盤剛按下去時(shí),調(diào)用keyPressed()方法;鍵盤抬起來(lái)時(shí),調(diào)用keyReleased()方法;鍵盤單擊一次時(shí),調(diào)用keyTyped()方法。
- 程序可以有幾種方式實(shí)現(xiàn)事件監(jiān)聽器接口中方法:類定義時(shí)加上implements,然后再類中實(shí)現(xiàn)接口中的方法;用內(nèi)部類定義和實(shí)現(xiàn)事件監(jiān)聽器接口。
- 若暫時(shí)不處理某個(gè)窗口操作(事件),可以用一個(gè)空語(yǔ)句實(shí)現(xiàn)相應(yīng)的方法。
- 若要實(shí)現(xiàn)某個(gè)事件監(jiān)聽器接口,就必須實(shí)現(xiàn)該事件監(jiān)聽器接口中所以的方法,即使有些方法為空,也必須實(shí)現(xiàn)。為了簡(jiǎn)化設(shè)計(jì),JAVA為一些事件的Listener(監(jiān)聽器)接口提供了事件適配器Adapter類。WindowAdapter類實(shí)現(xiàn)了WindowListener接口的所有方法(內(nèi)容為空)。需要實(shí)現(xiàn)WindowListener接口時(shí),只需要繼承WindowAdapter類,并覆蓋相應(yīng)方法即可。
?
轉(zhuǎn)載于:https://www.cnblogs.com/pegasus923/p/4006500.html
總結(jié)
以上是生活随笔為你收集整理的学习笔记之Java程序设计实用教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信入坑第二弹 如何申请第二个微信号 微
- 下一篇: Java编码问题