




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Java語言程序設(shè)計(jì) 第1章 Java語言基礎(chǔ)Java語言的特點(diǎn)。 Java語言主要有以下特點(diǎn):1) 強(qiáng)類型:強(qiáng)制約束程序員必須遵守更多的編程規(guī)定,編譯器能檢測(cè)程序中盡可能多的錯(cuò)誤。2) 編譯和解釋:用Java編寫的源程序在計(jì)算機(jī)上運(yùn)行必須經(jīng)過編譯和解釋執(zhí)行兩個(gè)階段。編譯程序先江Java源程序翻譯成與機(jī)器無關(guān)的字節(jié)碼(bytecode),不是通常的編譯程序?qū)⒃闯绦蚍g成特定計(jì)算機(jī)的機(jī)器代碼。運(yùn)行時(shí),由Java虛擬機(jī)(JVM)中的Java解釋器負(fù)責(zé)將字節(jié)碼文件解釋成為特定的機(jī)器碼進(jìn)行運(yùn)行。3) 自動(dòng)無用內(nèi)存回收功能:垃圾收集器(garbage collector)可以自動(dòng)回收程序不再使用的內(nèi)存,
2、避免程序遺漏或重復(fù)釋放內(nèi)存。4) 面向?qū)ο?) 與平臺(tái)無關(guān):與平臺(tái)無關(guān)是對(duì)程序可移植性最直接最有效的支持,“一次編程,到處運(yùn)行”。可移植性源于兩方面:1. Java的編譯和解釋的特征(Java虛擬機(jī));2. Java采用基于國際標(biāo)準(zhǔn)的數(shù)據(jù)類型,在任何平臺(tái)上,同一種數(shù)據(jù)類型是一致的。6) 安全性:取消指針,避免因指針使用不當(dāng),訪問不該訪問的內(nèi)存空間;提供數(shù)組下標(biāo)檢測(cè)機(jī)制,禁止程序越界訪問內(nèi)存;編譯執(zhí)行過程中進(jìn)行比較嚴(yán)格的檢查:在解釋執(zhí)行前,對(duì)字節(jié)碼文件作檢查,防止被惡意改動(dòng)的字節(jié)碼文件被解釋執(zhí)行而破壞系統(tǒng);瀏覽器限制下載的小應(yīng)用程序不允許訪問本地文件,避免其破壞本地文件。7) 分布式計(jì)算8) 多
3、線程:Java的運(yùn)行環(huán)境采用多線程實(shí)現(xiàn)。Java語言提供語言級(jí)多線程支持,用Java語言能直接編寫多線程程序。兩種類型的Java程序。 Java程序可分為應(yīng)用程序(Application)和小應(yīng)用程序(Applet)兩類。這兩種程序的主要區(qū)別:1) 小應(yīng)用程序需要嵌入在HTML網(wǎng)頁中,當(dāng)網(wǎng)頁被瀏覽時(shí),在瀏覽器中運(yùn)行;且其運(yùn)行受到嚴(yán)格的安全限制。2) 應(yīng)用程序則獨(dú)立運(yùn)行,不嵌入網(wǎng)頁,也沒有那些限制。3) 另外,這兩類程序在代碼編寫上也有差異:一個(gè)小應(yīng)用程序必須定義為java.applet.Applet類的子類,而不必定義main()方法;應(yīng)用程序一般不必為java.applet.Applet類的
4、子類,而必須在一個(gè)類中定義main()方法。注釋:1) 行注釋/2) 塊注釋/* . */3) 文檔注釋/* */Java程序的開發(fā)過程 java編譯器java編譯器字節(jié)碼文件.class編寫源程序文件.javaJava編譯器字節(jié)碼文件.class由Web瀏覽器執(zhí)行有Java解釋器執(zhí)行應(yīng)用程序Applet通常在JDK目錄下有bin、demo、lib、jre等子目錄,其中bin目錄保存了javac(編譯器)、java(解釋器)、jdb(調(diào)試器)、appletviewer(java Appelt解釋器)等命令文件;Java的字符集和標(biāo)識(shí)符。 Java語言使用Unicode字符集,字符采用雙字節(jié)的表
5、示方式,共有65535個(gè)字符,最前面的128個(gè)字符與標(biāo)準(zhǔn)的ASCII字符一致,包括:1) 數(shù)字字符10個(gè)(09)2) 英文大小寫字母各26個(gè)(AZ, az)3) 下劃線(_)、美元符號(hào)($)4) 文字字符(漢字,日文片假名、平假名,朝鮮文字等)5) 其他用于構(gòu)成特殊符號(hào)的字符集標(biāo)識(shí)符可以用來標(biāo)識(shí)文件名、變量名、類名、接口名和成員方法名等,其構(gòu)造規(guī)則如下:1) 標(biāo)識(shí)符由Java字母和Java數(shù)字組成;2) 首字符必須是Java字母;3) 除去關(guān)鍵字、false、true和null;4) 所有標(biāo)識(shí)符是區(qū)分大小寫的。關(guān)鍵字是Java語言保留的一些英文單詞,具有特殊的含義。例如:public、stat
6、ic和class,具有特殊用途,不能作為標(biāo)識(shí)符使用?;緮?shù)據(jù)類型。 布爾型(boolean)1個(gè)字節(jié)(true或false)字符型(char)16位字節(jié)型(byte)8位短整型(short)16位整數(shù)型(int)32位長整型(long)64位單精度浮點(diǎn)型(float)32位雙精度浮點(diǎn)型(double)64位Java直接量是直接顯式地表示基本數(shù)據(jù)類型數(shù)據(jù)、字符串(String)值和空引用值(null)的表達(dá)式,而且在該表達(dá)式中不含運(yùn)算。 布爾(boolean)直接量只有兩個(gè):true和false字符(char)直接量:如a,6,貓,u0061,n整型(byte,short,int)直接量:如-2
7、7,+0123,0x56ab長整型(long)直接量:如-27L,+0123L,0x56abL浮點(diǎn)數(shù)(float,double)直接量:如1.5,45.6D,100d,76.4e8,-32.0 ,1.5F, 45.6f, 76.4E-8F,-32.0F字符串(String)直接量:如“Hello World!”引用數(shù)據(jù)類型的直接量:null變量在計(jì)算機(jī)內(nèi)部對(duì)應(yīng)著一個(gè)存儲(chǔ)單元,而且總是具有某種數(shù)據(jù)類型:基本數(shù)據(jù)類型或引用數(shù)據(jù)類型。每個(gè)變量均具有:名字、類型、一定大小的存儲(chǔ)單元以及值。變量總是具有與其數(shù)據(jù)類型相對(duì)應(yīng)的值?;緮?shù)據(jù)類型:變量的存儲(chǔ)單元中存放的是具體的布爾值或數(shù)值;引用數(shù)據(jù)類型:變量的
8、存儲(chǔ)單元中存放的是引用值,引用值一般用來指向某個(gè)具體的對(duì)象。如果引用值是null,則該引用值不指向任何對(duì)象。在使用變量前,必須先定義該變量,而且一般要求先初始化。例如:int studentNumber; /定義單個(gè)變量studentNumber=30; /給變量賦值double velocity, distance; /定義多個(gè)變量int studentNumber=30; /定義變量,并賦初值第2章 運(yùn)算和語句賦值運(yùn)算。 l 簡單賦值運(yùn)算,格式如下:變量=表達(dá)式不是“相等”運(yùn)算符(“=”)。賦值語句中的數(shù)據(jù)類型轉(zhuǎn)換只能是簡單類型向復(fù)雜類型轉(zhuǎn)換,不能從復(fù)雜的轉(zhuǎn)換成簡單的。轉(zhuǎn)換規(guī)則如下:byt
9、eshortintlongfloatboublel 復(fù)合賦值運(yùn)算,格式如下:變量 雙目算術(shù)運(yùn)算符= 表達(dá)式包括:+=、-=、*=、/=、&=、|=、%=、=和=。例如:a+=b等價(jià)于a=a+b,a/=b+c等價(jià)于a=a/(b+c)。算術(shù)運(yùn)算符。 算術(shù)運(yùn)算符包括:+(取正), -(取負(fù)) (單目運(yùn)算) +, -, *, /, % (雙目運(yùn)算)注意事項(xiàng):1) 當(dāng)操作數(shù)是定點(diǎn)類型數(shù)據(jù)時(shí),應(yīng)當(dāng)注意運(yùn)算是否會(huì)溢出int i=123456;i=i*i; /溢出2) 整數(shù)除法:截去余數(shù),7/5結(jié)果為13) 考慮除數(shù)是否可能為0或很小的數(shù)4) 取模:返回余數(shù),可以對(duì)定點(diǎn)或浮點(diǎn)數(shù)進(jìn)行取模運(yùn)算,7%5結(jié)果為2;1
10、5.25%(-0.5)結(jié)果為0.25自增自減運(yùn)算。 自增(+)和自減(-):操作數(shù)必須是變量;有前置和后置兩種運(yùn)算int n=3;int i=n+, j=n-;/i=3,j=4,n=3int k=+n, m=-n;/k=4,m=3,n=3前綴 和后綴, 對(duì)變量本身,效果相同;但表達(dá)式的值不相同。運(yùn)算對(duì)象只能是變量,不能是常量或表達(dá)式,如:7+;(i+j)-都是非法的。關(guān)系運(yùn)算符。 關(guān)系運(yùn)算符包括: 、=、= 和 !=,關(guān)系運(yùn)算生成一個(gè)布爾結(jié)果。例如:1 2;/false3.5 != 1; /true 51.5 = 23.0; /true540 = 654; /true24 = 3*8; /tr
11、ueboolean test1=(10 10); /test1=false;關(guān)系運(yùn)算符的優(yōu)先級(jí):、=優(yōu)先于=、!=;、=優(yōu)先級(jí)相同,結(jié)合性是自左向右;=、!= 優(yōu)先級(jí)相同,結(jié)合性是自左向右。【注意】Java不允許將一個(gè)數(shù)字作為布爾值使用,這與c或c+不同。例如:當(dāng)要表達(dá)“如果a不等于0”這個(gè)條件不能寫作 if(a)而要寫作 if(a!=0)邏輯運(yùn)算符。 邏輯運(yùn)算的操作數(shù)必須是布爾型,結(jié)果也是布爾型??梢杂?種基本操作:與(&)、或(|)、非(!)。短路規(guī)則:一旦能夠明確無誤的確定整個(gè)表達(dá)式的值,就不再計(jì)算表達(dá)式余下的部分了。因此,整個(gè)邏輯表達(dá)式靠后的部分可能不會(huì)計(jì)算。比較:(birthday
12、= true) & (+age = 65)(birthday = true) | (+age = 65)! 優(yōu)先于 雙目算術(shù)運(yùn)算符 優(yōu)先于 關(guān)系運(yùn)算符 優(yōu)先于 & 優(yōu)先于|條件運(yùn)算符。 條件運(yùn)算符是一個(gè)三目運(yùn)算符,一般形式為:邏輯表達(dá)式 ? 表達(dá)式1 : 表達(dá)式2例如: int i = 5; int k = (i=0) ? 1 : -1;條件運(yùn)算符的結(jié)合性為“自右至左”。例如: x y ? x : u v ? u : v 等價(jià)于x y ? x : (u v ? u : v)位運(yùn)算和位移運(yùn)算。 位運(yùn)算符包括:&、|、移位運(yùn)算符有 : 、和 帶符號(hào)右移:左端空出的位填原符號(hào)位不帶符號(hào)右移(邏輯右移
13、):左端空出的位填0(C或C+中無此運(yùn)算符)位運(yùn)算操作是:先將整數(shù)寫成二進(jìn)制形式(補(bǔ)碼),然后按位操作,最后產(chǎn)生一個(gè)新的數(shù)注意: 只用于定點(diǎn)類型數(shù)據(jù)(整型)基本語句。 表達(dá)式語句:k=k+2;空語句 ;break語句:break; 用于循環(huán)或選擇continue語句:continue; 同上return語句:return;, return 表達(dá)式;,該語句的執(zhí)行將結(jié)束方法的執(zhí)行,只能出現(xiàn)在方法體中。復(fù)合語句。 用花括號(hào)引起來的兩條或兩條以上語句,順序執(zhí)行但作為一個(gè)整體。在復(fù)合語句中可以定義自己專用的臨時(shí)變量。if語句。 if語句的格式是:if (布爾表達(dá)式) 語句或if (布爾表達(dá)式) 一條或
14、多條語句例如:if(score = 60) System.out.println(Passed);if-else語句。 if-else語句的格式是:if (布爾表達(dá)式) 語句1或語句塊1else 語句2或語句塊2例如:if (score = 60) System.out.println(Passed!);else System.out.println(Failed!);標(biāo)準(zhǔn)嵌套if-else控制結(jié)構(gòu)可實(shí)現(xiàn)多路選擇,用在想從多個(gè)候選項(xiàng)中選擇且只選出一項(xiàng)時(shí)。例如:if (score90) System.out.println(“A”) ;else if (score=80) System.out.
15、println(“B”) ;else if (score=60) System.out.println(“C”) ;else System.out.println(“F”) ;switch語句。 switch語句的格式是:switch (表達(dá)式)case 值1: 語句組1; break;case 值2: 語句組2; break; case 值n: 語句組n; break;default: 語句組(n+1);switch表達(dá)式的數(shù)據(jù)類型可以是基本類型char、byte、short、int;或是這四種基本類型相對(duì)應(yīng)的包裝類java.lang.Character、java.lang.Byte、jav
16、a.lang.Short、java.lang.Integer或enum枚舉類型。跟在case后的必須是常量表達(dá)式,其值的類型應(yīng)當(dāng)與switch表達(dá)式的數(shù)據(jù)類型相匹配。Switch語句的執(zhí)行規(guī)則:1) 求出表達(dá)式的值;2) 找出給定值與表達(dá)式相符的case語句,執(zhí)行此case標(biāo)號(hào)后的所有語句(除非遇到break語句),直到switch語句結(jié)束;3) 若沒有匹配的case語句,則轉(zhuǎn)向defalult語句,執(zhí)行default標(biāo)號(hào)后的所有語句,直到switch語句結(jié)束。4) 若沒有匹配的case語句,也沒有defalult語句,則switch語句的這次執(zhí)行立即結(jié)束。trycatch語句。 try 語句
17、塊/執(zhí)行該語句塊,可能會(huì)發(fā)生異常 catch (異常類型e) 異常發(fā)生時(shí)要執(zhí)行的語句塊 finally 無論異常發(fā)生與否,都要執(zhí)行的語句塊說明:1) Catch和 finally 必須和一個(gè)try相關(guān)聯(lián)2) try至少要有一個(gè)catch, 可以有多個(gè)3) finally語句塊是可選的while語句。 while語句的格式:while (布爾表達(dá)式) 語句或語句塊當(dāng)條件(布爾表達(dá)式)為true ,則不斷地執(zhí)行語句或語句塊?!皐hile” 循環(huán)的中止條件是布爾表達(dá)式變?yōu)閒alse,如果布爾表達(dá)式一開始就為false,則不執(zhí)行循環(huán)體。有時(shí)循環(huán)條件很難寫出,可以直接使用true, 格式如下:While
18、 (true) If( 條件表達(dá)式) break;do-while語句。 do-while語句的格式是:do 語句或語句塊while (布爾表達(dá)式);do-while和while結(jié)構(gòu)唯一的區(qū)別就是do-while中的語句至少會(huì)執(zhí)行一次,即便布爾表達(dá)式第一次就被計(jì)算為false。注意最后的分號(hào),一定不能省略。for語句。 for語句的格式是: for (初始化表達(dá)式; 條件表達(dá)式; 更新表達(dá)式) 語句或語句塊例如: int counter, sum; for(counter=1,sum=0; counter=100; counter+) sum+=counter; System.out.prin
19、tln(“counter=“ + counter + ”, sum=” + sum);注意變量counter和sum的作用域,若將它們改在for語句內(nèi)部定義,會(huì)有何不同。在for語句的初始化和更新部分,可以使用多個(gè)由逗號(hào)分隔的表達(dá)式,這些表達(dá)式都會(huì)獨(dú)立執(zhí)行。例如: for(int 1=1, j=i+10; i 5; i+, j=i*2) System.out.println(“i = ” + i + “ j = ” + j); 注意:通過逗號(hào)操作符,可以在初始化部分定義多個(gè)變量,但這些變量必須具有相同的類型。無論在初始化還是更新部分,表達(dá)式都是順序執(zhí)行的。嵌套的循環(huán)結(jié)構(gòu)。 for循環(huán)的嵌套wh
20、ile循環(huán)的嵌套do.while循環(huán)的嵌套以上三個(gè)任意之間的嵌套continue語句。 格式:continue;功能:跳過continue之后的語句,重新判斷循環(huán)控制條件,決定是否繼續(xù)循環(huán)。說明:(1) continue語句只能用在三種循環(huán)語句的循環(huán)體中。(2) continue語句通常和if語句聯(lián)合使用,從而構(gòu)成其后的部分循環(huán)體是否執(zhí)行的單分支結(jié)構(gòu)。break語句。 格式:break;功能:強(qiáng)制結(jié)束當(dāng)前的循環(huán),不再執(zhí)行循環(huán)體中break后面的語句。說明:(1) break語句只能在三種循環(huán)語句的循環(huán)體和switch語句中使用。(2) 在循環(huán)語句中break通常和if語句聯(lián)合使用,用于構(gòu)成第二
21、個(gè)退出循環(huán)的機(jī)會(huì)。Package語句。 程序包相當(dāng)于其它語言的函數(shù)庫,系統(tǒng)提供大量的程序包,自己編寫的類也可以組成程序包,但一定要用package語句聲明。格式: package 包名;包名是一個(gè)目錄名,可以有路徑。import 語句。 用來引入所需要的類格式:import 包名.類名;例如: import java.util.Date;/引入Date類如果從一個(gè)包中引入多個(gè)類,可以用通配符“*”, 如: import java.awt.*;一個(gè)java源程序中可以有多個(gè)import語句, 它們必須出現(xiàn)在package語句之后;類的定義之前。Java程序的基本結(jié)構(gòu)。 package 包名;im
22、port 包名.類名; / 更多的import語句public class 類名int val= /變量定義語句Public static void main( String args )/ 方法定義 / 變量定義和控制語句構(gòu)成的方法體 第3章 面向?qū)ο缶幊袒A(chǔ)抽象 抽象是程序設(shè)計(jì)最經(jīng)常使用的技術(shù)之一,是有效控制程序復(fù)雜性的重要手段。在面向?qū)ο蟪绦蛟O(shè)計(jì)中:把一系列復(fù)雜的屬性與動(dòng)作組織到單個(gè)模塊中,然后把該模塊當(dāng)作一個(gè)整體(對(duì)象)來對(duì)待,就是一種抽象形式。把一個(gè)問題分解成構(gòu)成它的對(duì)象,也是一種抽象形式。對(duì)象(object)萬物皆為對(duì)象,它存儲(chǔ)數(shù)據(jù),還可以要求它在自身上執(zhí)行操作。對(duì)象具有狀態(tài)、行為
23、和標(biāo)識(shí)。這意味著每一個(gè)對(duì)象可以擁有內(nèi)部數(shù)據(jù)(它們給出該對(duì)象的狀態(tài))和方法(它們產(chǎn)生行為),并且每一個(gè)對(duì)象都可以唯一地與其他對(duì)象區(qū)分開來(每一個(gè)對(duì)象在內(nèi)存中都有唯一一個(gè)地址)。消息(message)在面向?qū)ο罂蚣苤?,?duì)象之間通過相互發(fā)送消息來進(jìn)行交互。在Java里,通過調(diào)用方法來傳遞消息。類(class)類定義了某種類型的所有對(duì)象所具有的屬性與行為,是用來創(chuàng)建對(duì)象的藍(lán)圖或模板;對(duì)象是某個(gè)確切類的實(shí)例。在創(chuàng)建一個(gè)類的實(shí)例(對(duì)象)之前必須定義這個(gè)類。繼承性(inheritance) 多態(tài)性(polymorphism)類 (1)類的聲明類的定義格式如下:類修飾詞 class 類名 extends 父類
24、名 implements 接口名稱列表 類體 / 通常先定義成員變量,再定義構(gòu)造方法,最后編寫成員方法(2)成員變量成員變量的定義格式如下:修飾詞列表 類型 變量名或帶初始化的變量名列表;例如:private float height, weight; private String name, sex, no;(3)方法類的成員方法:簡稱方法,用來實(shí)現(xiàn)類的各種功能。方法的定義格式如下: 方法修飾詞列表 返回類型 方法名(方法的參數(shù)列表) 方法體 例如: public int mb_method() public static void main(String args) 例3.2(若某方法的參
25、數(shù)名或局部變量名與類的成員變量名相同,則成員變量名在這個(gè)方法內(nèi)部暫時(shí)被隱藏。)例3.3(關(guān)鍵字this:對(duì)當(dāng)前對(duì)象的引用) (4)構(gòu)造方法構(gòu)造方法用來創(chuàng)建類的實(shí)例,并對(duì)對(duì)象初始化。構(gòu)造方法的聲明和一般方法聲明非常相似,但是它必須和類同名,并且不能聲明返回值類型。構(gòu)造方法的一般形式: public ( ) 默認(rèn)的構(gòu)造方法:當(dāng)一個(gè)類沒有包含構(gòu)造方法時(shí),Java將自動(dòng)提供一個(gè)默認(rèn)的構(gòu)造方法。對(duì)象 (1)聲明對(duì)象聲明一個(gè)對(duì)象只是命名一個(gè)引用變量,這個(gè)引用變量和對(duì)象關(guān)聯(lián),可以用來引用該對(duì)象。聲明一個(gè)對(duì)象的格式如下: 類名 變量名(對(duì)象名); 例如,聲明對(duì)象: Point p1,p2;不要把聲明一個(gè)對(duì)象和
26、創(chuàng)建一個(gè)對(duì)象混淆起來。聲明對(duì)象并不會(huì)為這個(gè)對(duì)象分配內(nèi)存。(2)創(chuàng)建對(duì)象創(chuàng)建對(duì)象:使用new操作符和構(gòu)造方法。構(gòu)造方法是在對(duì)象實(shí)例化過程中使用的特殊方法;操作符new為新的對(duì)象分配一片內(nèi)存并將它存儲(chǔ)在那里,然后返回對(duì)象的地址。格式為: new 構(gòu)造方法名(構(gòu)造方法的調(diào)用參數(shù)列表) 例如: p1 = new Point(); p2 = new Point(30,40);聲明和創(chuàng)建對(duì)象也可以一起完成,例如: Point p3 = new Point(), p4 = new Point(60,70);(3)對(duì)象的內(nèi)存模型在Java中有兩種類型的變量:基本類型與引用類型。基本類型的變量總是存放一個(gè)該類型
27、的值;引用變量實(shí)際上存放的是它所引用的對(duì)象的地址,而不是存放對(duì)象本身。在Java中,主要有數(shù)組和類類型是引用類型。 (4)使用對(duì)象程序使用對(duì)象:訪問對(duì)象的成員變量,一般形式為: 對(duì)象名.成員變量名調(diào)用對(duì)象的方法,一般形式為: 對(duì)象名.方法名(參數(shù)表)實(shí)例變量和類變量 被關(guān)鍵字static修飾的變量為類變量(靜態(tài)變量),未被關(guān)鍵字static修飾的變量為實(shí)例變量。 例如: class D float x; / 實(shí)例變量 static int y; /類變量 每個(gè)對(duì)象都有自己的實(shí)例變量,不同對(duì)象的實(shí)例變量也將被分配不同的內(nèi)存空間。類變量則被一個(gè)類的所有對(duì)象共享,在內(nèi)存中也只有一處。可以通過類名或?qū)?/p>
28、象名引用類變量。實(shí)例方法和類方法 被關(guān)鍵字static修飾的方法為類變量(靜態(tài)方法),未被關(guān)鍵字static修飾的方法為實(shí)例方法。例3.7注意:類中的實(shí)例方法可以互相調(diào)用,并可調(diào)用類方法。類方法也能相互調(diào)用,但不能直接調(diào)用實(shí)例方法,而要通過在類方法中引入局部對(duì)象,通過對(duì)象名調(diào)用實(shí)例方法。類中的實(shí)例方法中可以直接使用實(shí)例變量,也可直接使用類變量。但類方法能直接使用類變量,卻必須通過在類方法中引入的局部對(duì)象,用對(duì)象名引用實(shí)例變量。類方法可以通過類名或?qū)ο竺{(diào)用。例3.8訪問權(quán)限 設(shè)置訪問權(quán)限實(shí)現(xiàn)訪問控制,為類的成員設(shè)置訪問權(quán)限,保護(hù)類的成員不在非期望的情況下被引用。在類的聲明中,除了類的方法總能訪
29、問類的成員變量外,為其他類的方法訪問本類的成員變量和方法,提供了四種訪問權(quán)限:public:無訪問限制,其他類的方法都能訪問private:最強(qiáng)訪問限制,其他類的方法都不能訪問protected:僅限子類或同一包中的類的方法訪問:只允許同一包中的類的方法訪問繼承 繼承性 - 軟件重用的一種方法繼承使得一個(gè)類可通過擴(kuò)展現(xiàn)有類來定義擴(kuò)展聲明的新類稱為子類,原有的類稱為超類(父類)子類繼承超類的變量和方法;子類可以增加新的變量和方法;子類可以重寫(第51頁)從超類中繼承的方法。子類對(duì)父類的繼承性,Java語言有以下規(guī)定:子類自然地繼承其父類中非private的成員變量作為自己的成員變量子類自然地繼承
30、其父類中非private的成員方法作為自己的成員方法多態(tài)性 靜態(tài)的多態(tài)性:重載,在編譯時(shí)就能夠被識(shí)別針對(duì)的是同一個(gè)類內(nèi)的同名方法(重載的方法)。動(dòng)態(tài)的多態(tài)性:重寫,在程序運(yùn)行時(shí)才被識(shí)別(動(dòng)態(tài)聯(lián)編)重寫父類的方法(同樣簽名)。多層繼承 繼承關(guān)系具有傳遞性。繼承聲明的新類,又可被其他類再繼承,從而構(gòu)成多層繼承。 Java面向?qū)ο蟮钠渌麢C(jī)制 (1) final類、final方法和final變量關(guān)鍵字final的含義為“最終的”,“不能改變的”。用final修飾類,表明此類不能派生出子類,例如:final class C 用final修飾方法,表明此方法不能被子類的方法重寫(覆蓋) 例如:final
31、int f( int x, int y ) 用final修飾變量,表明此變量一旦賦值,則不能再被改變,相當(dāng)于一個(gè)常量 例如:final int FINALVAR = 100;(2)abstract類和abstract方法關(guān)鍵自abstract的含義為“抽象”,用abstract修飾類,此類稱為抽象類,抽象類不能被實(shí)例化;用abstract修飾方法,此方法稱為抽象方法,抽象方法沒有實(shí)現(xiàn)的代碼(方法首部; )包含抽象方法的類一定是抽象類,但抽象類可以沒有抽象方法。(3)關(guān)鍵字super關(guān)鍵字super的用途:在子類型的非靜態(tài)成員方法中訪問其父類型的成員變量(4)關(guān)鍵字this關(guān)鍵字this的用途:
32、在當(dāng)前類的非靜態(tài)成員方法中訪問當(dāng)前類的成員變量(5)類之間的is-a和has-a關(guān)系例:類A繼承自類B,子類A與父類B之間有is-a關(guān)系例:類A的某個(gè)成員變量的類型是B,類A和類B之間是has-a關(guān)系(6)內(nèi)部類(inner class)定義在其它類內(nèi)部的類稱為內(nèi)部類。接口(interface)Java小應(yīng)用程序基礎(chǔ) Java Applet主要功能:顯示圖形、動(dòng)畫、播放聲音、響應(yīng)用戶事件等。Java applet 的實(shí)現(xiàn)主要依靠java.applet 包中的Applet類。 java. applet. Applet類是所有Java applet的基類,所有的Java applet都必須繼承該類
33、。(1)小應(yīng)用程序的建立和運(yùn)行 Java applet程序從建立到運(yùn)行的步驟如下:1) 選用寫字板或文本編輯器等工具建立Java applet源程序。(其中必須有一個(gè)類繼承java.applet.Applet類,這個(gè)類是小應(yīng)用程序的主類,用關(guān)鍵字public修飾。)2) 把Java applet的源程序編譯為字節(jié)碼文件。3) 編制HTML文件,通過標(biāo)記將字節(jié)碼文件嵌入HTML文件中。4) 在支持Java的瀏覽器上運(yùn)行。(2)Applet類的基本方法 public void init( )public void start( )public void paint( )public void st
34、op( )public void destroy( )public void repaint( )public void update( )(4)小應(yīng)用程序數(shù)據(jù)輸入與輸出 小應(yīng)用程序的數(shù)據(jù)輸入有多種方式:從圖形用戶界面的文本框、文本區(qū)域中輸入;采用系統(tǒng)標(biāo)準(zhǔn)輸入;由HTML文件中的參數(shù)導(dǎo)入。第4章 數(shù)組和字符串1. 數(shù)組 數(shù)組是連續(xù)存儲(chǔ)區(qū)域的命名集合,這些存儲(chǔ)區(qū)域彼此相鄰,存放著相同類型的數(shù)據(jù)元素。一維數(shù)組 (1)聲明一維數(shù)組一維數(shù)組變量的聲明格式有如下兩種:數(shù)組元素的數(shù)據(jù)類型 數(shù)組名;數(shù)組元素的數(shù)據(jù)類型 數(shù)組名 ;(2)創(chuàng)建一維數(shù)組Java數(shù)組是引用類型,可以通過new 操作符來創(chuàng)建;在創(chuàng)建一
35、個(gè)數(shù)組時(shí)必須指明數(shù)組的元素類型和它的長度。先聲明后創(chuàng)建 格式:數(shù)組名 = new 數(shù)組元素類型元素個(gè)數(shù) 示例: char c; / 聲明數(shù)組 c = new char5; / 創(chuàng)建數(shù)組,并分配內(nèi)存在聲明時(shí)創(chuàng)建 示例: char c = new char5;對(duì)于較小的數(shù)組,可以使用直接賦值創(chuàng)建,即在聲明數(shù)組時(shí)賦給它初值。數(shù)組初始化表達(dá)式寫成一組用逗號(hào)分開的擴(kuò)在花括號(hào)里的表達(dá)式。例如:int arr = 2, -9, 15, -2, 0, 80, 7; char c = h, e, l, l, o;(3)引用一維數(shù)組元素?cái)?shù)組的每個(gè)元素通過它在數(shù)組里的位置來引用:數(shù)組名 下標(biāo) ,例如:arr7數(shù)組下
36、標(biāo)必須是0到N-1之間的整數(shù),或值在0到N-1之間的整數(shù)表達(dá)式,其中N是數(shù)組里元素的個(gè)數(shù)。例如:arr7、arri+j(其中i=1, j=6)使用一個(gè)不在0到N-1范圍內(nèi)的下標(biāo)值系統(tǒng)將發(fā)生運(yùn)行時(shí)異常,這是由于Java運(yùn)行系統(tǒng)會(huì)對(duì)數(shù)組下標(biāo)自動(dòng)進(jìn)行范圍越界檢查。例如:arr-1、arr15多維數(shù)組 (1)聲明二維數(shù)組聲明二維數(shù)組的形式有以下三種:數(shù)據(jù)元素類型 數(shù)組名 數(shù)據(jù)元素類型 數(shù)組名數(shù)據(jù)元素類型 數(shù)組名 (2)創(chuàng)建二維數(shù)組創(chuàng)建二維數(shù)組的方法也有多種:l 直接分配(適用于平衡二維數(shù)組,即矩陣)格式:類型 數(shù)組名 = new 類型長度1長度2;例如: double rainfall = new d
37、ouble1231;l 從最高維開始,分別對(duì)每一維分配不等長空間(適用于非平衡數(shù)組)例如: int a = new int3 ; int a0 = new int4; int a1 = new int5; int a2 = new int2;l 直接賦值創(chuàng)建(適用于元素較少的數(shù)組)例如:int x = 5,6,7, 8,9,10,11, 18,19,20,15, 2,9 ;(3)引用二維數(shù)組元素書中示例的非平衡二維數(shù)組x中,x23值為15(4)使用二維數(shù)組要注意的問題二維數(shù)組名下標(biāo)1是一維數(shù)組。二維數(shù)組名.length是二維數(shù)組的子數(shù)組個(gè)數(shù);二維數(shù)組名下標(biāo)1.length是指定子數(shù)組的元素個(gè)數(shù)
38、。2. 字符串 字符串常量 雙引號(hào)括起來的字符序列。示例:“student”、“你好” 或“123.456”字符串聲明和創(chuàng)建 String name1 = new String( );String name2 = new String(“Hello World”);char a = 1,2,3,4,5,6,7;String name3 = new String(a);String name4 = new String(a,2,4);字符串基本操作 (1)字符串連接String s1 = “sweet”;String s2 = new String( “you ” + “are ” + s1);
39、(2)獲取字符串長度方法:public int length() 功能:返回此字符串的長度(3)字符串前綴或后綴的比較方法:public boolean startsWith(Stringprefix)功能:測(cè)試此字符串是否以指定的前綴開始方法:public boolean endsWith(Stringsuffix)功能:測(cè)試此字符串是否以指定的后綴結(jié)束 (4)比較兩個(gè)字符串是否相同方法:public boolean equals(Objectobj)功能:比較兩個(gè)引用變量是否引用同一個(gè)對(duì)象,例如x.equals(y),對(duì)于任何非空引用值 x 和 y,當(dāng)且僅當(dāng) x 和 y 引用同一個(gè)對(duì)象時(shí),
40、此方法才返回 true(x = y 具有值 true)。方法:public boolean equalsIgnoreCase(StringanotherString)功能:將此 String 與另一個(gè) String 比較,不考慮大小寫。如果兩個(gè)字符串的長度相同,并且其中的相應(yīng)字符都相等(忽略大小寫),則認(rèn)為這兩個(gè)字符串是相等的。方法:public int compareTo(Stringstr)功能:按字典順序比較兩個(gè)字符串的大小。該比較基于字符串中各個(gè)字符的 Unicode 值。如果此 String 對(duì)象小于參數(shù)字符串,則返回一個(gè)負(fù)整數(shù)。如果此 String 對(duì)象大于參數(shù)字符串,則返回一個(gè)正
41、整數(shù)。如果這兩個(gè)字符串相等,則返回 0。方法:public int compareToIgnoreCase(Stringstr)功能:按字典順序比較兩個(gè)字符串,不考慮大小寫。 (5)字符串檢索String的實(shí)例方法indexOf( ) 可以 用于在字符串中查找一個(gè)字符或子串的索引位置。indexOf( )方法在一個(gè)String里從左到右查找一個(gè)字符或子串,它有幾種版本:public int indexOf( String string );public int indexOf( String string, int startingIndex );(6)取字符串的子串方法substring(
42、)可以用 來從一個(gè)String里檢索一個(gè)字符子串。 public String substring( int startIndex ) 例如: String str = “HelloWorld”; str.substring( 5 ); / “World” str.substring( 9 ); / ”d”(7)替換字符串中的某字符得到一個(gè)新字符串方法:public String replace(charoldChar, charnewChar)功能:返回一個(gè)新的字符串,它是通過用 newChar 替換此字符串中出現(xiàn)的所有 oldChar 得到的。(8)去掉前后空格得到一個(gè)新字符串方法:pub
43、lic String trim() 功能:返回字符串的副本,去掉前后空白。(9)基本類型值的字符串表示String的類方法valueOf( )用于把某種基本類型的值轉(zhuǎn)換成一個(gè)String對(duì)象。(10)字符串得到基本類型對(duì)象每種基本類(包裝類,除Character)都有類方法能將字符串轉(zhuǎn)換成基本類的對(duì)象,形如: public static Type valueOf(String s) 其中,Type代表任何基本類,包括Boolean、Integer、Double等。(11)字符串得到基本類型值每種基本類(包裝類,除Character)都有類方法能從字符串中解析出基本類型的值,形如: public
44、 static type parseType(Strings) 其中,type代表任何基本數(shù)據(jù)類型,包括boolean、int、double等,Type代表相應(yīng)的包裝類。StringTokenizer類 java.util.StringTokenizer類用來把字符串分解為標(biāo)記。常用構(gòu)造方法1:public StringTokenizer(Stringstr) /為指定字符串構(gòu)造一個(gè) string tokenizer。使用默認(rèn)的分隔符集 “tnrf”,即:空格字符、制表符、換行符、回車符和換頁符。 常用構(gòu)造方法2:public StringTokenizer(Stringstr, String
45、delim) /為指定字符串構(gòu)造一個(gè) string tokenizer。delim 參數(shù)中的字符都是分隔標(biāo)記的分隔符。 常用方法:public int countTokens() / 返回使用當(dāng)前分隔符集的字符串中剩余的標(biāo)記數(shù) public String nextToken() /返回此 string tokenizer 的下一個(gè)標(biāo)記。 public boolean hasMoreElements() /測(cè)試此 string tokenizer 的字符串中是否還有更多的可用標(biāo)記。如果此方法返回 true,那么后續(xù)調(diào)用無參數(shù)的 nextToken 方法將成功地返回一個(gè)標(biāo)記。 字符串與字節(jié)數(shù)組 可
46、以使用String構(gòu)造方法,利用字節(jié)數(shù)組創(chuàng)建字符串:public String(byte bytes) /通過使用默認(rèn)字節(jié)字符對(duì)應(yīng)表,由字節(jié)數(shù)組構(gòu)造一個(gè)新的 String。新 String 的長度是字符集的函數(shù),因此可能不等于 byte 數(shù)組的長度。 public String(byte bytes, intoffset, intlength) /通過使用默認(rèn)字節(jié)字符對(duì)應(yīng)表,由字節(jié)數(shù)組起始位置offset開始取length個(gè)字節(jié)構(gòu)造一個(gè)新的 String。String類也提供實(shí)例方法將字符串轉(zhuǎn)化為字節(jié)數(shù)組:public byte getBytes() / 使用默認(rèn)字節(jié)字符對(duì)應(yīng)表將字符串轉(zhuǎn)化為字
47、節(jié)數(shù)組對(duì)象的字符串表示 根類Object中定義了實(shí)例方法 public String toString() 此方法的功能描述為:返回該對(duì)象的字符串表示。第5章 圖形界面設(shè)計(jì)(一)1. 圖形界面設(shè)計(jì)基礎(chǔ)AWT和Swing AWT:Abstract Windowing Toolkit,抽象窗口工具包Swing:與AWT相比功能更加強(qiáng)大、完善,平臺(tái)相關(guān)性較小組件和容器組件( Component )組件是Java圖形用戶界面的最基本組成部分,是一個(gè)可以以圖形化的方式顯示在屏幕上、并能與用戶進(jìn)行交互的對(duì)象,組件不能獨(dú)立地顯示出來,必須將組件放在一定的容器中才可以顯示出來。容器( Container )容
48、器是可以容納其他組件的組件,是圖形界面的復(fù)合元素。Container類有 add()方法,可以向容器添加組件。 類java.awt.container的成員方法:public Component add( component comp ) / 將組件comp添加到當(dāng)前容器中Component、Container和Graphics類是AWT庫中的關(guān)鍵類。事件驅(qū)動(dòng)程序設(shè)計(jì)基礎(chǔ) (1)事件、監(jiān)視器和監(jiān)視器注冊(cè)在Java里,每當(dāng)某件事發(fā)生在一個(gè)GUI組件(事件源或源對(duì)象)里,會(huì)生成一個(gè)事件對(duì)象(event)并傳給為處理該事件而注冊(cè)的事件監(jiān)視器(event listener)。(2)實(shí)現(xiàn)事件處理的途征事
49、件處理模型的三個(gè)基本要素:事件源(An event source) 事件對(duì)象(An event object)事件監(jiān)視器(event listener(s)事件源(源對(duì)象)可供用戶進(jìn)行交互的GUI組件事件對(duì)象包裝相應(yīng)的事件記錄事件源以及處理該事件所需要的各種信息事件對(duì)象對(duì)應(yīng)的類一般位于包java.awt.event和包javax.swing.event中事件監(jiān)視器(事件監(jiān)聽器)在事件源中注冊(cè)事件監(jiān)視器,當(dāng)有事件發(fā)生時(shí),事件源接收事件對(duì)象,并交由相應(yīng)的事件監(jiān)聽器處理事件監(jiān)聽器對(duì)應(yīng)的接口和適配器類一般位于包java.awt.event和包javax.swing.event中(3)事件類型和監(jiān)視器接
50、口常用的事件:動(dòng)作事件(ActionEvent)、項(xiàng)事件(ItemEvent)、列表選擇事件(ListSelectionEvent)、文檔事件(DocumentEvent)類javax.swing.Frame的成員方法:public Container getContentPane( ) / 返回當(dāng)前Frame的內(nèi)容窗格類java.awt.container的成員方法:public Component add( component comp ) / 將組件comp添加到當(dāng)前容器中對(duì)于頂層容器,是向其內(nèi)容窗格添加組件;對(duì)于其他容器,則可直接添加組件。為頂層容器添加組件的另一種方法:建立JPane
51、l對(duì)象作為中間容器,將組件添加到這個(gè)容器中,再用方法public void setContentPane(Container contentPane)把此中間容器設(shè)置為內(nèi)容面板。 JPanel contentPane = new JPanel(); / 添加組件到contentPane中 mw = setContentPane(contentPane); / mw為之前創(chuàng)建的某JFame對(duì)象 3. 標(biāo)簽、按鈕和按鈕事件 標(biāo)簽(javax.swing.JLabel)是用于短文本字符串或圖像或二者的顯示區(qū)。標(biāo)簽不對(duì)輸入事件作出反應(yīng)。標(biāo)簽(類javax.swing.JLabel)的構(gòu)造方法:publ
52、ic JLabel( )public JLabel( String text )public JLabel( String text, int align ) / 參數(shù)text指定標(biāo)簽的文字信息;參數(shù)align指定文字在水平方向上的對(duì)齊方式。常見對(duì)齊方式:javax.swing.JLabel.LEFT(左對(duì)齊)、javax.swing.JLabel.CENTER(中對(duì)齊)、javax.swing.JLabel.RIGHT(右對(duì)齊)JLabel的常用成員方法:public void setText( String text ) / 設(shè)置標(biāo)簽的文字信息public void getText( ) /返
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州省貴陽市普通高中2025屆高二物理第二學(xué)期期末檢測(cè)試題含解析
- 2025年四川省自貢市富順縣二中物理高一第二學(xué)期期末教學(xué)質(zhì)量檢測(cè)模擬試題含解析
- 老年教育講師崗位面試問題及答案
- 口腔護(hù)士崗位面試問題及答案
- 家政服務(wù)主管崗位面試問題及答案
- 工程質(zhì)檢員崗位面試問題及答案
- 2025屆陜西省商洛市丹鳳中學(xué)物理高一第二學(xué)期期末質(zhì)量跟蹤監(jiān)視試題含解析
- 吉林省長春汽車經(jīng)濟(jì)技術(shù)開發(fā)區(qū)第六中學(xué)2025年高二物理第二學(xué)期期末聯(lián)考試題含解析
- 2025屆河南省濟(jì)源一中物理高二下期末聯(lián)考模擬試題含解析
- 2025屆甘肅省慶陽長慶中學(xué)物理高二下期末復(fù)習(xí)檢測(cè)模擬試題含解析
- 工會(huì)審計(jì)實(shí)務(wù)課件
- 預(yù)防艾滋病、梅毒和乙肝母嬰傳播相關(guān)報(bào)表、上報(bào)流程和要求
- 《鐵路技術(shù)管理規(guī)程》(普速鐵路部分)-14年新版
- 食用油儲(chǔ)存期品質(zhì)變化的太赫茲光譜無損識(shí)別
- 胎盤早剝預(yù)案演練腳本
- 五山文學(xué)全集第一卷
- 聚磷腈功能高分子材料的合成及應(yīng)用
- 中國鐵路總公司《鐵路技術(shù)管理規(guī)程》(高速鐵路部分)2014年7月
- 鈣加維生素Dppt課件(PPT 14頁)
- TRD深基坑止水帷幕施工方案(22頁)
- 企業(yè)組織架構(gòu)圖模板
評(píng)論
0/150
提交評(píng)論