java考試要點(diǎn)(講解后)_第1頁(yè)
java考試要點(diǎn)(講解后)_第2頁(yè)
java考試要點(diǎn)(講解后)_第3頁(yè)
java考試要點(diǎn)(講解后)_第4頁(yè)
java考試要點(diǎn)(講解后)_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Java考試要點(diǎn)第1章Java語(yǔ)句概述5%1、Java具有面向?qū)ο?、與平臺(tái)無(wú)關(guān)、安全、穩(wěn)定和多線程等優(yōu)良特性,是目前軟件設(shè)計(jì)中優(yōu)秀的編程語(yǔ)言。2、Java在計(jì)算機(jī)的操作系統(tǒng)之上再提供一個(gè)Java運(yùn)行環(huán)境(JavaRuntimeEnvironment,JRE),該運(yùn)行環(huán)境由Java虛擬機(jī)(JavaVirtualMachine,JVM)、類庫(kù)以及一些核心文件組成。 Java程序的運(yùn)行環(huán)境:JREJava源代碼(*.java 文件)

類裝載器字節(jié)碼的驗(yàn)證

Java類庫(kù)JVMJava解釋器 即時(shí)編譯器JIT字節(jié)碼傳輸?shù)絁ava編譯器本地或網(wǎng)絡(luò)運(yùn)行期系統(tǒng)操作系統(tǒng)Java字節(jié)碼(.class 文件)硬件說(shuō)明:(1)Java編譯器:負(fù)責(zé)將Java源程序文件(擴(kuò)展名.java)編譯成字節(jié)碼文件(擴(kuò)展名.class),對(duì)應(yīng)JDK安裝目錄下的javac.exe。(2)JRE(JavaRuntimeEnvironment):在計(jì)算機(jī)操作系統(tǒng)之上的 Java運(yùn)行環(huán)境。(3)JVM(JavaVirtualMachine):稱為Java虛擬機(jī),是JRE中的一部分,負(fù)責(zé)字節(jié)碼文件(擴(kuò)展名.class)的解釋與執(zhí)行。(4)Java解釋器:JVM的一部分,負(fù)責(zé)字節(jié)碼文件(擴(kuò)展名.class)的解釋與執(zhí)行,對(duì)應(yīng)JDK安裝目錄下的java.exe。(5)Java即時(shí)編譯器JIT(JustInTime):SUN公司在Java2發(fā)行版的Java虛擬機(jī)中提供了JIT編譯器,主要用途是將字節(jié)碼指令集直接轉(zhuǎn)換為針對(duì)某一特定微處理器的機(jī)器代碼指令,提高Java代碼的執(zhí)行速度。3、開(kāi)發(fā)一個(gè)Java程序需要經(jīng)過(guò)三個(gè)步驟:1)編寫源文件(擴(kuò)展名.java),如HelloWorld.java。注:(1)java源文件的命名規(guī)則:一個(gè)java源文件中只能有一個(gè)public類,并且java源文件名要與public類的類名完全相同;如果java源文件中沒(méi)有public類,那么源文件名只要與其中一個(gè)類的類名相同就可以了。(2)一個(gè)java源文件要能夠被運(yùn)行,必須要有一個(gè)類包含有 publicstaticvoidmain(String[]args)的方法。3)java的代碼是區(qū)分大小寫的。2)編譯Java源程序:使用Java編譯器編譯源文件(擴(kuò)展名.java),得到字節(jié)碼文件(擴(kuò)展名.class),命令格式:javac源文件名.java,如javacHelloWorld.java3)解釋執(zhí)行字節(jié)碼文件:使用Java虛擬機(jī)JVM來(lái)解釋執(zhí)行字節(jié)碼文件,命令格式:java字節(jié)碼文件名,如javaHelloWorld4、Java程序的開(kāi)發(fā)環(huán)境需要安裝 JDK(SoftwareDevleopmentKit,軟件開(kāi)發(fā)工具),在JDK中包含了一些有助于程序員開(kāi)發(fā) Java程序的 Java開(kāi)發(fā)工具包,如類庫(kù)、編譯器、調(diào)試器、 Java運(yùn)行時(shí)環(huán)境( JRE)。5、安裝完JDK后,要在操作系統(tǒng)環(huán)境變量中配置 path和classpath環(huán)境變量:1)在path環(huán)境變量中添加JDK安裝目錄的bin文件夾所在路徑,以便在任何目錄中使用bin文件夾中的Java編譯器(javac.exe)和Java解釋器(java.exe)。(2)classpath環(huán)境變量是java在編譯和運(yùn)行時(shí)需要用到的類庫(kù)(由一些.class文件組成)所在的路徑,這些類庫(kù)被包含在JDK安裝目錄下的jre子目錄中。第1章模擬題:下列語(yǔ)句哪一個(gè)正確()A.Java程序經(jīng)編譯后會(huì)產(chǎn)生二進(jìn)制的機(jī)器碼文件B.Java程序經(jīng)編譯后會(huì)產(chǎn)生字節(jié)碼文件C.Java程序經(jīng)編譯后會(huì)產(chǎn)生 DLL文件D.以上都不正確2.編譯JavaApplication 源程序文件將產(chǎn)生相應(yīng)的字節(jié)碼文件, 這些字節(jié)碼文件的擴(kuò)展名為(

)A.

.java

B.

.class

C.

.html

D.

.exe3.下列說(shuō)法錯(cuò)誤的是( )A.環(huán)境變量可在編譯源代碼時(shí)指定B.在編譯程序時(shí),所能指定的環(huán)境變量不包括

classpathC.javac一次可同時(shí)編譯數(shù)個(gè) Java源文件D.javac.exe能指定編譯結(jié)果要置于哪個(gè)目錄(

directory)4、開(kāi)發(fā)與運(yùn)行 Java程序需要經(jīng)過(guò)的三個(gè)主要步驟為編譯源文件生成字節(jié)碼 和 加載運(yùn)行字節(jié)碼

編寫源文件。

、5、如果一個(gè)

Java源程序文件中定義有

3個(gè)類,則使用

Sun公司的

JDK

編譯器

javac.exe

編譯該源程序文件將產(chǎn)生

3

個(gè)文件名與類名相同而擴(kuò)展名為

.class的字節(jié)碼文件。6.Java程序中的public類的名稱必須與存放該類的文件名相同。( √)第2章基本類型、數(shù)組和枚舉類型1、Java標(biāo)識(shí)符命名規(guī)則◆標(biāo)識(shí)符由字母、下劃線“_”、美元符號(hào)“$”或數(shù)字組成◆標(biāo)識(shí)符應(yīng)以字母、下劃線、美元符號(hào)開(kāi)頭◆Java標(biāo)識(shí)符大小寫敏感,長(zhǎng)度無(wú)限制◆約定:Java標(biāo)識(shí)符選取要“見(jiàn)名知意”,而且不能與Java語(yǔ)言的關(guān)鍵字重名。2、關(guān)鍵字:所有Java關(guān)鍵字都是小寫英文,不可以把關(guān)鍵字做為標(biāo)識(shí)符來(lái)用。3、Java語(yǔ)言有8種基本數(shù)據(jù)類型,分別是:boolean(1B,取值范圍true或false,,不可以用0或非0的整數(shù)替代true或false)、byte(1B)、short(2B)、char(2B)、int(4B)、long(8B,常量后綴必須要有后綴L或l)、float(4B,常量后面必須要有后綴F或f)、double(8B,常量后面可以有后綴D或d,也可以沒(méi)有后綴)。4、基本數(shù)據(jù)類型的轉(zhuǎn)換 floatf=(float)12.0; floatf=12.0f;Java中數(shù)據(jù)的基本類型(不包括邏輯類型)按精度從 “低”到“高”排列:byte short char int long float double1)當(dāng)把級(jí)別低的變量的值賦給級(jí)別高的變量時(shí),系統(tǒng)自動(dòng)完成數(shù)據(jù)類型的轉(zhuǎn)換(自動(dòng)類型轉(zhuǎn)換)。例如:floatx=100;2)當(dāng)把級(jí)別高的變量的值賦給級(jí)別低的變量時(shí),必須使用顯示類型轉(zhuǎn)換運(yùn)算(強(qiáng)制類型轉(zhuǎn)換)。顯示轉(zhuǎn)換的格式:(類型名)要轉(zhuǎn)換的值;例如intx=(int)34.89;5、從命令行輸入、輸出數(shù)據(jù)1)輸入數(shù)據(jù)首先使用Scanner類創(chuàng)建一個(gè)對(duì)象,再通過(guò)Scanner類對(duì)象調(diào)用下列方法,讀取用戶在命令行輸入的各種基本數(shù)據(jù)類型和字符串:nextBoolean()、nextByte()、nextShort()、nextInt()nextLong()、nextFloat()、nextDouble()、nextLine()其中nextLine()是讀取用戶輸入的字符串( String類型)。2)輸出數(shù)據(jù)用或可輸出字符串、表達(dá)式的值,二者的區(qū)別是前者輸出數(shù)據(jù)后換行,后者不換行。允許使用符號(hào)“+將”變量、表達(dá)式或一個(gè)常數(shù)值與一個(gè)字符串首尾相接后再一起輸出,如下列一段代碼:intm=10;doublesum=120;個(gè)數(shù)的和為"+sum);大于“”+122);正確運(yùn)行后,輸出的結(jié)果是:10個(gè)數(shù)的和為120.0123大于122(3)輸入輸出的例子:importpublicclassTest{publicstaticvoidmain(String[]args){//1.創(chuàng)建一個(gè)Scanner對(duì)象,對(duì)象名為 inScannerin=newScanner(System.in);//2.提示用戶輸入年齡System.out.print("請(qǐng)輸入年齡: ");//3.通過(guò)對(duì)象in調(diào)用Scanner類的方法nextInt()讀取用戶輸入的一個(gè)整數(shù)intage=in.nextInt();//3.輸出ageSystem.out.println("你輸入的年齡是: "+age);}}運(yùn)行結(jié)果:請(qǐng)輸入年齡: 18你輸入的年齡是: 186、java常量和變量(1)java常量值區(qū)分為不同的數(shù)據(jù)類型,如是int類型的常量12.0或12.0d是double類型的常量12.0f是float類型的常量true和false是boolean類型的常量‘a(chǎn)’是char類型的常量“a”是String類型的常量2)變量:Java程序中每一個(gè)變量都屬于特定的數(shù)據(jù)類型,從本質(zhì)上講,變量其實(shí)是內(nèi)存中的一小塊區(qū)域,使用變量名來(lái)訪問(wèn)這塊區(qū)域。因此,每一個(gè)變量使用前必須先聲明(申請(qǐng)內(nèi)存),然后必須進(jìn)行賦值(填充內(nèi)存區(qū)域),才能使用(讀取內(nèi)存區(qū)域的值)。3)要準(zhǔn)確分析一個(gè)Java程序,就要了解java程序的執(zhí)行過(guò)程:Java虛擬機(jī)3)Java變量的分類按被聲明的位置劃分:–局部變量:方法或語(yǔ)句塊內(nèi)部定義的變量–成員變量:方法外部且在類的內(nèi)部定義的變量–注意:類外面(與類對(duì)應(yīng)的大括號(hào)外面)不能有變量的聲明。–變量作用域的識(shí)別方法:凡是在大括號(hào)里面聲明的,出了對(duì)應(yīng)的大括號(hào)就不能使用了另外,用static聲明的變量叫類變量或靜態(tài)變量,static類型的變量是保存在datasegment中。引用類型(除了基本數(shù)據(jù)類型以外的類型,包括數(shù)組、String和用戶自定義的一些類)的變量,在棧(stack)中保存的是一個(gè)引用,指向堆(heap)或datasegment中的一個(gè)內(nèi)存區(qū)域,默認(rèn)值是null?;緮?shù)據(jù)類型的變量直接在棧中保存它本身的值。7、Eclipse調(diào)試初步一、調(diào)試快捷鍵–F5:?jiǎn)尾教敕椒ㄖ楔CF6:逐條語(yǔ)句單步執(zhí)行–F7:?jiǎn)尾椒祷刂鞣椒èCF8:斷點(diǎn)間跳躍,如果當(dāng)前斷點(diǎn)后面沒(méi)有其他斷點(diǎn),則結(jié)束調(diào)試8、數(shù)組8.1數(shù)組的聲明和使用數(shù)組是相同類型的變量按順序組成的一種復(fù)合數(shù)據(jù)類型,稱這些相同類型的變量為數(shù)組的元素或單元。數(shù)組通過(guò)數(shù)組名加索引來(lái)使用數(shù)組的元素。索引從0開(kāi)始。數(shù)組的使用要經(jīng)過(guò)以下步驟:1)聲明數(shù)組——在棧中為數(shù)組變量分配一塊內(nèi)存區(qū)域,值為null<1>一維數(shù)組有下列兩種格式:數(shù)組的元素類型 數(shù)組名字[]; 或數(shù)組的元素類型[] 數(shù)組名字;例如:float boy[]; 或 float[] boy;<2>聲明二維數(shù)組有下列兩種格式:數(shù)組的元素類型 數(shù)組名字[][];

或數(shù)組的元素類型[][]數(shù)組名字;例如:char cat[][]; 或 char[][] cat;注:Java語(yǔ)言聲明數(shù)組時(shí)不能指定其長(zhǎng)度(數(shù)組中元素的個(gè)數(shù))inta[5]; //非法

,例如:intvar3[2][3]={{1,2,3},{4,5,6}};//非法2)為數(shù)組分配內(nèi)存空間——用new在堆中為每個(gè)數(shù)組元素分配內(nèi)存空間,并將一個(gè)指向堆中這塊內(nèi)存空間的一個(gè)引用保存到棧中的數(shù)組變量對(duì)應(yīng)的內(nèi)存區(qū)域中。格式如下:數(shù)組名字=new數(shù)組元素的類型[數(shù)組元素的個(gè)數(shù)];例如:boy=newfloat[4];為數(shù)組分配內(nèi)存空間后,數(shù)組boy在堆中獲得4個(gè)用來(lái)存放float類型數(shù)據(jù)的內(nèi)存空間,即4個(gè)float型元素。數(shù)組變量boy中存放著這些內(nèi)存單元的引用,這樣就可以通過(guò)數(shù)組變量boy和索引操作堆中的這些內(nèi)存單元。注:用new為數(shù)組元素在堆中分配內(nèi)存后,每個(gè)數(shù)組元素會(huì)被初始化為一個(gè)默認(rèn)值(整型為0,浮點(diǎn)型為0.0,布爾型為false,引用類型為null)(3)訪問(wèn)數(shù)組元素——通過(guò)數(shù)組變量和索引操作堆中存放數(shù)組元素的內(nèi)存單元在訪問(wèn)數(shù)組元素時(shí),要防止索引越界的情況。可以通過(guò)“數(shù)組名.length”獲取數(shù)組的元素個(gè)數(shù)。對(duì)于一維數(shù)組,“數(shù)組名.length”的值就是數(shù)組中元素的個(gè)數(shù);對(duì)于二維數(shù)組“數(shù)組名.length”的值是它含有的一維數(shù)組的個(gè)數(shù)。如:對(duì)于 floata[]=newfloat[12]; a.length的值12對(duì)于 intb[][]=newint[3][6]; b.length的值是38.2數(shù)組的內(nèi)存分析為了正確分析使用了數(shù)組的 java程序,最好畫出程序的內(nèi)存分析圖,這樣就能正確得出程序的運(yùn)行結(jié)果。(1)一維數(shù)組的內(nèi)存分析publicclassArrayOne{publicstaticvoidmain(String[]args){int[]s;=newint[5];for(inti=0;i<s.length;i++){s[i]=i;}}}堆內(nèi)存棧內(nèi)存

01020

s[0]s[1]s[2]s

3040****null

s[3]s[4](2)二維數(shù)組的內(nèi)存分析publicclassArrayTwo{publicstaticvoidmain(String[]args){String[][]s;s=newString[3][];s[0]=newString[2];s[1]=newString[3];s[2]=newString[2];for(inti=0;i<s.length;i++){for(intj=0;j<s[i].length;j++){s[i][j]= newString(i+","+j);}}}}堆內(nèi)存****null棧內(nèi)存 ****null****nulls ****null8.3Arrays類的toString方法publicstaticStringtoString(int[]a)

null0,0 s[0][0]null0,1s[0][1]null1,0 s[1][0]null1,1 s[1][1]null1,2 s[1][2]null2,0 s[2][0]null2,1 s[2][1]可以得到參數(shù)指定的一維數(shù)組 a的如下格式的字符串表示:[a[0],a[1]?a[a.length-1]]調(diào)用:inta[]={1,2,3,4,5};Stringstr=Arrays.toString(a);//該語(yǔ)句執(zhí)行后str=“[1,2,3,4,5]”8.4復(fù)制數(shù)組1.System類的arraycopy方法2.Arrays類的copyOf和copyOfRange()方法8.5數(shù)組的排序與二分查找1.Arrays類調(diào)用 publicstaticvoidsort(doublea[])方法可以把參數(shù) a指定的double類型數(shù)組按升序排序。2.Arrays類調(diào)用publicstaticvoidsort(doublea[],intstart,intend)方法可以把參數(shù)a指定的double類型數(shù)組中索引star至end-1的元素的值按升序排序。3.Arrays類調(diào)用(二分法)publicstaticintbinarySearch(double[]a,doublenumber)方法判斷參數(shù) number指定的數(shù)是否在參數(shù) a指定的數(shù)組中。注:數(shù)組a必須是事先已排序的數(shù)組。8.6枚舉類型Java使用關(guān)鍵字enum聲明枚舉類型,語(yǔ)法格式如下:enum枚舉名{ 常量列表}其中的常量列表是用逗號(hào)分割的字符序列且后面沒(méi)有 “;”做為結(jié)束符,稱為枚舉類型的常量(枚舉類型的常量要符合標(biāo)識(shí)符的命名規(guī)定) 。注:枚舉類型可以在類外部聲明,也可以在類內(nèi)部聲明或在一個(gè)單獨(dú)的 Java源文件中聲明。publicclassTest{enumSeason{spring,summer,autumn,winter}publicstaticvoidmain(String[]args){Seasonx=Seasonautumn;.}}運(yùn)行結(jié)果:autumn第2章模擬題1.下列哪個(gè)是合法的 java標(biāo)識(shí)符( )A.stu-Count B.$int_long C.byte D.12342.下列說(shuō)法正確的有( )A.?dāng)?shù)組是一種引用類型B.?dāng)?shù)組屬于一種基本類型C.intnumber[6]={31,23,33,43,35,63}D.如果一個(gè)數(shù)組的元素個(gè)數(shù)是 5,那么它的最大索引號(hào)是 53.java語(yǔ)言中,int類型的變量所占的內(nèi)存空間是( )字節(jié)A.2 B.4 C.6 D.84.以下程序的運(yùn)行結(jié)果是( )publicclassTest{publicstaticvoidmain(Stringargs[]){intx=12;longy=8.0; //longy=(long)8.0}}A.20 B.20.0 C.出錯(cuò) D.125.以下程序的運(yùn)行結(jié)果是 [0,0,34,95,0]import class Test{public static void main(String[]args){int []array1= new int [5];int []array2={12,34,95};System. arraycopy (array2,1,array1,2,2);Stringstr=Arrays. toString (array1);System. out.println(str);}}6.以下程序的運(yùn)行結(jié)果是 [34,95]import class Test{public static void main(String[]args){int []array1= new int [5];int []array2={12,34,95};array1=Arrays. copyOfRange (array2,1,3);{34,95}Stringstr=Arrays. toString (array1);System. out.println(str);}}7.java語(yǔ)言使用采用Unicode字符編碼,是用16位來(lái)表示一個(gè)字符。(√)8.基本數(shù)據(jù)類型之間可以任意轉(zhuǎn)換。(×)9.聲明語(yǔ)句:floatf=3.4;是錯(cuò)誤的。(√)可以通過(guò)“一維數(shù)組名.length()”得到一維數(shù)組的元素個(gè)數(shù)。(×)11.要得一個(gè) String對(duì)象的字符個(gè)數(shù),可以通過(guò)“ String對(duì)象名.length()”得到(√)第3章運(yùn)算符、表達(dá)式和語(yǔ)句1.自增、自減運(yùn)算符++、――2.算術(shù)混合運(yùn)算的精度3.條件分支語(yǔ)句 if和switch4.循環(huán)語(yǔ)句 for、while、do~while6.break和contiue語(yǔ)句第3章模擬題:1.下列程序的輸出結(jié)果是( )class Test{public static void main(String[]args){int x=1,y;y=(x++)+(--x);System. out.println( "x=" +x+ ",y=" +y);}}A.x=1,y=2 B.x=2,y=2 C.x=1,y=3 D.x=2,y=32.下列運(yùn)算符合法的是( )A.&& B.<> C.if D.:=3.執(zhí)行如下程序代碼class Test{public static void main(String[]args){inta=0,c=0;do{--c;a=a-1;}while(a>0);}}后,C的值是( )A.0 B.1 C.-1 D.死循環(huán)4.執(zhí)行如下程序代碼class Test{public static voidint sum=0,i;for (i=1;i<=11;i++){if (i%2==0)continueif (i%9==0)break ;

main(String[]args){;sum=sum+i;}System.

out.println(sum);}}得到的運(yùn)行結(jié)果是(A.20B.16

)0+1+3+5+7C.25 D.0執(zhí)行如下程序代碼class Test{public static void main(String[]args){shorts1=1;s1=s1+1; //錯(cuò)誤,改成 s1=(short)(s1+1); 或 s1+=1; 或s1++;s1++;}}得到的運(yùn)行結(jié)果是( )A.1

B.2

C.3

D.出錯(cuò)6.以下應(yīng)用程序是求

1?。?!+...+20!,請(qǐng)將程序代碼補(bǔ)充完整:

1+2+3+?+100class

Test{public static void main(String[]args){double sum=0,x=1;int i=1;while (i<=20){i++;}System. out.println(sum);}}7.以下程序的運(yùn)行結(jié)果是

你好好嗎??class

Test{public

static

void

main(String[]args){char

c=’\0

’;for

(inti=1;i<=4;i++){switch

(i){case1:c=

’你’;case2:c=

’好’;break;case3:c= ’嗎’;}}}}第4章類與對(duì)象1、面向?qū)ο缶幊痰娜筇卣鳎悍庋b性、繼承和多態(tài)1)封裝可以隱藏對(duì)象實(shí)現(xiàn)的細(xì)節(jié)部分2)繼承:繼承是一種由已有的類創(chuàng)建新類的機(jī)制。利用繼承,我們可以先創(chuàng)建一個(gè)共有屬性的一般類,根據(jù)該一般類再創(chuàng)建具有特殊屬性的新類。3)多態(tài):多態(tài)是面向?qū)ο缶幊痰挠忠恢匾匦浴W宇惪梢泽w現(xiàn)多態(tài),即子類可以根據(jù)各自的需要重寫的父類的某個(gè)方法,子類通過(guò)方法的重寫可以把父類的狀態(tài)和行為改變?yōu)樽陨淼臓顟B(tài)和行為。接口也可以體現(xiàn)多態(tài),即不同的類在實(shí)現(xiàn)同一接口時(shí),可以給出不同的實(shí)現(xiàn)手段。publicclassPeople{Stringname;intage;publicvoidrun(){“People跑”);}}Peoplep=newPeople();=”marry”;p.age=18;p.run();classSuperPeopleextendsPeople{Stringsex;publicvoideat(){}publicvoidrun(){super.run();“SuperPeople跑”);}}SuperPeoplesp=newSuperPeople();sp.sex=”男”;sp.eat();sp.age=18;=”marry”;sp.run();Peoplep=newSuperPeople();p.age=18;

classSuperPeople{Stringname;intage;Stringsex;publicvoidrun(){}publicvoideat(){}}p.run();p.eat(); //XpublicinterfaceDenglu{inti=1; //publicstaticfinalinti=1;voidinputInfo(); //publicabstractvoidf();voidprintinfo();}classAimplementsDenglu{publicvoidinputInfo(){}publicvoidprintintfo(){}}2、對(duì)象和類的概念對(duì)象是用計(jì)算機(jī)語(yǔ)言對(duì)問(wèn)題域中事物的描述,對(duì)象通過(guò) “屬性(attribute)”和“方法(method)”來(lái)分別對(duì)應(yīng)事物所具有的靜態(tài)屬性(狀態(tài))和動(dòng)態(tài)屬性(行為) 。類是具有相同屬性和方法的對(duì)象的集合,類中定義了這一類對(duì)象所具有的屬性(用成員變量定義)和行為(用成員方法定義)。類可以看成一類對(duì)象的模板,對(duì)象可以看成該類的一個(gè)具體的實(shí)例;對(duì)象是引用數(shù)據(jù)類型,使用 new運(yùn)算符構(gòu)造對(duì)象實(shí)例,使用成員運(yùn)算符“ .”訪問(wèn)對(duì)象中的成員;3、編寫java代碼的順序(1)聲明類[訪問(wèn)權(quán)限][final]class<類名>[extends父類名][implements接口列表]{//聲明成員變量//定義構(gòu)造方法//定義成員方法}(2)聲明類的成員變量[訪問(wèn)權(quán)限][static][final]< 變量類型><變量名>;(3)定義構(gòu)造方法[訪問(wèn)權(quán)限]類名([形參列表]){聲明局部變量語(yǔ)句序列}(4)定義成員方法[訪問(wèn)權(quán)限]<方法返回值的類型 ><方法名>([形參列表]){聲明局部變量語(yǔ)句序列}(5)使用類第1步:聲明類對(duì)象類名對(duì)象名;注:聲明類對(duì)象后,在棧內(nèi)存中就為對(duì)象變量分配一塊內(nèi)存區(qū)域來(lái)存放對(duì)象的引用,默認(rèn)值為null。第2步:構(gòu)造類對(duì)象,即為類對(duì)象的成員變量分配內(nèi)存對(duì)象名 =new構(gòu)造方法名( [實(shí)參列表]);注:用new調(diào)用類的構(gòu)造方法后,就為該對(duì)象的每一個(gè)成員變量在堆內(nèi)存中分配了內(nèi)存區(qū)域,并給每一個(gè)成員變量賦初值, 堆內(nèi)存中的為對(duì)象的成員變量分配的內(nèi)存區(qū)域稱為對(duì)象的實(shí)例。static的成員變量不在堆中分配內(nèi)存,而是在datasegment中分配內(nèi)存,而且該類的所有對(duì)象共享其static的成員變量。第3步:通過(guò)對(duì)象名引用成員變量和成員方法對(duì)象名

.成員變量名對(duì)象名

.成員方法名

([實(shí)參列表

])4、成員變量的定義:[訪問(wèn)權(quán)限

][static][final]<

變量類型

><變量名

>;在類的外部,要通過(guò)類的對(duì)象來(lái)訪問(wèn)它的成員變量,即“對(duì)象名果是static變量(稱為靜態(tài)變量或類變量),還可以通過(guò)“類名

.成員變量名”的方式。如.成員變量名”來(lái)訪問(wèn)。5、構(gòu)造方法定義:[訪問(wèn)權(quán)限]類名([形參列表]){聲明局部變量語(yǔ)句序列}構(gòu)造方法是特殊的成員方法,它與類同名,在對(duì)象實(shí)例化時(shí)由虛擬機(jī)自動(dòng)調(diào)用;舉例:對(duì)象的內(nèi)存分析class Point{int x,y;static intPoint( int

z;a, int

b, int

c){=a;=b;=c;}}class

Test{public

static

void

main(String[]args){聲明對(duì)象p1和p2Pointp1,p2;//為對(duì)象p1的成員變量分配內(nèi)存,使用new和類中的構(gòu)造方法p1=newPoint(10,10,10);//為對(duì)象p2的成員變量分配內(nèi)存,使用new和類中的構(gòu)造方法p2=newPoint(23,35,30);System.out.println("p1對(duì)象的成員變量x,y,z值:"+p1.x+","+p1.y+","+p1.z);System.out.println("p2對(duì)象的成員變量x,y,z值:"+p1.x+","+p1.y+","+p1.z);把p2的引用賦給p1,兩個(gè)對(duì)象具有相同的引用,具有完全相同的實(shí)體p1=p2;System. out.println( "p1對(duì)象的成員變量 x,y,z 值:"+p1. x+ "," +p1. y+ "," +p1. z);System. out.println( "p2對(duì)象的成員變量 x,y,z 值:"+p1. x+ "," +p1. y+ "," +p1. z);}}棧內(nèi)存p1:***nullp2:****null對(duì)象的引用所以程序運(yùn)行結(jié)果為:p1對(duì)象的成員變量x,y,z值:10,10,30p2對(duì)象的成員變量x,y,z值:10,10,30p1對(duì)象的成員變量x,y,z值:23,35,30p2對(duì)象的成員變量x,y,z值:23,35,30

堆內(nèi)存x:10y:10x:230y:350對(duì)象的實(shí)例z:10->30Datasegment請(qǐng)注意:1)構(gòu)造方法必須用new來(lái)調(diào)用;2)構(gòu)造方法沒(méi)有返回值類型,也不能有返回值;(3)因?yàn)槭怯商摂M機(jī)來(lái)調(diào)用構(gòu)造方法,所以構(gòu)造方法一般應(yīng)定義成 public;4)在沒(méi)有定義構(gòu)造方法的情況下,類會(huì)自動(dòng)產(chǎn)生一個(gè)無(wú)參數(shù)的默認(rèn)構(gòu)造方法,這個(gè)默認(rèn)的構(gòu)造方法什么都不做;5)一旦顯式地定義了構(gòu)造方法,默認(rèn)構(gòu)造方法自動(dòng)消失。6、定義成員方法的一般形式:[訪問(wèn)權(quán)限][static] 返回值類型 方法名稱([形參列表]){方法主體;}類的成員方法要通過(guò)“對(duì)象名.成員方法名([實(shí)參列表])”的方式來(lái)調(diào)用。static成員方法(稱為靜態(tài)方法或類方法),還可以通過(guò)“類名.成員方法名([實(shí)參列表])”來(lái)調(diào)用。注:(1)static成員方法(類方法)不能操作非 static的成員變量和成員方法;2)static成員方法沒(méi)有this引用。7、方法重載:用于在同一類中,定義一組方法,這些方法具有相同的名稱,并執(zhí)行類似的操作,但是卻使用不同的參數(shù)列表(參數(shù)數(shù)量不同、參數(shù)類型不同或參數(shù)順序不同) 。注:方法重載跟方法的返回值類型沒(méi)有任何關(guān)系。成重載。只有在同一個(gè)類中的方法才有可能構(gòu)成重載。

也就是說(shuō),只有返回值不同的方法不能構(gòu)8、this

關(guān)鍵字this是

Java的一個(gè)關(guān)鍵字,

this

可以出現(xiàn)在實(shí)例方法和構(gòu)造方法中,表示調(diào)用該方法的當(dāng)前對(duì)象。注:(1)this不可以出現(xiàn)在

static方法(類方法)中。(2)每個(gè)成員方法(除

static方法外)都有一個(gè)隱含的

this

引用,它總是指向調(diào)用它的對(duì)象;3)可以在一個(gè)類的構(gòu)造方法中,使用“this([實(shí)參列表]);”來(lái)調(diào)用該類的另外一個(gè)構(gòu)造方法。如:publicclassTest{publicstaticvoidmain(String[]args){Students=newStudent("zhangsha");}}classStudent{Stringname;intage;publicStudent(Stringname) {this(name,20);沒(méi)有給定年齡 ");默認(rèn)年齡為 20");}publicStudent(Stringname,intage){=name;this.age=age;}}9、包:包是Java語(yǔ)言中有效地管理類的一個(gè)機(jī)制。包名的目的是有效的區(qū)分名字相同的類。分屬不同包的類名相同也不會(huì)引起沖突;能在包與包之間對(duì)于類的訪問(wèn)權(quán)限提供更有力的約束。使用package關(guān)鍵字將某個(gè)包中的類導(dǎo)入當(dāng)前 java源文件中,語(yǔ)法是:package包名.類名; //導(dǎo)入包中的一個(gè)類package包名.*; //導(dǎo)入包中的所有類該語(yǔ)句必須是整個(gè)源文件的第一條語(yǔ)句;10、訪問(wèn)權(quán)限:1)訪問(wèn)修飾符用來(lái)控制訪問(wèn)權(quán)限,可以有效地保證數(shù)據(jù)安全;2)對(duì)于一個(gè)class內(nèi)的成員變量或成員方法,可修飾為:public:可以被任何 class訪問(wèn);protected:可以被同一包內(nèi)的其它 class訪問(wèn),也能被它自己的子類訪問(wèn);無(wú)修飾符:可以被同一包內(nèi)的其它 class訪問(wèn) ;private:只能在本 class內(nèi)訪問(wèn)。publicprotectedprivate類內(nèi)√√√√包內(nèi)√√√子類√√所有類√(3)類的訪問(wèn)權(quán)限只能是public或無(wú)修飾符。類聲明時(shí),如果在關(guān)鍵字class前面加上public關(guān)鍵字,就稱這樣的類是一個(gè)public類;如果一個(gè)類不加public修飾,這樣的類被稱作友好類。11、基本類型的類包裝1)Java的基本數(shù)據(jù)類型包括:byte、int、short、long、float、double、char、boolean。(2)Java提供了基本數(shù)據(jù)類型相關(guān)的類,實(shí)現(xiàn)了對(duì)基本數(shù)據(jù)類型的封裝。這些類分別是:Byte、Integer、Short、Long、Float、Double、Character和Boolean類。這些類在java.lang包中。(3)除了Boolean類和Character類之外,每個(gè)包裝類都有一個(gè)靜態(tài)的 valueOf(Stringstr)方法和parse×××(Stringstr),用于將字符串轉(zhuǎn)換成相應(yīng)的包裝類的對(duì)象。如:Stringstr=“120”;longi=Long.valueOf(str);intj=Integer.parseInt(str);doublek=Double.parseDouble(str);第4章模擬題在Java中,對(duì)于成員方法floatadd(floatf1,floatf2){ ??}下面選項(xiàng)( )是對(duì)該成員方法的重載。floatadd(floatf){ ??}floatadd(floatf2,floatf1){ ??}voidadd(floatf1,floatf2){ ??}voidaddMethod(floatf1,floatf2){ ??}2. 下列哪些類聲明是正確的?( )A.publicclassA B.privateclassA C.protectedclassA D.以上都正確構(gòu)造方法不可以重載。(×)類中的實(shí)例方法可以操作類變量(static變量),但類方法(static方法)不可以操作實(shí)例變量。(√)5.程序分析題:如課本 105頁(yè)到106頁(yè)的習(xí)題第5章繼承與接口1、子類與父類利用繼承,可以先編寫一個(gè)共有屬性的一般類,根據(jù)該一般類再編寫具有特殊屬性的新類,新類繼承一般類的狀態(tài)和行為,并根據(jù)需要增加它自己的新的狀態(tài)和行為。由繼承而得到的類稱為子類,被繼承的類稱為父類(超類) 。聲明一個(gè)類的子類的格式如下:[訪問(wèn)權(quán)限]class子類名extends父類名{?}2、子類和父類的繼承性在同一個(gè)包中:子類繼承父類中不是private的成員變量和成員方法,即繼承父類的public、子類和父類protected和友好的成員變量和成員方法,且訪問(wèn)權(quán)限不變不在同一個(gè)包中:子類繼承父類的public、protected的成員變量和成員方法,且訪問(wèn)權(quán)限不變注:1.對(duì)于沒(méi)有從父類繼承下來(lái)的成員,子類僅擁有這些成員的所有權(quán),沒(méi)有使用權(quán)。2.子類不繼承父類的構(gòu)造方法。子類未繼承的成員變量引用子類未繼承的成員方法子類對(duì)象子類繼承的成員變量引用 子類繼承的成員方法子類聲明的成員變量子類定義的成員方法3、子類對(duì)象的構(gòu)造過(guò)程1).子類對(duì)象的創(chuàng)建過(guò)程中,必定會(huì)先調(diào)用其父類的構(gòu)造方法,空間,再調(diào)用本類的構(gòu)造方法, 為本類的成員變量分配內(nèi)存空間。

為父類的成員變量分配內(nèi)存2).子類對(duì)象擁有父類對(duì)象的所有成員變量和本類的成員變量,但只有其中一部分(即,子類繼承的那部分)才能被子類對(duì)象直接訪問(wèn)。class FatherClass{private int x;float y;FatherClass(){System. out.println( "調(diào)用構(gòu)造方法 FatherClass()" );x=1;y=1.1f;}protected

void f(){System.

out.println(

"x="

+ x+

",y="

+ y);}}public class ChildClassString str ;

extends FatherClass{ChildClass(){System. out.println(

"調(diào)用構(gòu)造方法 ChildClass()"

);}public staticChildClassc=

void

main(String[]args){newChildClass();//c.x=2;

錯(cuò)誤,父類的成員變量

x是private

的,AA沒(méi)有繼承

xy=2.2f;str="child";c.f();}}棧內(nèi)存堆內(nèi)存x:1y:1.1->2.2str:null->”child”super:***this:****c:***每一個(gè)子類對(duì)象都有一個(gè)

super引用來(lái)指向父類對(duì)象,一個(gè)

this引用指向它本身。程序運(yùn)行結(jié)果:調(diào)用構(gòu)造方法 FatherClass()調(diào)用構(gòu)造方法 ChildClass()x=1,y=2.24、成員變量的隱藏和方法重寫1)成員變量的隱藏只要子類中聲明的成員變量和父類中的成員變量同名時(shí),子類就隱藏了繼承的成員變量2)方法重寫(Override)子類通過(guò)重寫可以隱藏已繼承的實(shí)例方法。重寫的語(yǔ)法規(guī)則1)在子類中可以根據(jù)需要對(duì)從父類中繼承的方法進(jìn)行重寫;2)重寫方法必須和被重寫方法具有相同的方法名稱、參數(shù)列表和返回值類型;3)重寫方法不能使用比被重寫方法更嚴(yán)格的訪問(wèn)權(quán)限。2.重寫的目的子類通過(guò)方法的重寫可以把父類的狀態(tài)和行為改變?yōu)樽陨淼臓顟B(tài)和行為,實(shí)現(xiàn)多態(tài)。注:1)方法重寫和方法重載都是

Java實(shí)現(xiàn)多態(tài)的手段。2)Overload

和Override

的區(qū)別。

Overloaded

的方法是否可以改變返回值的類型

?方法的重寫 Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫 Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載 Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說(shuō)該方法被重寫 (Overriding)。子類的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類中的定義,對(duì)它而言,父類中的定義如同被 “屏蔽”了。如果在一個(gè)類中定義了多個(gè)同名的方法, 它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類型, 則稱為方法的重載 (Overloading)。Overloaded的方法是可以改變返回值的類型。5、使用super調(diào)用父類的構(gòu)造方法子類不繼承父類的構(gòu)造方法,因此,子類如果想使用父類的構(gòu)造方法,必須在子類的構(gòu)造方法中使用關(guān)鍵字super來(lái)表示調(diào)用父類的構(gòu)造方法,而且super必須是子類構(gòu)造方法中的頭一條語(yǔ)句。class FatherClass{FatherClass(){System. out.println(

"調(diào)用構(gòu)造方法

FatherClass()"

);}publicSystem.

void

f(){out.println(

"調(diào)用FatherClass

的成員方法

f()"

);}}public class

ChildClass

extends

FatherClass{ChildClass(){super ();

// 用super

調(diào)用父類的構(gòu)造方法System.

out.println(

"調(diào)用構(gòu)造方法

ChildClass()"

);}public void f(){System. out.println(super .f(); // 用super

"調(diào)用ChildClass調(diào)用父類的f() 方法

的成員方法

f()"

);}public staticChildClassc=

void

main(String[]args){newChildClass();c.f();}}運(yùn)行結(jié)果:調(diào)用構(gòu)造方法 FatherClass()調(diào)用構(gòu)造方法 ChildClass()調(diào)用ChildClass 的成員方法

f()調(diào)用

FatherClass

的成員方法

f()6、final

關(guān)鍵字1)final

變量也是一種常量,值不能被改變,而且在聲明

final

變量時(shí)必須指定初值,否則出錯(cuò)。2)final方法不能夠被重寫3)final類不能被繼承7、對(duì)象的上轉(zhuǎn)型對(duì)象:把子類構(gòu)造的對(duì)象引用放到父類的對(duì)象中,使得父類對(duì)象能夠調(diào)用子類重寫的成員方法。注:對(duì)象的上轉(zhuǎn)型對(duì)象只能調(diào)用從父類繼承的成員變量和成員方法,成員變量和成員方法。

不能調(diào)用子類新增加的class FatherClass{FatherClass(){System. out.println(

"調(diào)用構(gòu)造方法

FatherClass()"

);}publicSystem.

void

f(){out.println(

"調(diào)用FatherClass

的成員方法

f()"

);}}publicclassString

str

ChildClass;

extends

FatherClass{ChildClass(){super ();

// 用super

調(diào)用父類的構(gòu)造方法System.

out.println(

"調(diào)用構(gòu)造方法

ChildClass()"

);}public void f(){System. out.println(super .f(); // 用super

"調(diào)用ChildClass調(diào)用父類的f() 方法

的成員方法

f()"

);}public

void g(){System.

out.println(

"調(diào)用ChildClass

的成員方法

g()"

);}public static void main(String[]args){FatherClassc= newChildClass(); //c 是ChildClass 類對(duì)象的上轉(zhuǎn)型對(duì)象c.str="你好";//非法,str是子類新增加的成員變量,不能用上轉(zhuǎn)型對(duì)象調(diào)用c.f(); // 合法,f() 是從父類繼承后重寫的方法,可以用上轉(zhuǎn)型對(duì)象調(diào)用//c.g();// 非法,g() 是子類新增加的方法,不能用父類的對(duì)象調(diào)用。}}程序運(yùn)行結(jié)果:調(diào)用構(gòu)造方法 FatherClass()調(diào)用構(gòu)造方法 ChildClass()調(diào)用ChildClass 的成員方法 f()調(diào)用FatherClass 的成員方法 f()8、abstract類和abstract方法1)用關(guān)鍵字abstract修飾的方法稱為abstract方法(抽象方法),抽象方法只需聲明,而不用給出方法體的實(shí)現(xiàn)部分,例如:abstractintmin(intx,inty);2)用關(guān)鍵字 abstract修飾的類稱為 abstract類(抽象類)。如:abstractclassA{?}注:(1)含有抽象方法的類必須聲明為抽象類;(2)如果一個(gè)類繼承了抽象類,必須重寫其父類的所有抽象方法,否則要聲明成抽象類;3)抽象類不能用new實(shí)例化,即不能創(chuàng)建抽象類的對(duì)象。如:publicabstractclassAnimal{publicabstractvoidcry();publicabstractStringgetName();}publicclassDogextendsAnimal{//重寫父類的抽象方法,把方法聲明部分的 abstract去掉,其余不變publicvoidcry(){

狗叫,汪汪

");}publicStringgetName(){return"

旺財(cái)";}}//在類Cat中,沒(méi)有重寫完父類的所有抽象方法,

Cat

必須聲明成抽象類publicabstractclassCatextendsAnimal{//重寫父類的抽象方法,把方法聲明部分的

abstract去掉,其余不變publicvoidcry(){

貓叫,喵喵

");}}9、接口為了克服 Java單繼承的缺點(diǎn), Java使用了接口,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。使用關(guān)鍵字interface來(lái)定義一個(gè)接口。接口的定義和類的定義很相似,分為接口的聲明和接口體。1)接口聲明接口通過(guò)使用關(guān)鍵字 interface來(lái)聲明,格式:interface接口名{接口體}2)接口體接口體中包含常量定義和方法定義兩部分。在接口體中聲明的成員變量都是 publicstaticfinal的,即接口中只能聲明常量。在接口體中定義的成員方法都是 publicabstract的,即接口中的只能聲明抽象方法。3)接口的實(shí)現(xiàn)一個(gè)類通過(guò)使用關(guān)鍵字 implements聲明自己實(shí)現(xiàn)一個(gè)或多個(gè)接口。一個(gè)接口如果是public的,則可以被任何類實(shí)現(xiàn);如果沒(méi)有只能被在同一個(gè)包中的類實(shí)現(xiàn)。

public修飾,則為友好接口,如果一個(gè)類用implements聲明實(shí)現(xiàn)一個(gè)接口,但沒(méi)有重寫接口中的所有方法,則這個(gè)類必須要聲明成抽象類。abstract類與接口的比較1)abstract類和接口都可以有 abstract方法。2)接口中只可以有常量 ,不能有變量;而 abstract類中即可以有常量也可以有變量。3)abstract類中也可以有非 abstract方法,接口不可以。第5章模擬題1.下列哪一種敘述是正確的( D)A.a(chǎn)bstract修飾符可修飾字段、方法和類B.抽象方法的 body部分必須用一對(duì)大括號(hào) {}包住C.聲明抽象方法,大括號(hào)可有可無(wú)D.聲明抽象方法不可寫出大括號(hào)2.下列哪種說(shuō)法是正確的( D)A.子類的實(shí)例方法可直接調(diào)用父類的所有實(shí)例方法B.子類的實(shí)例方法可直接調(diào)用父類的類方法 (static方法)C.類方法可直接調(diào)用本類的實(shí)例方法D.實(shí)例方法可直接調(diào)用本類的類方法下列說(shuō)法錯(cuò)誤的是(A)A.父類的final方法可以被子類重寫B(tài).final變量在聲明時(shí)必須指定初值,而且之后它的值不能再被改變C.final類不能被繼承,即不能有子類D.父類的final方法不允許子類重寫以下說(shuō)法正確的是(B)接口中既能聲明常量,也能聲明變量abstract類中既可以有常量也可以有變量接口中可以有非abstract方法,也可以有abstract方法D.abstract類只能有 abstract方法假設(shè)已經(jīng)定義了一個(gè)接口如下:publicinterfacePrintInfo{publicabstractvoidprintSum();publicvoidprintSub();}則以下的類定義中正確的是( D )A.classAimplementsPrintInfo{}C.classAimplementsPrinInfo{publicabstractvoidprintSum(){}publicvoidprintSub(){}

classAimplementsPrintInfo{publicvoidprintSub(){}}D.classAimplementsPrinInfo{publicvoidprintSum(){}publicvoidprintSub(){}} }4.在Sample1.java文件中的 java源代碼如下:classA{intsum(intx,inty){returnx+y;}intsub(intx,inty){returnx-y;}}classBextendsA{intsum(intx,inty){returnx+y+5;}publicclassSample1{publicstaticvoidmain(String[]args){Bb=newB();intsum=b.sum(30,20);intsub=b.sub(30,20);“sum=”+sum+“,”);“sub=”+sub);}}上述程序運(yùn)行的運(yùn)行結(jié)果是 sum=55,sub=10課本135頁(yè)習(xí)題3、5、7、8第6章內(nèi)部類與異常類try{//可能出現(xiàn)異常的語(yǔ)句}catch(異常類名稱 對(duì)象名){異常處理的代碼}finally{釋放一些不再使用的資源}]使用try~catch語(yǔ)句來(lái)處理異常,將可能出現(xiàn)的異常操作放在 語(yǔ)句的try部分,當(dāng)try部分中的某個(gè)方法調(diào)用發(fā)生異常后, try部分將立刻結(jié)束執(zhí)行,而轉(zhuǎn)向執(zhí)行相應(yīng)的catch部分。無(wú)論是否拋出異常, finally語(yǔ)句都會(huì)被執(zhí)行, finally語(yǔ)句可有可無(wú)。模擬題:選擇題:以下代碼:publicclassClassDemo{publicstaticvoidmain(String[]args){try{//循環(huán)打印父類信息,直到?jīng)]有父類if(cls!=null)加載“idbc-odbc驅(qū)動(dòng)成功");}catch(Exceptionex){系統(tǒng)“正在維護(hù)中 ");}finally{

歡迎“你

");}}}假設(shè)不存在類

,則程序運(yùn)行結(jié)果是(

B )A.加載

idbc-odbc驅(qū)動(dòng)成功

B.系統(tǒng)正在維護(hù)中系統(tǒng)正在維護(hù)中

歡迎你C.加載

idbc-odbc驅(qū)動(dòng)成功

D.系統(tǒng)正在維護(hù)中系統(tǒng)正在維護(hù)中歡迎你判斷題1、內(nèi)部類的類體中不可以聲明

static成員變量(類變量)和

static成員方法(類方法)。( √ )2、匿名類一定是內(nèi)部類,因此匿名類的類體不能聲明

static成員變量(類變量)和

static成員方法(類方法)。( √ )3.異常就是在編寫代碼時(shí)由于疏忽而出現(xiàn)一些語(yǔ)法錯(cuò)誤。

( X )4、第9章常用實(shí)用類String和StringBuffer在Java中一旦創(chuàng)建了字符串String就不能直接更改,這就是字符串的不變性;而StringBuffer類正是針對(duì)此問(wèn)題而提供的字符可變序列可以修改的字符串;

,StringBuffer類用于表示StringBuffer與String是同等的類,唯一區(qū)別是可以進(jìn)行更改。字符串比較要判斷兩個(gè)字符串是否相等,可以使用“==運(yùn)”算符和equals()方法,但是得到的結(jié)果可能不完全相同;運(yùn)算符用于比較兩個(gè)引用是否指向同一個(gè)對(duì)象;而equals()方法則是比較兩個(gè)字符串中的內(nèi)容是否相同,其原型:booleanequals(ObjectanObject)如果相等返回 true,否則返回 false。舉例:publicclassStringDemo{publicstaticvoidmain(String[]args){Stringstr1="ACCP",str2="ACCP";Stringstr3=newString("NEWER"),str4=newString("NEWER");if(str1==str2){

和str2指向同一字符串

");}else{

和str2分別指向不同字符串

");}if(str1.equals(str2)){和str2的內(nèi)容完全相同 ");}else{和str2的內(nèi)容不相同 ");}if(str3==str4){

和str4指向同一字符串

");}else{

和str4分別指向不同字符串

");}if(str3.equals(str4)){和str4的內(nèi)容完全相同 ");}else{和str4的內(nèi)容不相同 ");}}}程序運(yùn)行結(jié)果:str1和str2指向同一字符串str1和str2的內(nèi)容完全相同str3和str4分別指向不同字符串str3 和str4 的內(nèi)容完全相同3.String 類中要掌握的方法:(1)intindexOf(intch) 搜索字符 ch在當(dāng)前字符串中第一次出現(xiàn)的索引,沒(méi)有出現(xiàn)則返回-1(2)Stringsubstring(intbegin,intend) 用于提取 begin 和end 位置之間的字符串部分,不包括 end 處的字符(3)Stringtrim() 用于返回一個(gè)前后不含任何空格的調(diào)用字符串的副本(4)intlength() 用來(lái)獲得字符串的長(zhǎng)度4.StringBuffer 類中要掌握的方法:(1)StringBufferappend(Strings) 將字符串 s追加到一個(gè)字符串的末尾,也可以用append 方法將基本數(shù)據(jù)類型的值追加到一個(gè)字符串的末尾第9章模擬題假設(shè)有如下的語(yǔ)句聲明:Stringstr1=newString("java");Stringstr2="java";Stringstr3="javaApp";則表達(dá)式 str1==str2 的值為 false ,調(diào)用方法 str1.equals(str2) 得到的返回值是true ,調(diào)用str3.trim().length() 得到的返回值是 8 。2.假設(shè)有如下的語(yǔ)句聲明了一個(gè) StringBuffer 對(duì)象:StringBuffersb=newStringBuffer("java");則要在sb對(duì)象中的字符串末尾追加一個(gè)字符串 "world" ,則應(yīng)該使用下列的哪條語(yǔ)句實(shí)現(xiàn)?(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論