JAVA考核題面向?qū)ο筮x擇題答案_第1頁
JAVA考核題面向?qū)ο筮x擇題答案_第2頁
JAVA考核題面向?qū)ο筮x擇題答案_第3頁
JAVA考核題面向?qū)ο筮x擇題答案_第4頁
JAVA考核題面向?qū)ο筮x擇題答案_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第頁北潤(rùn)JAVA考核-面向?qū)ο蟮谝徊糠钟⒄Z測(cè)試(每題分,共分)第二部分知識(shí)點(diǎn)測(cè)試(分)一、選擇題(每題2分,共110分)1.下面關(guān)于變量及其作用范圍的陳述哪個(gè)是不對(duì)的?(B)A.實(shí)例變量是類的成員變量。B.實(shí)例變量用關(guān)鍵字static聲明。C.在方法中定義的局部變量在該方法被執(zhí)行時(shí)創(chuàng)建。D.局部變量在使用前必須被初始化。2.下面哪條語句把方法聲明為抽象的公共方法?(B)A.publicabstractmethod(); B.publicabstractvoidmethod();C.publicabstractvoidmethod(){} D.publicvoidmethod()extendsabstract;3.若在某一個(gè)類定義中定義有如下的方法:finalvoidaFinalFunction(){}則該方法屬于(C)。A、本地方法B、靜態(tài)方法 C、最終方法D、抽象方法4.main方法是JavaApplication程序執(zhí)行的入口點(diǎn),關(guān)于main方法的方法頭以下哪項(xiàng)是合法的(B)。A、publicstaticvoidmain() B、publicstaticvoidmain(String[]args)C、publicstaticintmain(String[]args) D、publicvoidmain(Stringarg[])5.在Java中,一個(gè)類可同時(shí)定義許多同名的方法,這些方法的形式參數(shù)個(gè)數(shù)、類型或順序各不相同,傳回的值也可以不相同。這種面向?qū)ο蟪绦虻奶匦苑Q為(C)。A、隱藏B、覆蓋C、重載D、Java不支持此特性6.下列關(guān)于構(gòu)造方法的敘述中,錯(cuò)誤的是(C)A.Java語言規(guī)定構(gòu)造方法名及類名必須相同B.Java語言規(guī)定構(gòu)造方法沒有返回值,但不用void聲明C.Java語言規(guī)定構(gòu)造方法不可以重載D.Java語言規(guī)定構(gòu)造方法只能通過new自動(dòng)調(diào)用7.關(guān)于被私有訪問控制符private修飾的成員變量,以下說法正確的是(C)A.可以被三種類所引用:該類自身、及它在同一個(gè)包中的其他類、在其他包中的該類的子類B.可以被兩種類訪問和引用:該類本身、該類的所有子類C.只能被該類自身所訪問和修改D.只能被同一個(gè)包中的類訪問8.類Test1定義如下:1.publicclassTest1{2. publicfloataMethod(floata,floatb){}3. 4.} 將以下哪種方法插入行3是不合法的。(B)A、publicfloataMethod(floata,floatb,floatc){}B、publicfloataMethod(floatc,floatd){}C、publicintaMethod(inta,intb){}D、privatefloataMethod(inta,intb,intc){}9.閱讀以下代碼:publicclassfoo{publicstaticvoidmain(String[]args){Strings;System.out.println("s="+s); 輸出結(jié)果應(yīng)該是:(C

)A.代碼得到編譯,并輸出“s=”B.代碼得到編譯,并輸出“s=null”C.由于Strings沒有初始化,代碼不能編譯通過D.代碼得到編譯,但捕獲NullPointException異常解析:局部變量必須顯示的初始化。引用類型變量初始化時(shí)如果沒有具體對(duì)象引用,可以初始化為null。10.下述概念中不屬于面向?qū)ο筮@種編程范疇的是(D)。A.對(duì)象、消息

B.繼承、多態(tài)C.類、封裝

D.過程調(diào)用11.編譯并運(yùn)行以下程序,以下描述哪個(gè)選項(xiàng)是正確的(A)。1.classA{ 2. protectedStringtoString(){ 3. returnsuper.toString();} 4. }A、行2出錯(cuò),不能成功編譯 B、編譯通過但運(yùn)行時(shí)出錯(cuò)C、編譯通過運(yùn)行無異常 D、不能成功編譯,行3出錯(cuò)解析:方法重寫時(shí)沒有滿足訪問權(quán)限控制符要比父類的大或者相同。12.假設(shè)Foo類有如下定義,設(shè)f是Foo類的一個(gè)實(shí)例,下列語句調(diào)用哪個(gè)是錯(cuò)誤的?(A) publicclassFoointi; staticStrings; voidimethod(){} staticvoidsmethod(){}A、Foo.imethod(); B、f.imethod(); C、System.out.println(f.i); D、Foo.smethod()13.以下哪個(gè)接口的定義是正確的?(D)A、interfaceA{voidprint(){};}B、abstractinterfaceA{voidprint();}C、abstractinterfaceAextendsI1,I2//I1、I2為已定義的接口{abstractvoidprint(){};}D、interfaceA{voidprint();}解析:接口定義時(shí)語法規(guī)定上是不需要加abstract的,因?yàn)榻涌诒旧砭褪莂bstract的,java編譯器在編譯接口時(shí)會(huì)自動(dòng)加上abstract。但是我們顯示的加上abstract是不會(huì)出現(xiàn)問題,不建議加。此處選項(xiàng)B和C可以認(rèn)為不正確。14.關(guān)于以下程序段,正確的說法是(C)1.

String

s1=“a”+“b”;

2.

String

s2=new

String(s1);

3.

if(s1==s2)

4.

System.out.println(“==

issucceeded”);

5.

if(s1.equals(s2))

6.

System.out.println(“.equals()issucceeded”);A.行4及行6都將執(zhí)行

B.行4執(zhí)行,行6不執(zhí)行

C.行6執(zhí)行,行4不執(zhí)行

D.行4、行6都不執(zhí)行15.下面程序運(yùn)行結(jié)果為:(D,如果輸出count則為A)publicclasstest3{publicstaticvoidmain(Stringargs[]){intcount=0;for(inti=0;i<=100;i++)count+=count++;A0B7C編譯有錯(cuò)誤D其他答案16.下面哪個(gè)函數(shù)是public

void

aMethod(){...}的重載函數(shù)?(D)A、void

aMethod(

){...}B、public

int

aMethod(){...}C、public

void

aMethod(){...}D、public

int

aMethod

(

int

m){...}17.下面關(guān)于繼承的哪些敘述是正確的?(D)A.在java中允許多繼承。B.

在java中一個(gè)類只能實(shí)現(xiàn)一個(gè)接口。C.

在java中一個(gè)類不能同時(shí)繼承一個(gè)類和實(shí)現(xiàn)一個(gè)接口。D.

java的單一繼承使代碼更可靠。18.運(yùn)行下面程序段的結(jié)果是:(D)。publicclassMyMain{publicstaticvoidmain(Stringargs){System.out.println(“HelloJava”);A.正常輸出HelloJavaB.編譯時(shí)出錯(cuò)C.運(yùn)行時(shí)出錯(cuò)D.以上答案都不對(duì)19.類及對(duì)象的關(guān)系是(A)。A.類是對(duì)象的抽象 B.類是對(duì)象的具體實(shí)例C.對(duì)象是類的抽象 D.對(duì)象是類的子類20.下列關(guān)于修飾符混用的說法,錯(cuò)誤的是(BD)。A.abstract不能及final并列修飾同一個(gè)類B.abstract類中不可以有private的成員C.abstract方法必須在abstract類中D.static方法中能處理非static的屬性解析:abstract類中可以有private的成員,只是它的private成員不能被繼承,所以在abstract類中定義private成員沒有意義。21.編譯并運(yùn)行下述程序段的結(jié)果是:(B)。publicclassTest{publicstaticvoidmain(Stringargv[]){int[]count=newint[4];System.out.println(count[4]);A.編譯時(shí)錯(cuò)誤 B.運(yùn)行時(shí)錯(cuò)誤C.輸出0 D.輸出null22.下面是有關(guān)子類繼承父類構(gòu)造函數(shù)的描述,其中正確的是(CD)。A.創(chuàng)建子類的對(duì)象時(shí),先調(diào)用子類自己的構(gòu)造函數(shù),然后調(diào)用父類的構(gòu)造函數(shù)。B.子類無條件地繼承父類不含參數(shù)的構(gòu)造函數(shù)。C.子類必須通過super關(guān)鍵字調(diào)用父類的構(gòu)造函數(shù)。D.子類無法繼承父類的構(gòu)造函數(shù)。解析:子類無法繼承父類的構(gòu)造器,但有時(shí)候可以使用super調(diào)用父類構(gòu)造器中的初始化代碼。在繼承關(guān)系中一定要確保構(gòu)造器的上溯鏈不得中斷,否則會(huì)出錯(cuò)。23.下列類的定義中,錯(cuò)誤的是(B)。A.classx{}B.publicxextendsy{}C.publicclassxextendsy{}D.classxextendsyimplementsy1{}24.A派生出子類B

,B派生出子類C,并且在Java源代碼中有如下聲明:1. A a0=newA();2. A a1=newB();3. A a2=newC();問以下哪個(gè)說法是正確的?(D)A.只有第1行能通過編譯B.第1、2行能通過編譯,但第3行編譯出錯(cuò)C.第1、2、3行能通過編譯,但第2、3行運(yùn)行時(shí)出錯(cuò)D.第1行、第2行和第3行的聲明都是正確的25.運(yùn)行下列程序的結(jié)果是(C)abstractclassMineBase{ abstractvoidamethod(); staticinti;publicclassMineextendsMineBase{ publicstaticvoidmain(Stringargv[]){ int[]ar=newint[5]; for(i=0;i<ar.length;i++){ System.out.println(ar[i]);A.打印5個(gè)0B.編譯出錯(cuò),數(shù)組ar[]必須初始化C.編譯出錯(cuò),Mine應(yīng)聲明為abstractD.出現(xiàn)IndexOutOfBoundes的例外26.編譯并運(yùn)行以下程序段的結(jié)果是:(A)publicclassMyClass{finalstaticinti;MyClass(){i=0;}publicstaticvoidmain(Stringargs[]){System.out.println(i);A.編譯出錯(cuò) B.null C.1 D.0解析:final修飾的成員變量(靜態(tài)成員原理和實(shí)例成員變量)必須顯示初始化。靜態(tài)成員變量可以在聲明時(shí)或靜態(tài)初始化代碼塊顯示初始化;實(shí)例成員變量可以在聲明時(shí)、初始化代碼塊或構(gòu)造器中顯示初始化。27.下面方法中的“返回類型Type”應(yīng)該是什么?(A)publicclassReturnIt{returnTypemethodA(bytex,doubley){return(short)x/y*2;A.double B.int C.byte D.short28.下面哪個(gè)修飾符修飾的變量是所有同一個(gè)類生成的對(duì)象共享的?(C)A、public B、private C、static D、final29.下面關(guān)于java中類的說法哪個(gè)是不正確的?(AC)A.類體中只能有變量定義和成員方法的定義,不能有其他語句。B.構(gòu)造函數(shù)是類中的特殊方法。C.類一定要聲明為public的,才可以執(zhí)行。D.一個(gè)java文件中可以有多個(gè)class定義。30.下列哪個(gè)類聲明是正確的?(D)A.a(chǎn)bstractfinalclassH1{…}B.a(chǎn)bstractprivatemove(){…}C.protectedprivatenumber;D.publicabstractclassCar{…}31.方法重載是指(A)A.兩個(gè)或兩個(gè)以上的方法取相同的方法名,但形參的個(gè)數(shù)或類型不同B.兩個(gè)以上的方法取相同的名字和具有相同的參數(shù)個(gè)數(shù),但形參的類型可以不同C.兩個(gè)以上的方法名字不同,但形參的個(gè)數(shù)或類型相同D.兩個(gè)以上的方法取相同的方法名,并且方法的返回類型相同32.指出下列程序運(yùn)行的結(jié)果(B)publicclassExample{Stringstr=newString("good");char[]ch={'a','b','c'};publicstaticvoidmain(Stringargs[]){Exampleex=newExample();ex.change(ex.str,ex.ch);System.out.print(ex.str+"and");Sytem.out.print(ex.ch);publicvoidchange(Stringstr,charch[]){str="testok";ch[0]='g';A.goodandabc B.goodandgbcC.testokandabc D.testokandgbc33.下列哪些語句關(guān)于內(nèi)存回收的說明是正確的?(B)A.程序員必須創(chuàng)建一個(gè)線程來釋放內(nèi)存B.內(nèi)存回收程序負(fù)責(zé)釋放無用內(nèi)存C.內(nèi)存回收程序允許程序員直接釋放內(nèi)存D.內(nèi)存回收程序可以在指定的時(shí)間釋放內(nèi)存對(duì)象34.MAX_LENGTH是int型public成員變量,變量值保持為常量100,用簡(jiǎn)短語句定義這個(gè)變量。(CD)A、publicintMAX_LENGTH=100;B、finalintMAX_LENGTH=100;C、finalpublicintMAX_LENGTH=100;D、publicfinalintMAX_LENGTH=100;

35.給出下面代碼:1)classParent{

2}privateStringname;

3}publicParent(){}

4}}

5)publicclassChildextendsParent{

6}privateStringdepartment;

7}publicChild(){}

8}publicStringgetValue(){returnname;}

9}publicstaticvoidmain(Stringarg[]){

10}Parentp=newParent();

11}}

12}}那些行將引起錯(cuò)誤?(D)A、第3行 B、第6行 C、第7行 D、第8行

36.類Teacher和Student是類Person的子類;Personp;

Teachert;

Students;

//p,tandsareallnon-null.

if(tinstanceofPerson){s=(Student)t;}最后一句語句的結(jié)果是:(B)A、將構(gòu)造一個(gè)Student對(duì)象; B、表達(dá)式是合法的;C、表達(dá)式是錯(cuò)誤的; D、編譯時(shí)正確,但運(yùn)行時(shí)錯(cuò)誤。 解析:考查instanceof和繼承中的強(qiáng)制轉(zhuǎn)換。tinstanceofPerson表達(dá)式是正確的。s=(Student)t;這句轉(zhuǎn)換編譯是錯(cuò)誤的。37.給出下面代碼段1)publicclassTest{

2)intm,n;

3)publicTest(){}

4)publicTest(inta){m=a;}

5)publicstaticvoidmain(Stringarg[]){

6)Testt1,t2;

7)intj,k;

8)j=0;k=0;

9)t1=newTest();

10)t2=newTest(j,k);

11)}

12)}

哪行將引起一個(gè)編譯時(shí)錯(cuò)誤?(D)A、line3 B、line5 C、line6 D、line10

38.對(duì)于下列代碼:1)classPerson{

2)publicvoidprintValue(inti,intj){//...}

3)publicvoidprintValue(inti){//...}

4)}

5)publicclassTeacherextendsPerson{

6)publicvoidprintValue(){//...}

7)publicvoidprintValue(inti){//...}

8)publicstaticvoidmain(Stringargs[]){

9) Persont=newTeacher();

10)t.printValue(10);

11)}

第10行語句將調(diào)用哪行語句?(D)A、line2 B、line3 C、line6 D、line739.System類在哪個(gè)包中?(D)A、java.util B、java.io C、java.awt D、java.lang40.對(duì)于下列代碼:publicclassParent{

publicintaddValue(inta,intb){

ints;

s=a+b;

returns;

}

}

classChildextendsParent{

}下述哪些方法可以加入類Child?(CD)A、intaddValue(inta,intb){//dosomething...}B、publicvoidaddValue(inta,intb){//dosomething...}C、publicintaddValue(inta){//dosomething...}D、publicintaddValue(inta,intb)throwsMyException{//dosomething...}解析:A選項(xiàng)不符合一大;B選項(xiàng)返回值類型不匹配;C選項(xiàng)為自己的方法;D選項(xiàng)異常更明確。41.看下面一段程序:classAclass{

voidgo(){

System.out.println("Aclass");

}

}

publicclassBclassextendsAclass{

voidgo{

System.out.println("Bclass");

}

publicstaticvoidmain(Stringargs[]){

Aclassa=newAclass();

Aclassa1=newBclass();

a.go();

a1.go();

}以上程序運(yùn)行結(jié)果是:(C)A、AclassAclass B、BclassBclassC、AclassBclass D、BclassAclass42.運(yùn)行下列程序,會(huì)產(chǎn)生什么結(jié)果:(B)classOuter1{

privateinta;

voidfoo(doubled,finalfloatf){

Strings;

finalbooleanb;

classInner{

voidmethodInner(){

System.out.println("intheInner");

}

}

}

publicstaticvoidmain(Stringargs[]){

Outer1me=newOuter1();

me.foo(123,123);

System.out.println("outer");

}

}A、intheInnerouter B、outerC、intheInner D、編譯不通過43.下面哪個(gè)修飾符修飾的方法只能被本類中的其他方法使用(C)A、protected B、static C、private D、public44.下面程序運(yùn)行后的輸出結(jié)果為(C)classA{staticinty=3;voidshowy(){System.out.println(“y=”+y);classtestA{ publicstaticvoidmain(Stringaaa[])Aa1=newA(); A.y+=1;a1.y++; a1.showy();輸出結(jié)果選擇:A、y=3; B、y=4; C、y=5; D、程序運(yùn)行出錯(cuò) 45.下面關(guān)于構(gòu)造函數(shù)的說法不正確的是(B)A、構(gòu)造函數(shù)也屬于類的方法,用于創(chuàng)建對(duì)象的時(shí)候給成員變量賦值。B、構(gòu)造函數(shù)不可以重載。C、構(gòu)造函數(shù)沒有返回值。D、構(gòu)造函數(shù)名稱一定要和類名相同。46.給出如下代碼:classTest{privateintm;publicstaticvoidfun(){//somecode...如何使成員變量m被函數(shù)fun()直接訪問?(C)A、將privateintm改為protectedintmB、將privateintm改為publicintmC、將privateintm改為staticintmD、將privateintm改為intm47.為AB類的一個(gè)無形式參數(shù)無返回值的方法method書寫方法頭,使得使用類名AB作為前綴就可以調(diào)用它,該方法頭的形式為(A)。A.staticvoidmethod()B.publicvoidmethod()C.finalvoidmethod()D.abstractvoidmethod()48.如果類中的成員變量可以被同一包訪問,則使用如下哪個(gè)約束符?(D)A、privateB、publicC、protectedD、nomodifier49.構(gòu)造方法何時(shí)被調(diào)用(B)A.類定義時(shí) B.創(chuàng)建對(duì)象時(shí)C.調(diào)用對(duì)象方法時(shí) D.使用對(duì)象的變量時(shí)50.如果任何包中的子類都能訪問超類中的成員,那么應(yīng)使用哪個(gè)限定詞(C)A.public B.privateC.protected D.transient51.Java變量中,以下不屬于復(fù)合類型的數(shù)據(jù)類型是(B)A.類 B.字符型C.數(shù)組型 D.接口52.對(duì)象使用時(shí),下面描述錯(cuò)誤的是(B)A.通過“.”運(yùn)算符調(diào)用成員變量和方法B.通過成員變量的訪問權(quán)限設(shè)定限制自身對(duì)這些變量方法的調(diào)用C.將一個(gè)對(duì)象申明為類的成員時(shí),必須在使用前為其分配內(nèi)存D.在方法中使用對(duì)象作為參數(shù)時(shí),采用引用調(diào)用(也解釋的通,但一定要了解實(shí)質(zhì)為值調(diào)用)53.Java編程所必須的默認(rèn)引用包為(B)A.java.sys包 B.java.lang包

C.java.new包 D.以上都不是54.定義一個(gè)類名為“MyClass.java”的類,并且該類可被一個(gè)工程中的所有類訪問,那么該類的正確聲明應(yīng)為:(C)A.privateclassMyClassextendsObjectB.classMyClassextendsObjectC.publicclassMyClassD.privateclassMyClassextendsObject55.內(nèi)部類是在一個(gè)類內(nèi)嵌套定義的類。其特點(diǎn)描述錯(cuò)誤的是(A)A.只能在定義它的類或程序段中或表達(dá)式內(nèi)匿名使用,外部使用時(shí)必須給出類的全名B.可以使用它所在類的靜態(tài)成員變量或?qū)嵗蓡T變量,但不可以使用所在類中的局部變量(后半句可對(duì)可錯(cuò),看怎么理解)C.可以作為其它類的成員,而且可訪問它所在類的成員D.除static內(nèi)部類外,不能在類內(nèi)聲明static成員二、填空題(每空0.5分,共26.5分)1、在類聲明中提供類標(biāo)志的關(guān)鍵字是class。2、當(dāng)一個(gè)方法中有多個(gè)參數(shù)時(shí),參數(shù)之間是用英文逗號(hào)隔開。3、在Java中,使用變量遵守先聲明后使用(先定義后使用)的原則。4、比較兩個(gè)字符串是否相同采用equals()方法。5、抽象方法是一種僅有方法頭,沒有具體方法體和操作實(shí)現(xiàn)的方法,該方法必須在抽象類之中定義。6、包定義時(shí),需使用關(guān)鍵字package來實(shí)現(xiàn)。創(chuàng)建一個(gè)名為MyPackage的包的語句是packageMyPackage;。要使用包中的類,必須用關(guān)鍵字import導(dǎo)入這些類所在的包。當(dāng)要引用包中所有的類時(shí),類名可以用通配符*號(hào)代替。7、對(duì)象是由一組屬性和對(duì)這組屬性進(jìn)行操作的一組服務(wù)組成的。對(duì)象是指具體的事物,而類是指一類具有某種共性的事物。由類來確定具體對(duì)象的過程稱為實(shí)例化。8、對(duì)一類對(duì)象的抽象則是類,而類的實(shí)例化結(jié)果是對(duì)象。一個(gè)類是由類聲明和類體兩部分組成。類修飾符有3種,它們分別是public、abstract和final。8、抽象類不能被實(shí)例化,它不具備實(shí)際功能,只用于衍生子類。抽象方法是只有方法聲明,沒有代碼實(shí)現(xiàn)的空方法。9、當(dāng)一個(gè)類的類修飾符為final時(shí),說明該類不能被繼承,即不能有子類。10、Java用extends關(guān)鍵字指明繼承關(guān)系。一個(gè)類要從另一個(gè)類繼承變量和方法,必須使用關(guān)鍵字extends。Java程序在extends之后只能有一個(gè)父類,即extends只能實(shí)現(xiàn)單繼承。在Java中只能實(shí)現(xiàn)單繼承(Java不支持多重繼承),但可通過接口實(shí)現(xiàn)多重繼承。11、要在類聲明中實(shí)現(xiàn)接口,需使用關(guān)鍵字implements。一個(gè)類可實(shí)現(xiàn)多個(gè)接口,各接口名是以英文逗號(hào)分隔。12、在Java中,變量分為成員變量和局部變量。在類體中聲明的變量稱為成員變量。在方法中聲明的變量稱為局部變量。成員變量在整個(gè)類體中有效,而局部變量只在定義它的方法內(nèi)有效。如果局部變量名及成員變量名相同,則成員變量被屏蔽。13、在Java程序中,使用關(guān)鍵字this來引用當(dāng)前對(duì)象。Java中通過關(guān)鍵字super來實(shí)現(xiàn)對(duì)父類成員的訪問。14、一個(gè)方法的定義是有方法聲明和方法體兩部分組成。方法聲明包括方法名、返回類型和形式參數(shù),一個(gè)方法的標(biāo)志是圓括號(hào)。15、構(gòu)造方法的方法名要求及類名相同,而且無返回值。構(gòu)造方法只能通過new運(yùn)算符調(diào)用,用戶不能直接調(diào)用。16、方法重載是指多個(gè)方法享有相同的名字,但這些方法的參數(shù)必須不同,或者是參數(shù)的個(gè)數(shù)不同,或者是參數(shù)類型不同。17、一個(gè)對(duì)象的生命周期包括3個(gè)階段:創(chuàng)建、使用和釋放(消亡)。18、對(duì)象通過使用運(yùn)算符“.”實(shí)現(xiàn)對(duì)自己的變量訪問。19、面向?qū)ο蟮?個(gè)特性是:封裝性、繼承性和多態(tài)性。在Java中,通過對(duì)象的封裝,實(shí)現(xiàn)了模塊化和信息隱藏。20、兩個(gè)方法具有相同的名字,相同的參數(shù)表和相同的返回類型,只是函數(shù)體不同,則稱為重寫。21、Java中成員方法可分成兩種:類方法和實(shí)例方法。用關(guān)鍵字static修飾的方法就稱為類方法。實(shí)例方法可對(duì)當(dāng)前對(duì)象的實(shí)例變量進(jìn)行操作,也可對(duì)類變量進(jìn)行操作。實(shí)例方法不但可以訪問實(shí)例變量,也可以訪問類變量。類方法不能訪問實(shí)例變量,只能訪問類變量。22、在Java中,用關(guān)鍵字abstract來修飾一個(gè)類,則該類為抽象類。若某個(gè)類包含了抽象方法,則該類必須被定義為抽象類。23、接口的定義,需使用關(guān)鍵字interface來聲明。接口中沒有什么實(shí)例方法,所有的成員方法都是publicabstract方法。24、聲明父類時(shí),需使用關(guān)鍵字extends來實(shí)現(xiàn)。由于Java的繼承性,所以子類的成員數(shù)目比父類的成員數(shù)目多。三、簡(jiǎn)答題(每題5分,共60分)第一步:理解考核知識(shí)點(diǎn)和考核的目的。第二步:背下來,記憶清晰準(zhǔn)確。第三步:能把知識(shí)點(diǎn)用自己的話準(zhǔn)確的描述出來。1、super()及this()的區(qū)別?解答:this為當(dāng)前類的對(duì)象的引用,所有資源都可以訪問。super為父類對(duì)象的引用,在子類訪問父類的成員和行為時(shí)使用,必須受類繼承規(guī)則的約束。在構(gòu)造函數(shù)中,如果第一行沒有寫super(),編譯器會(huì)自動(dòng)插入。但是如果父類沒有不帶參數(shù)的構(gòu)造函數(shù),或這個(gè)函數(shù)被私有化了(用private修飾)。此時(shí)你必須加入對(duì)父類的實(shí)例化構(gòu)造。而this就沒有這個(gè)要求,因?yàn)樗旧砭瓦M(jìn)行實(shí)例化的構(gòu)造。而在方法中super和this使用的方法就差不多了。只不過super要考慮是否能訪問其父類的資源。2、請(qǐng)列舉Java語言中的權(quán)限訪問修飾符,并說明每種權(quán)限的含義。 解答:正確使用權(quán)限訪問修飾符,能夠有效控制類以及類成員的安全性,Java語言中有四種訪問修飾符,包括public、同包、protected以及private,一般情況下,應(yīng)用中的類多是public權(quán)限,屬性多是private權(quán)限,方法多是public權(quán)限。參考答案:Java語言中有四種權(quán)限訪問修飾符,即public、protected、同包以及private。 public表示公共權(quán)限,即任何包中都可以訪問;protected表示受保護(hù)權(quán)限,即同包中可以訪問,同包中的子類可以訪問:同包權(quán)限是默認(rèn)權(quán)限,即不顯示指明權(quán)限修飾符的時(shí)候就是同包權(quán)限,表示只有同包中可以訪問;private是私有權(quán)限,表示只能在本類中訪問。3、java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么?解答:靜態(tài)的多態(tài):方法名相同,參數(shù)個(gè)數(shù)或類型不相同。(overloading) 動(dòng)態(tài)的多態(tài):子類覆蓋父類的方法,將子類的實(shí)例傳及父類的引用,調(diào)用的是子類的方法;實(shí)現(xiàn)接口的實(shí)例傳及接口的引用,調(diào)用的實(shí)現(xiàn)類的方法。4、abstractclass和interface的區(qū)別。解答:(1)抽象類通過extends繼承,只能繼承一個(gè)抽象類;接口通過implements使用,可以實(shí)現(xiàn)多個(gè)接口。(2)抽象類可以有部分實(shí)現(xiàn),抽象類和接口都不能創(chuàng)建實(shí)例。聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽象類(abstractclass),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實(shí)現(xiàn)該類的情況。不能創(chuàng)建abstract類的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類型是一個(gè)抽象類,并讓它指向具體子類的一個(gè)實(shí)例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract類的子類為它們父類中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類為。取而代之,在子類中實(shí)現(xiàn)該方法。知道其行為的其它類可以在類中實(shí)現(xiàn)這些方法。接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個(gè)有程序體。接口只可以定義staticfinal成員變量。接口的實(shí)現(xiàn)及子類相似,除了該實(shí)現(xiàn)類不能從接口定義中繼承行為。當(dāng)類實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類的任何對(duì)象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof運(yùn)算符可以用來決定某對(duì)象的類是否實(shí)現(xiàn)了接口。5、靜態(tài)變量和實(shí)例變量的區(qū)別?是否可以從一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的調(diào)用并說明理由?解答:(1)聲明時(shí)靜態(tài)變量用static修飾,靜態(tài)變量屬于整個(gè)類,被該類的所用實(shí)例對(duì)象所共有。實(shí)例變量屬于該類的某個(gè)對(duì)象,擁有自己的特征。(2)靜態(tài)變量在類加載初始化的時(shí)候分配內(nèi)存并初始化,實(shí)例變量在由該類實(shí)例化對(duì)象時(shí)進(jìn)行分配內(nèi)存并初始化。(3)調(diào)用方法不同。靜態(tài)方法可以調(diào)用靜態(tài)變量,不可調(diào)用實(shí)例變量。實(shí)例方法可以調(diào)用靜態(tài)變量、實(shí)例變量 不可以從一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的調(diào)用,因?yàn)閟tatic方法屬于整個(gè)類,實(shí)例方法得由該類的某個(gè)對(duì)象來調(diào)用。當(dāng)調(diào)用包含非static方法的static方法時(shí),該類不確定是否存在實(shí)例化對(duì)象,所以在static方法內(nèi)調(diào)用非static方法時(shí)將出現(xiàn)錯(cuò)誤。鑒于此道理不可以,編譯階段就會(huì)提示該調(diào)用的錯(cuò)誤。不可以,如果其中包含對(duì)象的method(),不能保證該對(duì)象初始化.6、說說你說知道的設(shè)計(jì)模式。解答:?jiǎn)卫J?、工廠模式和命令模式。7、AnonymousInnerClass(匿名內(nèi)部類)是否可以extends(繼承)其它類,是否可以implements(實(shí)現(xiàn))interface(接口)?、解答:匿名內(nèi)部類可以繼承其他類或完成其他接口。8、StaticNestedClass和InnerClass的不同,說得越多越好。解答:(1)StaticNestedClass是被聲明為靜態(tài)(static)的內(nèi)部類,它可以不依賴于外部類實(shí)例被實(shí)例化。而通常的內(nèi)部類需要在外部類實(shí)例化后才能實(shí)例化。Static內(nèi)部類可以包含static成員;普通內(nèi)部類不可以。9、什么是方法重載(overload)?什么是方法的重寫(Override)?Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?解答:方法重載:如果在一個(gè)類中定義了多個(gè)同名的、相同返回值類型的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類型(不同的形參列表),則稱為方法的重載(Overloading)。方法重寫:如果在子類中定義某方法及其父類有相同的名稱和參數(shù),我們說該方法被重寫(Overriding)。子類的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類中的定義,對(duì)它而言,父類中的定義如同被"屏蔽"了。區(qū)別:方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類及子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)。Overloaded的方法是可以改變返回值的類型和權(quán)限修飾符。如果父類定義方法A,子類要重寫方法A,則子類不能使用其它返回類型,必須使用父類一致的返回類型或比父類返回類型小。另外解析重載:如果一個(gè)類的某個(gè)行為,會(huì)有不同的算法和邏輯,例如,Math類的計(jì)算絕對(duì)值的方法,既可以計(jì)算int類型數(shù)值的絕對(duì)值,也可以計(jì)算double類型數(shù)值的絕對(duì)值。這種情況下,每種類型都定義一個(gè)不同的方法名,如abInt、absDouble,那么類的可讀性就較差,使用時(shí),必須熟悉處理每種類型參數(shù)所對(duì)應(yīng)的方法名。然而,如果使用同一個(gè)方法名,而使用不同的形式參數(shù)來區(qū)別這些方法,那么就具有很好的可讀性,如abs(inti)、abs(doubled)等??勺x性強(qiáng)的代碼是企業(yè)對(duì)開發(fā)人員的基本要求,方法重載能夠使得代碼有很好的可讀性。方法重載指的是在一個(gè)類中可以聲明多個(gè)相同名字的方法,而方法的形式參數(shù)有區(qū)別。調(diào)用這些同名的方法時(shí),JVM會(huì)根據(jù)實(shí)際參數(shù)的不同綁定到不同的方法。10、構(gòu)造器Constructor是否可被override?解答:構(gòu)造器Constructor不能被繼承,因此不能重寫Override,但可以被重載Overload。11、是否可以繼承String類,并說明理由?String類是一個(gè)“不可變類”,請(qǐng)解釋“不可變類”的含義。 解答:不可以,因?yàn)镾tring類是final類故不可以繼承。 解析不可變類:String類是一個(gè)不可變類,即immutable類。所謂不可變,意思是當(dāng)一個(gè)字符串被初始化后,它的值就不會(huì)被改變。例如,Strings=newString(“hello”)為將初始化一個(gè)值為hello的字符串,如果調(diào)用s.toUpperCase()看起來是把hello變?yōu)榇髮懙腍ELLO,然而事實(shí)上并不會(huì)把已有的hello變?yōu)镠ELLO,而是在新的空間初始化一個(gè)HELLO字符串。也正因?yàn)橛羞@種不可變性,所以才能支持“字符串實(shí)例池”的使用。 參考答案:所謂的不可變類,就是當(dāng)字符串初始化后,就不能夠被改變。12、請(qǐng)說明Java語言中的值傳遞規(guī)則。當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?第一問解析:值傳遞時(shí)編寫應(yīng)用時(shí)不可避免的操作。例如某方法聲明形式是publicvoidf(intx){},寫方法是,必須為其傳遞一個(gè)int類型的實(shí)際參數(shù),如f(10)。又如publicvoidg(Employee)。那么使用該方法時(shí),必須為其傳遞一個(gè)Employee類型的實(shí)際參數(shù),例如g(newEmployee())。所以,對(duì)于初級(jí)程序員來說,了解Java語言的值傳遞規(guī)則非常重要。Java語言是本類型傳遞的值,例如f(10),僅僅把10復(fù)制給形式參數(shù)x,是值的拷貝。而引用類的傳遞時(shí)引用,即虛地址,例如g(newEmployee())是把實(shí)際參數(shù)的虛地址傳遞給形式參數(shù)e,也就是說實(shí)際參數(shù)和形式參數(shù)的虛地址相同,物理上是同一個(gè)對(duì)象。第一問解答:基本數(shù)據(jù)類型傳遞的是值,引用類型傳遞的是引用,即虛地址。第二問解答:是值傳遞。Java編程語言只有值傳遞參數(shù)。當(dāng)一個(gè)對(duì)象實(shí)例作為一個(gè)參數(shù)被傳遞到方法中時(shí),參數(shù)的值就是對(duì)該對(duì)象的引用。對(duì)象的內(nèi)容可以在被調(diào)用的方法中改變,但對(duì)象的引用是永遠(yuǎn)不會(huì)改變的。四、程序題(每題5分,共25分)1、補(bǔ)足代碼定義一個(gè)抽象類AbstractTest,其中有一個(gè)公共的抽象方法printMsg()。然后定義此抽象類的一個(gè)子類DefaultTest,包括的成員變量有姓名,學(xué)號(hào),分?jǐn)?shù),且此類中包括二個(gè)構(gòu)造方法。abstractclassAbstractTest{(1)(2)Stringname;Stringid;intscore;//接收三個(gè)參數(shù)的構(gòu)造方法(3)//接收姓名和學(xué)號(hào)二個(gè)參數(shù)的構(gòu)造方法(4)//實(shí)現(xiàn)抽象方法,方法體為打印出學(xué)生的姓名及成績(jī)(5)答案:abstractclassAbstractTest{ //抽象方法定義 publicabstractvoidprintMsg();publicclassDefaultTestextendsAbstractTest{ Stringname; Stringid; intscore; *接收三個(gè)參數(shù)的構(gòu)造方法 publicDefaultTest(Stringname,Stringid,intscore){ =name; this.id=id; this.score=score; *接收姓名和學(xué)號(hào)兩個(gè)參數(shù)的構(gòu)造方法 publicDefaultTest(Stringname,Stringid){ =name; this.id=id; *實(shí)現(xiàn)抽象方法,方法體為打印出學(xué)生的姓名及成績(jī) publicvoidprintMsg(){ System.out.println("學(xué)生"++"的成績(jī)?yōu)椋?+this.score);2、補(bǔ)足代碼定義接口Student,該接口中有一個(gè)無參、無返回值的方法prtMsg;定義類College,包括的私有屬性有id和name,包括一個(gè)接收學(xué)生學(xué)號(hào)和姓名的構(gòu)造方法,并且實(shí)現(xiàn)Student接口。interfaceStudent{ (1)(2)//College類的聲明,實(shí)現(xiàn)Student接口 (3)//定義私有成員變量id和name,類型自定 (4)//構(gòu)造方法聲明和定義,接收二個(gè)參數(shù)(5)//實(shí)現(xiàn)prtMsg方法的聲明 //prtMsg的方法體 System.out.println(id+name);答案:interfaceStudent{ voidprtMst();publicclassCollegeimplementsStudent{ //定義私有成員變量id和name,類型自定 privateStringname; privateStringid; *構(gòu)造方法聲明和定義,接收二個(gè)參數(shù) publicCollege(Stringname,Stringid){ =name; this.id=id; *實(shí)現(xiàn)prtMsg方法的聲明 publicvoidprtMst(){ //prtMsg的方法體 System.out.println(id+name);3、改正下面程序段中的錯(cuò)誤(共5處)publicclassStudent{ Stringid; Stringname; intsalary; publicvoidTest(Stringid,Stringname,intsalary){//1:意圖為該方法為構(gòu)造方法,需去掉返回值,并改正方法名 this.id=id; =name; this.salary=salary; publicvoidchangeInfo(Stringid,intsalary){//2:返回值改為boolean booleanresult; if(id==this.id){//3:==改為equals()方法 th

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論