版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Java考試要點第1章Java語句概述5%1、Java具有面向?qū)ο?、與平臺無關(guān)、安全、穩(wěn)定和多線程等優(yōu)良特性,是目前軟件設(shè)計中優(yōu)秀的編程語言。2、Java在計算機的操作系統(tǒng)之上再提供一個Java運行環(huán)境(JavaRuntimeEnvironment,JRE),該運行環(huán)境由Java虛擬機(JavaVirtualMachine,JVM)、類庫以及一些核心文件組成。 Java程序的運行環(huán)境:JREJava源代碼(*.java 文件)
類裝載器字節(jié)碼的驗證
Java類庫JVMJava解釋器 即時編譯器JIT字節(jié)碼傳輸?shù)絁ava編譯器本地或網(wǎng)絡(luò)運行期系統(tǒng)操作系統(tǒng)Java字節(jié)碼(.class 文件)硬件說明:(1)Java編譯器:負責將Java源程序文件(擴展名.java)編譯成字節(jié)碼文件(擴展名.class),對應(yīng)JDK安裝目錄下的javac.exe。(2)JRE(JavaRuntimeEnvironment):在計算機操作系統(tǒng)之上的 Java運行環(huán)境。(3)JVM(JavaVirtualMachine):稱為Java虛擬機,是JRE中的一部分,負責字節(jié)碼文件(擴展名.class)的解釋與執(zhí)行。(4)Java解釋器:JVM的一部分,負責字節(jié)碼文件(擴展名.class)的解釋與執(zhí)行,對應(yīng)JDK安裝目錄下的java.exe。(5)Java即時編譯器JIT(JustInTime):SUN公司在Java2發(fā)行版的Java虛擬機中提供了JIT編譯器,主要用途是將字節(jié)碼指令集直接轉(zhuǎn)換為針對某一特定微處理器的機器代碼指令,提高Java代碼的執(zhí)行速度。3、開發(fā)一個Java程序需要經(jīng)過三個步驟:1)編寫源文件(擴展名.java),如HelloWorld.java。注:(1)java源文件的命名規(guī)則:一個java源文件中只能有一個public類,并且java源文件名要與public類的類名完全相同;如果java源文件中沒有public類,那么源文件名只要與其中一個類的類名相同就可以了。(2)一個java源文件要能夠被運行,必須要有一個類包含有 publicstaticvoidmain(String[]args)的方法。3)java的代碼是區(qū)分大小寫的。2)編譯Java源程序:使用Java編譯器編譯源文件(擴展名.java),得到字節(jié)碼文件(擴展名.class),命令格式:javac源文件名.java,如javacHelloWorld.java3)解釋執(zhí)行字節(jié)碼文件:使用Java虛擬機JVM來解釋執(zhí)行字節(jié)碼文件,命令格式:java字節(jié)碼文件名,如javaHelloWorld4、Java程序的開發(fā)環(huán)境需要安裝 JDK(SoftwareDevleopmentKit,軟件開發(fā)工具),在JDK中包含了一些有助于程序員開發(fā) Java程序的 Java開發(fā)工具包,如類庫、編譯器、調(diào)試器、 Java運行時環(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在編譯和運行時需要用到的類庫(由一些.class文件組成)所在的路徑,這些類庫被包含在JDK安裝目錄下的jre子目錄中。第1章模擬題:下列語句哪一個正確()A.Java程序經(jīng)編譯后會產(chǎn)生二進制的機器碼文件B.Java程序經(jīng)編譯后會產(chǎn)生字節(jié)碼文件C.Java程序經(jīng)編譯后會產(chǎn)生 DLL文件D.以上都不正確2.編譯JavaApplication 源程序文件將產(chǎn)生相應(yīng)的字節(jié)碼文件, 這些字節(jié)碼文件的擴展名為(
)A.
.java
B.
.class
C.
.html
D.
.exe3.下列說法錯誤的是( )A.環(huán)境變量可在編譯源代碼時指定B.在編譯程序時,所能指定的環(huán)境變量不包括
classpathC.javac一次可同時編譯數(shù)個 Java源文件D.javac.exe能指定編譯結(jié)果要置于哪個目錄(
directory)4、開發(fā)與運行 Java程序需要經(jīng)過的三個主要步驟為編譯源文件生成字節(jié)碼 和 加載運行字節(jié)碼
編寫源文件。
、5、如果一個
Java源程序文件中定義有
3個類,則使用
Sun公司的
JDK
編譯器
javac.exe
編譯該源程序文件將產(chǎn)生
3
個文件名與類名相同而擴展名為
.class的字節(jié)碼文件。6.Java程序中的public類的名稱必須與存放該類的文件名相同。( √)第2章基本類型、數(shù)組和枚舉類型1、Java標識符命名規(guī)則◆標識符由字母、下劃線“_”、美元符號“$”或數(shù)字組成◆標識符應(yīng)以字母、下劃線、美元符號開頭◆Java標識符大小寫敏感,長度無限制◆約定:Java標識符選取要“見名知意”,而且不能與Java語言的關(guān)鍵字重名。2、關(guān)鍵字:所有Java關(guān)鍵字都是小寫英文,不可以把關(guān)鍵字做為標識符來用。3、Java語言有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,也可以沒有后綴)。4、基本數(shù)據(jù)類型的轉(zhuǎn)換 floatf=(float)12.0; floatf=12.0f;Java中數(shù)據(jù)的基本類型(不包括邏輯類型)按精度從 “低”到“高”排列:byte short char int long float double1)當把級別低的變量的值賦給級別高的變量時,系統(tǒng)自動完成數(shù)據(jù)類型的轉(zhuǎn)換(自動類型轉(zhuǎn)換)。例如:floatx=100;2)當把級別高的變量的值賦給級別低的變量時,必須使用顯示類型轉(zhuǎn)換運算(強制類型轉(zhuǎn)換)。顯示轉(zhuǎn)換的格式:(類型名)要轉(zhuǎn)換的值;例如intx=(int)34.89;5、從命令行輸入、輸出數(shù)據(jù)1)輸入數(shù)據(jù)首先使用Scanner類創(chuàng)建一個對象,再通過Scanner類對象調(diào)用下列方法,讀取用戶在命令行輸入的各種基本數(shù)據(jù)類型和字符串:nextBoolean()、nextByte()、nextShort()、nextInt()nextLong()、nextFloat()、nextDouble()、nextLine()其中nextLine()是讀取用戶輸入的字符串( String類型)。2)輸出數(shù)據(jù)用或可輸出字符串、表達式的值,二者的區(qū)別是前者輸出數(shù)據(jù)后換行,后者不換行。允許使用符號“+將”變量、表達式或一個常數(shù)值與一個字符串首尾相接后再一起輸出,如下列一段代碼:intm=10;doublesum=120;個數(shù)的和為"+sum);大于“”+122);正確運行后,輸出的結(jié)果是:10個數(shù)的和為120.0123大于122(3)輸入輸出的例子:importpublicclassTest{publicstaticvoidmain(String[]args){//1.創(chuàng)建一個Scanner對象,對象名為 inScannerin=newScanner(System.in);//2.提示用戶輸入年齡System.out.print("請輸入年齡: ");//3.通過對象in調(diào)用Scanner類的方法nextInt()讀取用戶輸入的一個整數(shù)intage=in.nextInt();//3.輸出ageSystem.out.println("你輸入的年齡是: "+age);}}運行結(jié)果:請輸入年齡: 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程序中每一個變量都屬于特定的數(shù)據(jù)類型,從本質(zhì)上講,變量其實是內(nèi)存中的一小塊區(qū)域,使用變量名來訪問這塊區(qū)域。因此,每一個變量使用前必須先聲明(申請內(nèi)存),然后必須進行賦值(填充內(nèi)存區(qū)域),才能使用(讀取內(nèi)存區(qū)域的值)。3)要準確分析一個Java程序,就要了解java程序的執(zhí)行過程:Java虛擬機3)Java變量的分類按被聲明的位置劃分:–局部變量:方法或語句塊內(nèi)部定義的變量–成員變量:方法外部且在類的內(nèi)部定義的變量–注意:類外面(與類對應(yīng)的大括號外面)不能有變量的聲明。–變量作用域的識別方法:凡是在大括號里面聲明的,出了對應(yīng)的大括號就不能使用了另外,用static聲明的變量叫類變量或靜態(tài)變量,static類型的變量是保存在datasegment中。引用類型(除了基本數(shù)據(jù)類型以外的類型,包括數(shù)組、String和用戶自定義的一些類)的變量,在棧(stack)中保存的是一個引用,指向堆(heap)或datasegment中的一個內(nèi)存區(qū)域,默認值是null?;緮?shù)據(jù)類型的變量直接在棧中保存它本身的值。7、Eclipse調(diào)試初步一、調(diào)試快捷鍵–F5:單步跳入方法中–F6:逐條語句單步執(zhí)行–F7:單步返回主方法–F8:斷點間跳躍,如果當前斷點后面沒有其他斷點,則結(jié)束調(diào)試8、數(shù)組8.1數(shù)組的聲明和使用數(shù)組是相同類型的變量按順序組成的一種復(fù)合數(shù)據(jù)類型,稱這些相同類型的變量為數(shù)組的元素或單元。數(shù)組通過數(shù)組名加索引來使用數(shù)組的元素。索引從0開始。數(shù)組的使用要經(jīng)過以下步驟: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語言聲明數(shù)組時不能指定其長度(數(shù)組中元素的個數(shù))inta[5]; //非法
,例如:intvar3[2][3]={{1,2,3},{4,5,6}};//非法2)為數(shù)組分配內(nèi)存空間——用new在堆中為每個數(shù)組元素分配內(nèi)存空間,并將一個指向堆中這塊內(nèi)存空間的一個引用保存到棧中的數(shù)組變量對應(yīng)的內(nèi)存區(qū)域中。格式如下:數(shù)組名字=new數(shù)組元素的類型[數(shù)組元素的個數(shù)];例如:boy=newfloat[4];為數(shù)組分配內(nèi)存空間后,數(shù)組boy在堆中獲得4個用來存放float類型數(shù)據(jù)的內(nèi)存空間,即4個float型元素。數(shù)組變量boy中存放著這些內(nèi)存單元的引用,這樣就可以通過數(shù)組變量boy和索引操作堆中的這些內(nèi)存單元。注:用new為數(shù)組元素在堆中分配內(nèi)存后,每個數(shù)組元素會被初始化為一個默認值(整型為0,浮點型為0.0,布爾型為false,引用類型為null)(3)訪問數(shù)組元素——通過數(shù)組變量和索引操作堆中存放數(shù)組元素的內(nèi)存單元在訪問數(shù)組元素時,要防止索引越界的情況。可以通過“數(shù)組名.length”獲取數(shù)組的元素個數(shù)。對于一維數(shù)組,“數(shù)組名.length”的值就是數(shù)組中元素的個數(shù);對于二維數(shù)組“數(shù)組名.length”的值是它含有的一維數(shù)組的個數(shù)。如:對于 floata[]=newfloat[12]; a.length的值12對于 intb[][]=newint[3][6]; b.length的值是38.2數(shù)組的內(nèi)存分析為了正確分析使用了數(shù)組的 java程序,最好畫出程序的內(nèi)存分析圖,這樣就能正確得出程序的運行結(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);//該語句執(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聲明枚舉類型,語法格式如下:enum枚舉名{ 常量列表}其中的常量列表是用逗號分割的字符序列且后面沒有 “;”做為結(jié)束符,稱為枚舉類型的常量(枚舉類型的常量要符合標識符的命名規(guī)定) 。注:枚舉類型可以在類外部聲明,也可以在類內(nèi)部聲明或在一個單獨的 Java源文件中聲明。publicclassTest{enumSeason{spring,summer,autumn,winter}publicstaticvoidmain(String[]args){Seasonx=Seasonautumn;.}}運行結(jié)果:autumn第2章模擬題1.下列哪個是合法的 java標識符( )A.stu-Count B.$int_long C.byte D.12342.下列說法正確的有( )A.數(shù)組是一種引用類型B.數(shù)組屬于一種基本類型C.intnumber[6]={31,23,33,43,35,63}D.如果一個數(shù)組的元素個數(shù)是 5,那么它的最大索引號是 53.java語言中,int類型的變量所占的內(nèi)存空間是( )字節(jié)A.2 B.4 C.6 D.84.以下程序的運行結(jié)果是( )publicclassTest{publicstaticvoidmain(Stringargs[]){intx=12;longy=8.0; //longy=(long)8.0}}A.20 B.20.0 C.出錯 D.125.以下程序的運行結(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.以下程序的運行結(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語言使用采用Unicode字符編碼,是用16位來表示一個字符。(√)8.基本數(shù)據(jù)類型之間可以任意轉(zhuǎn)換。(×)9.聲明語句:floatf=3.4;是錯誤的。(√)可以通過“一維數(shù)組名.length()”得到一維數(shù)組的元素個數(shù)。(×)11.要得一個 String對象的字符個數(shù),可以通過“ String對象名.length()”得到(√)第3章運算符、表達式和語句1.自增、自減運算符++、――2.算術(shù)混合運算的精度3.條件分支語句 if和switch4.循環(huán)語句 for、while、do~while6.break和contiue語句第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.下列運算符合法的是( )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);}}得到的運行結(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; //錯誤,改成 s1=(short)(s1+1); 或 s1+=1; 或s1++;s1++;}}得到的運行結(jié)果是( )A.1
B.2
C.3
D.出錯6.以下應(yīng)用程序是求
1?。?!+...+20!,請將程序代碼補充完整:
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.以下程序的運行結(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章類與對象1、面向?qū)ο缶幊痰娜筇卣鳎悍庋b性、繼承和多態(tài)1)封裝可以隱藏對象實現(xiàn)的細節(jié)部分2)繼承:繼承是一種由已有的類創(chuàng)建新類的機制。利用繼承,我們可以先創(chuàng)建一個共有屬性的一般類,根據(jù)該一般類再創(chuàng)建具有特殊屬性的新類。3)多態(tài):多態(tài)是面向?qū)ο缶幊痰挠忠恢匾匦?。子類可以體現(xiàn)多態(tài),即子類可以根據(jù)各自的需要重寫的父類的某個方法,子類通過方法的重寫可以把父類的狀態(tài)和行為改變?yōu)樽陨淼臓顟B(tài)和行為。接口也可以體現(xiàn)多態(tài),即不同的類在實現(xiàn)同一接口時,可以給出不同的實現(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、對象和類的概念對象是用計算機語言對問題域中事物的描述,對象通過 “屬性(attribute)”和“方法(method)”來分別對應(yīng)事物所具有的靜態(tài)屬性(狀態(tài))和動態(tài)屬性(行為) 。類是具有相同屬性和方法的對象的集合,類中定義了這一類對象所具有的屬性(用成員變量定義)和行為(用成員方法定義)。類可以看成一類對象的模板,對象可以看成該類的一個具體的實例;對象是引用數(shù)據(jù)類型,使用 new運算符構(gòu)造對象實例,使用成員運算符“ .”訪問對象中的成員;3、編寫java代碼的順序(1)聲明類[訪問權(quán)限][final]class<類名>[extends父類名][implements接口列表]{//聲明成員變量//定義構(gòu)造方法//定義成員方法}(2)聲明類的成員變量[訪問權(quán)限][static][final]< 變量類型><變量名>;(3)定義構(gòu)造方法[訪問權(quán)限]類名([形參列表]){聲明局部變量語句序列}(4)定義成員方法[訪問權(quán)限]<方法返回值的類型 ><方法名>([形參列表]){聲明局部變量語句序列}(5)使用類第1步:聲明類對象類名對象名;注:聲明類對象后,在棧內(nèi)存中就為對象變量分配一塊內(nèi)存區(qū)域來存放對象的引用,默認值為null。第2步:構(gòu)造類對象,即為類對象的成員變量分配內(nèi)存對象名 =new構(gòu)造方法名( [實參列表]);注:用new調(diào)用類的構(gòu)造方法后,就為該對象的每一個成員變量在堆內(nèi)存中分配了內(nèi)存區(qū)域,并給每一個成員變量賦初值, 堆內(nèi)存中的為對象的成員變量分配的內(nèi)存區(qū)域稱為對象的實例。static的成員變量不在堆中分配內(nèi)存,而是在datasegment中分配內(nèi)存,而且該類的所有對象共享其static的成員變量。第3步:通過對象名引用成員變量和成員方法對象名
.成員變量名對象名
.成員方法名
([實參列表
])4、成員變量的定義:[訪問權(quán)限
][static][final]<
變量類型
><變量名
>;在類的外部,要通過類的對象來訪問它的成員變量,即“對象名果是static變量(稱為靜態(tài)變量或類變量),還可以通過“類名
.成員變量名”的方式。如.成員變量名”來訪問。5、構(gòu)造方法定義:[訪問權(quán)限]類名([形參列表]){聲明局部變量語句序列}構(gòu)造方法是特殊的成員方法,它與類同名,在對象實例化時由虛擬機自動調(diào)用;舉例:對象的內(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){聲明對象p1和p2Pointp1,p2;//為對象p1的成員變量分配內(nèi)存,使用new和類中的構(gòu)造方法p1=newPoint(10,10,10);//為對象p2的成員變量分配內(nèi)存,使用new和類中的構(gòu)造方法p2=newPoint(23,35,30);System.out.println("p1對象的成員變量x,y,z值:"+p1.x+","+p1.y+","+p1.z);System.out.println("p2對象的成員變量x,y,z值:"+p1.x+","+p1.y+","+p1.z);把p2的引用賦給p1,兩個對象具有相同的引用,具有完全相同的實體p1=p2;System. out.println( "p1對象的成員變量 x,y,z 值:"+p1. x+ "," +p1. y+ "," +p1. z);System. out.println( "p2對象的成員變量 x,y,z 值:"+p1. x+ "," +p1. y+ "," +p1. z);}}棧內(nèi)存p1:***nullp2:****null對象的引用所以程序運行結(jié)果為:p1對象的成員變量x,y,z值:10,10,30p2對象的成員變量x,y,z值:10,10,30p1對象的成員變量x,y,z值:23,35,30p2對象的成員變量x,y,z值:23,35,30
堆內(nèi)存x:10y:10x:230y:350對象的實例z:10->30Datasegment請注意:1)構(gòu)造方法必須用new來調(diào)用;2)構(gòu)造方法沒有返回值類型,也不能有返回值;(3)因為是由虛擬機來調(diào)用構(gòu)造方法,所以構(gòu)造方法一般應(yīng)定義成 public;4)在沒有定義構(gòu)造方法的情況下,類會自動產(chǎn)生一個無參數(shù)的默認構(gòu)造方法,這個默認的構(gòu)造方法什么都不做;5)一旦顯式地定義了構(gòu)造方法,默認構(gòu)造方法自動消失。6、定義成員方法的一般形式:[訪問權(quán)限][static] 返回值類型 方法名稱([形參列表]){方法主體;}類的成員方法要通過“對象名.成員方法名([實參列表])”的方式來調(diào)用。static成員方法(稱為靜態(tài)方法或類方法),還可以通過“類名.成員方法名([實參列表])”來調(diào)用。注:(1)static成員方法(類方法)不能操作非 static的成員變量和成員方法;2)static成員方法沒有this引用。7、方法重載:用于在同一類中,定義一組方法,這些方法具有相同的名稱,并執(zhí)行類似的操作,但是卻使用不同的參數(shù)列表(參數(shù)數(shù)量不同、參數(shù)類型不同或參數(shù)順序不同) 。注:方法重載跟方法的返回值類型沒有任何關(guān)系。成重載。只有在同一個類中的方法才有可能構(gòu)成重載。
也就是說,只有返回值不同的方法不能構(gòu)8、this
關(guān)鍵字this是
Java的一個關(guān)鍵字,
this
可以出現(xiàn)在實例方法和構(gòu)造方法中,表示調(diào)用該方法的當前對象。注:(1)this不可以出現(xiàn)在
static方法(類方法)中。(2)每個成員方法(除
static方法外)都有一個隱含的
this
引用,它總是指向調(diào)用它的對象;3)可以在一個類的構(gòu)造方法中,使用“this([實參列表]);”來調(diào)用該類的另外一個構(gòu)造方法。如:publicclassTest{publicstaticvoidmain(String[]args){Students=newStudent("zhangsha");}}classStudent{Stringname;intage;publicStudent(Stringname) {this(name,20);沒有給定年齡 ");默認年齡為 20");}publicStudent(Stringname,intage){=name;this.age=age;}}9、包:包是Java語言中有效地管理類的一個機制。包名的目的是有效的區(qū)分名字相同的類。分屬不同包的類名相同也不會引起沖突;能在包與包之間對于類的訪問權(quán)限提供更有力的約束。使用package關(guān)鍵字將某個包中的類導(dǎo)入當前 java源文件中,語法是:package包名.類名; //導(dǎo)入包中的一個類package包名.*; //導(dǎo)入包中的所有類該語句必須是整個源文件的第一條語句;10、訪問權(quán)限:1)訪問修飾符用來控制訪問權(quán)限,可以有效地保證數(shù)據(jù)安全;2)對于一個class內(nèi)的成員變量或成員方法,可修飾為:public:可以被任何 class訪問;protected:可以被同一包內(nèi)的其它 class訪問,也能被它自己的子類訪問;無修飾符:可以被同一包內(nèi)的其它 class訪問 ;private:只能在本 class內(nèi)訪問。publicprotectedprivate類內(nèi)√√√√包內(nèi)√√√子類√√所有類√(3)類的訪問權(quán)限只能是public或無修飾符。類聲明時,如果在關(guān)鍵字class前面加上public關(guān)鍵字,就稱這樣的類是一個public類;如果一個類不加public修飾,這樣的類被稱作友好類。11、基本類型的類包裝1)Java的基本數(shù)據(jù)類型包括:byte、int、short、long、float、double、char、boolean。(2)Java提供了基本數(shù)據(jù)類型相關(guān)的類,實現(xiàn)了對基本數(shù)據(jù)類型的封裝。這些類分別是:Byte、Integer、Short、Long、Float、Double、Character和Boolean類。這些類在java.lang包中。(3)除了Boolean類和Character類之外,每個包裝類都有一個靜態(tài)的 valueOf(Stringstr)方法和parse×××(Stringstr),用于將字符串轉(zhuǎn)換成相應(yīng)的包裝類的對象。如:Stringstr=“120”;longi=Long.valueOf(str);intj=Integer.parseInt(str);doublek=Double.parseDouble(str);第4章模擬題在Java中,對于成員方法floatadd(floatf1,floatf2){ ??}下面選項( )是對該成員方法的重載。floatadd(floatf){ ??}floatadd(floatf2,floatf1){ ??}voidadd(floatf1,floatf2){ ??}voidaddMethod(floatf1,floatf2){ ??}2. 下列哪些類聲明是正確的?( )A.publicclassA B.privateclassA C.protectedclassA D.以上都正確構(gòu)造方法不可以重載。(×)類中的實例方法可以操作類變量(static變量),但類方法(static方法)不可以操作實例變量。(√)5.程序分析題:如課本 105頁到106頁的習題第5章繼承與接口1、子類與父類利用繼承,可以先編寫一個共有屬性的一般類,根據(jù)該一般類再編寫具有特殊屬性的新類,新類繼承一般類的狀態(tài)和行為,并根據(jù)需要增加它自己的新的狀態(tài)和行為。由繼承而得到的類稱為子類,被繼承的類稱為父類(超類) 。聲明一個類的子類的格式如下:[訪問權(quán)限]class子類名extends父類名{?}2、子類和父類的繼承性在同一個包中:子類繼承父類中不是private的成員變量和成員方法,即繼承父類的public、子類和父類protected和友好的成員變量和成員方法,且訪問權(quán)限不變不在同一個包中:子類繼承父類的public、protected的成員變量和成員方法,且訪問權(quán)限不變注:1.對于沒有從父類繼承下來的成員,子類僅擁有這些成員的所有權(quán),沒有使用權(quán)。2.子類不繼承父類的構(gòu)造方法。子類未繼承的成員變量引用子類未繼承的成員方法子類對象子類繼承的成員變量引用 子類繼承的成員方法子類聲明的成員變量子類定義的成員方法3、子類對象的構(gòu)造過程1).子類對象的創(chuàng)建過程中,必定會先調(diào)用其父類的構(gòu)造方法,空間,再調(diào)用本類的構(gòu)造方法, 為本類的成員變量分配內(nèi)存空間。
為父類的成員變量分配內(nèi)存2).子類對象擁有父類對象的所有成員變量和本類的成員變量,但只有其中一部分(即,子類繼承的那部分)才能被子類對象直接訪問。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;
錯誤,父類的成員變量
x是private
的,AA沒有繼承
xy=2.2f;str="child";c.f();}}棧內(nèi)存堆內(nèi)存x:1y:1.1->2.2str:null->”child”super:***this:****c:***每一個子類對象都有一個
super引用來指向父類對象,一個
this引用指向它本身。程序運行結(jié)果:調(diào)用構(gòu)造方法 FatherClass()調(diào)用構(gòu)造方法 ChildClass()x=1,y=2.24、成員變量的隱藏和方法重寫1)成員變量的隱藏只要子類中聲明的成員變量和父類中的成員變量同名時,子類就隱藏了繼承的成員變量2)方法重寫(Override)子類通過重寫可以隱藏已繼承的實例方法。重寫的語法規(guī)則1)在子類中可以根據(jù)需要對從父類中繼承的方法進行重寫;2)重寫方法必須和被重寫方法具有相同的方法名稱、參數(shù)列表和返回值類型;3)重寫方法不能使用比被重寫方法更嚴格的訪問權(quán)限。2.重寫的目的子類通過方法的重寫可以把父類的狀態(tài)和行為改變?yōu)樽陨淼臓顟B(tài)和行為,實現(xiàn)多態(tài)。注:1)方法重寫和方法重載都是
Java實現(xiàn)多態(tài)的手段。2)Overload
和Override
的區(qū)別。
Overloaded
的方法是否可以改變返回值的類型
?方法的重寫 Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫 Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載 Overloading是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調(diào)用子類中的定義,對它而言,父類中的定義如同被 “屏蔽”了。如果在一個類中定義了多個同名的方法, 它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型, 則稱為方法的重載 (Overloading)。Overloaded的方法是可以改變返回值的類型。5、使用super調(diào)用父類的構(gòu)造方法子類不繼承父類的構(gòu)造方法,因此,子類如果想使用父類的構(gòu)造方法,必須在子類的構(gòu)造方法中使用關(guān)鍵字super來表示調(diào)用父類的構(gòu)造方法,而且super必須是子類構(gòu)造方法中的頭一條語句。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();}}運行結(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
變量時必須指定初值,否則出錯。2)final方法不能夠被重寫3)final類不能被繼承7、對象的上轉(zhuǎn)型對象:把子類構(gòu)造的對象引用放到父類的對象中,使得父類對象能夠調(diào)用子類重寫的成員方法。注:對象的上轉(zhuǎn)型對象只能調(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 類對象的上轉(zhuǎn)型對象c.str="你好";//非法,str是子類新增加的成員變量,不能用上轉(zhuǎn)型對象調(diào)用c.f(); // 合法,f() 是從父類繼承后重寫的方法,可以用上轉(zhuǎn)型對象調(diào)用//c.g();// 非法,g() 是子類新增加的方法,不能用父類的對象調(diào)用。}}程序運行結(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方法(抽象方法),抽象方法只需聲明,而不用給出方法體的實現(xiàn)部分,例如:abstractintmin(intx,inty);2)用關(guān)鍵字 abstract修飾的類稱為 abstract類(抽象類)。如:abstractclassA{?}注:(1)含有抽象方法的類必須聲明為抽象類;(2)如果一個類繼承了抽象類,必須重寫其父類的所有抽象方法,否則要聲明成抽象類;3)抽象類不能用new實例化,即不能創(chuàng)建抽象類的對象。如:publicabstractclassAnimal{publicabstractvoidcry();publicabstractStringgetName();}publicclassDogextendsAnimal{//重寫父類的抽象方法,把方法聲明部分的 abstract去掉,其余不變publicvoidcry(){
狗叫,汪汪
");}publicStringgetName(){return"
旺財";}}//在類Cat中,沒有重寫完父類的所有抽象方法,
Cat
必須聲明成抽象類publicabstractclassCatextendsAnimal{//重寫父類的抽象方法,把方法聲明部分的
abstract去掉,其余不變publicvoidcry(){
貓叫,喵喵
");}}9、接口為了克服 Java單繼承的缺點, Java使用了接口,一個類可以實現(xiàn)多個接口。使用關(guān)鍵字interface來定義一個接口。接口的定義和類的定義很相似,分為接口的聲明和接口體。1)接口聲明接口通過使用關(guān)鍵字 interface來聲明,格式:interface接口名{接口體}2)接口體接口體中包含常量定義和方法定義兩部分。在接口體中聲明的成員變量都是 publicstaticfinal的,即接口中只能聲明常量。在接口體中定義的成員方法都是 publicabstract的,即接口中的只能聲明抽象方法。3)接口的實現(xiàn)一個類通過使用關(guān)鍵字 implements聲明自己實現(xiàn)一個或多個接口。一個接口如果是public的,則可以被任何類實現(xiàn);如果沒有只能被在同一個包中的類實現(xiàn)。
public修飾,則為友好接口,如果一個類用implements聲明實現(xiàn)一個接口,但沒有重寫接口中的所有方法,則這個類必須要聲明成抽象類。abstract類與接口的比較1)abstract類和接口都可以有 abstract方法。2)接口中只可以有常量 ,不能有變量;而 abstract類中即可以有常量也可以有變量。3)abstract類中也可以有非 abstract方法,接口不可以。第5章模擬題1.下列哪一種敘述是正確的( D)A.a(chǎn)bstract修飾符可修飾字段、方法和類B.抽象方法的 body部分必須用一對大括號 {}包住C.聲明抽象方法,大括號可有可無D.聲明抽象方法不可寫出大括號2.下列哪種說法是正確的( D)A.子類的實例方法可直接調(diào)用父類的所有實例方法B.子類的實例方法可直接調(diào)用父類的類方法 (static方法)C.類方法可直接調(diào)用本類的實例方法D.實例方法可直接調(diào)用本類的類方法下列說法錯誤的是(A)A.父類的final方法可以被子類重寫B(tài).final變量在聲明時必須指定初值,而且之后它的值不能再被改變C.final類不能被繼承,即不能有子類D.父類的final方法不允許子類重寫以下說法正確的是(B)接口中既能聲明常量,也能聲明變量abstract類中既可以有常量也可以有變量接口中可以有非abstract方法,也可以有abstract方法D.abstract類只能有 abstract方法假設(shè)已經(jīng)定義了一個接口如下: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);}}上述程序運行的運行結(jié)果是 sum=55,sub=10課本135頁習題3、5、7、8第6章內(nèi)部類與異常類try{//可能出現(xiàn)異常的語句}catch(異常類名稱 對象名){異常處理的代碼}finally{釋放一些不再使用的資源}]使用try~catch語句來處理異常,將可能出現(xiàn)的異常操作放在 語句的try部分,當try部分中的某個方法調(diào)用發(fā)生異常后, try部分將立刻結(jié)束執(zhí)行,而轉(zhuǎn)向執(zhí)行相應(yīng)的catch部分。無論是否拋出異常, finally語句都會被執(zhí)行, finally語句可有可無。模擬題:選擇題:以下代碼:publicclassClassDemo{publicstaticvoidmain(String[]args){try{//循環(huán)打印父類信息,直到?jīng)]有父類if(cls!=null)加載“idbc-odbc驅(qū)動成功");}catch(Exceptionex){系統(tǒng)“正在維護中 ");}finally{
歡迎“你
");}}}假設(shè)不存在類
,則程序運行結(jié)果是(
B )A.加載
idbc-odbc驅(qū)動成功
B.系統(tǒng)正在維護中系統(tǒng)正在維護中
歡迎你C.加載
idbc-odbc驅(qū)動成功
D.系統(tǒng)正在維護中系統(tǒng)正在維護中歡迎你判斷題1、內(nèi)部類的類體中不可以聲明
static成員變量(類變量)和
static成員方法(類方法)。( √ )2、匿名類一定是內(nèi)部類,因此匿名類的類體不能聲明
static成員變量(類變量)和
static成員方法(類方法)。( √ )3.異常就是在編寫代碼時由于疏忽而出現(xiàn)一些語法錯誤。
( X )4、第9章常用實用類String和StringBuffer在Java中一旦創(chuàng)建了字符串String就不能直接更改,這就是字符串的不變性;而StringBuffer類正是針對此問題而提供的字符可變序列可以修改的字符串;
,StringBuffer類用于表示StringBuffer與String是同等的類,唯一區(qū)別是可以進行更改。字符串比較要判斷兩個字符串是否相等,可以使用“==運”算符和equals()方法,但是得到的結(jié)果可能不完全相同;運算符用于比較兩個引用是否指向同一個對象;而equals()方法則是比較兩個字符串中的內(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)容不相同 ");}}}程序運行結(jié)果:str1和str2指向同一字符串str1和str2的內(nèi)容完全相同str3和str4分別指向不同字符串str3 和str4 的內(nèi)容完全相同3.String 類中要掌握的方法:(1)intindexOf(intch) 搜索字符 ch在當前字符串中第一次出現(xiàn)的索引,沒有出現(xiàn)則返回-1(2)Stringsubstring(intbegin,intend) 用于提取 begin 和end 位置之間的字符串部分,不包括 end 處的字符(3)Stringtrim() 用于返回一個前后不含任何空格的調(diào)用字符串的副本(4)intlength() 用來獲得字符串的長度4.StringBuffer 類中要掌握的方法:(1)StringBufferappend(Strings) 將字符串 s追加到一個字符串的末尾,也可以用append 方法將基本數(shù)據(jù)類型的值追加到一個字符串的末尾第9章模擬題假設(shè)有如下的語句聲明:Stringstr1=newString("java");Stringstr2="java";Stringstr3="javaApp";則表達式 str1==str2 的值為 false ,調(diào)用方法 str1.equals(str2) 得到的返回值是true ,調(diào)用str3.trim().length() 得到的返回值是 8 。2.假設(shè)有如下的語句聲明了一個 StringBuffer 對象:StringBuffersb=newStringBuffer("java");則要在sb對象中的字符串末尾追加一個字符串 "world" ,則應(yīng)該使用下列的哪條語句實現(xiàn)?(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度綠色建筑電器設(shè)備采購安裝與節(jié)能減排合同4篇
- 2025年度鋼管行業(yè)信息咨詢服務(wù)采購合同
- 二零二五版苗木種植保險產(chǎn)品設(shè)計與銷售合同4篇
- 二零二五年度東北大豆種植保險與風險保障服務(wù)合同4篇
- 2025年度門面房屋租賃合同配套設(shè)施維護責任書4篇
- 2025年度醫(yī)療設(shè)施租賃協(xié)議延期及醫(yī)療設(shè)備使用合同4篇
- 二零二五年度別墅室內(nèi)空氣質(zhì)量檢測與治理合同293篇
- 二零二五年度電梯加裝工程安全監(jiān)測與預(yù)警服務(wù)合同4篇
- 2025年度船舶建造與環(huán)保標準符合性評估合同3篇
- 2025年度廢棄資源綜合利用出渣車輛勞務(wù)分包合同范本2篇
- 2025年度版權(quán)授權(quán)協(xié)議:游戲角色形象設(shè)計與授權(quán)使用3篇
- 心肺復(fù)蘇課件2024
- 《城鎮(zhèn)燃氣領(lǐng)域重大隱患判定指導(dǎo)手冊》專題培訓(xùn)
- 湖南財政經(jīng)濟學院專升本管理學真題
- 全國身份證前六位、區(qū)號、郵編-編碼大全
- 2024-2025學年福建省廈門市第一中學高一(上)適應(yīng)性訓(xùn)練物理試卷(10月)(含答案)
- 《零售學第二版教學》課件
- 廣東省珠海市香洲區(qū)2023-2024學年四年級下學期期末數(shù)學試卷
- 房地產(chǎn)行業(yè)職業(yè)生涯規(guī)劃
- 江蘇省建筑與裝飾工程計價定額(2014)電子表格版
- MOOC 數(shù)字電路與系統(tǒng)-大連理工大學 中國大學慕課答案
評論
0/150
提交評論