




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Java程序設(shè)計(jì)基礎(chǔ)課后習(xí)題參考答案第2章1.關(guān)于JavaApplication的入口方法main()的檢驗(yàn):main()方法的參數(shù)名是否可以改變?main()方法的參數(shù)個(gè)數(shù)是否可以改變?該方法名是否可以改變?參考答案:(1)main()方法的參數(shù)名可以改變。(2)main()方法的參數(shù)個(gè)數(shù)不可以改變。(3)該方法名不可以改變。2.當(dāng)一個(gè)程序沒有main()方法時(shí),能編譯嗎?如果能編譯,能運(yùn)行嗎?參考答案:當(dāng)一個(gè)程序沒有main()方法是,是可以編譯通過的,但是不能給運(yùn)行,因?yàn)檎也坏揭粋€(gè)主函數(shù)入口。3.下列語句能否編譯通過?bytei=127;bytej=128;longl1=999999;longl2=9999999999;參考答案:bytei和longl1可以編譯通過。而bytej和longl2超出自身數(shù)據(jù)類型范圍,所以編譯失敗。4.下列語句能否編譯通過?floatf1=3.5;floatf2=3.5f;參考答案:java中浮點(diǎn)型的數(shù)據(jù)在不聲明的情況下都是double型的,如果要表示一個(gè)數(shù)據(jù)是float型的,必須在數(shù)據(jù)后面加上“F”或“f”;因此,floatf1無法編譯通過。5.驗(yàn)證int和char,int和double等類型是否可以相互轉(zhuǎn)換。參考答案:(1)char類型可以轉(zhuǎn)換為int類型的,但是int類型無法轉(zhuǎn)換為char類型的;(2)int可以轉(zhuǎn)換為double類型的,但是double類型無法轉(zhuǎn)換為int類型的。6.計(jì)算下列表達(dá)式,注意觀察運(yùn)算符優(yōu)先級(jí)規(guī)則。若有表達(dá)式是非法表達(dá)式,則指出不合法之處且進(jìn)行解釋。(1)4+5==6*2 (2)(4=5)/6 (3)9%2*7/3>17(4)(4+5)<=6/3 (5)4+5%3!=7-2 (6)4+5/6>=10%2 參考答案:表達(dá)式(2)為不合法表達(dá)式,只能將值賦值給一個(gè)變量,因此其中(4=5)將5賦值給4是不合法的。7.下列()是合法的Java標(biāo)識(shí)符。(1)Counter1 (2)$index,(3)name-7 (4)_byte(5)larray (6)2i(7)try (8)integer參考答案:Java標(biāo)識(shí)符由數(shù)字,字母和下劃線(_),美元符號(hào)($)組成。在Java中是區(qū)分大小寫的。而且還要求首位不能是數(shù)字。最重要的是,Java關(guān)鍵字不能當(dāng)作Java標(biāo)識(shí)符。因此,(1)、(4)、(5)、(8)是合法標(biāo)識(shí)符。8.下列各項(xiàng)中定義變量及賦值不正確的是()(1)intI=32;(2)floatf=45.0;(3)doubled=45.0;參考答案:(2)不正確,選項(xiàng)(2)定義float類型時(shí)必須在數(shù)據(jù)后面加上“F”或“f”。9.Java語言中,整型常數(shù)123占用的存儲(chǔ)字節(jié)數(shù)是()(1)1 (2)2(3)4 (4)8參考答案:正確選項(xiàng)是(3),Java語言中,默認(rèn)整型數(shù)占用4個(gè)字節(jié)數(shù)。10.以下代碼的編譯運(yùn)行結(jié)果是publicclassTest{ publicstaticvoidmain(String[]args){ intage; age=age+1; System.out.println(“theageis“+age);}}編譯通過,運(yùn)行無輸出編譯通過,運(yùn)行結(jié)果為“theageis1” 編譯通過但運(yùn)行時(shí)出錯(cuò)不能通過編譯參考答案:(4)為正確選項(xiàng)。Java在使用變量前應(yīng)該先初始化。11.寫出下列表達(dá)式的運(yùn)行結(jié)果(1)6+3<2+7 (2)4%2+4*3/2(3)(1+3)*2+12/3 (4)8>3&&6==6&&12<4(5)7+12<4&&12-4<8 (6)23>>2 參考答案:(1)false;(2)6;(3)12;(4)fale;(5)false;(6)5;第3章編碼驗(yàn)證i++和++i的區(qū)別。參考答案:++i和i++在單獨(dú)使用時(shí),就是i=i+1。而a=++i,相當(dāng)于i=i+1;a=i;(先i=i+1,再使用i的值),而a=i++,相當(dāng)于a=i;i=i+1;(先使用i的值,再i=i+1)。2.寫出下面表達(dá)式的結(jié)果(1)5/3(2)5/3.0(3)5%3(4)5%-3參考答案:(1)1(2)1.66666666(3)2(4)23.考慮如下的Test.java,并指出錯(cuò)誤原因。程序清單:Test.javaclassTest{publicstaticvoidmain(String[]args){byteb=5;b=(b–2);System.out.println(b);}}參考答案:b=(b-2);錯(cuò)誤,在進(jìn)行b-2時(shí),運(yùn)算結(jié)果類自動(dòng)提升為int,而b是byte類型,編譯的時(shí)候會(huì)報(bào)錯(cuò),因?yàn)榇嬖诟哳愋蛿?shù)據(jù)向低類型數(shù)據(jù)轉(zhuǎn)化的風(fēng)險(xiǎn)。而byteb=5;是正確的,因?yàn)樵诰幾g的時(shí)候就能夠確定5在byte允許的范圍內(nèi),虛擬機(jī)在編譯時(shí)做了一定的優(yōu)化處理。4.考慮一下對(duì)于if……else……語句,還有沒有更簡潔的寫法。例如:if(x>0){y=x;}else{y=-x;}可以簡寫成什么?參考答案:y=x>0x:-x;給定N,編程實(shí)現(xiàn)打印N*N的乘法表。參考答案:publicstaticvoidmain(String[]args){inta=0,b=0,c=0;for(inti=0;i<9;i++){a=i+1;for(intj=0;j<i+1;j++){b=j+1;c=a*b;System.out.print(a+"*"+b+"="+c+"");}System.out.println("");}}6.將下列語句轉(zhuǎn)換成Java代碼:(1)如果b1為真,打印“one”,否則打印“two”。(2)如果b1為假并且b2為真,打印“one”,否則打印“two”。(3)如果b1為假,并且如果b2為真則打印“one”,如果b2為假則打印“two”;否則打印“three”。參考答案:(1)if(b1=true){System.out.print("one");}else{System.out.print("two");}(2)if(b1=false&&b2=true){System.out.print("one");}else{System.out.print("two");}(3)if(b1=false&&b2=true){System.out.print("one");}elseif(b1=false&&b2=false){System.out.print("two");}else{System.out.print("three");}7.找出如下各項(xiàng)中的語法錯(cuò)誤:(1)for(intk=0;k<100;k++)System.out.println(k)(2)for(intk=0;k<100;k++);System.out.println(k);(3)intk=0whilek<100{System.out.println(k);k++};(4)intk=0;do{System.out.println(k);k++;}whilek<100;參考答案:(1)for(intk=0;k<100;k++){System.out.println(k);}(2)for(intk=0;k<100;k++){System.out.println(k);}(3)intk=0;while(k<100){System.out.println(k);k++;}(4)intk=0;do{System.out.println(k);k++;}while(k<100);寫出三個(gè)不同的循環(huán)―for、while和do-while循環(huán),打印出從0(包括0)開始直到1000的所有10的倍數(shù)。參考答案:(1)intn=0;while(n<=1000&&n%10==0){System.out.print(n); n++;}(2)intn=0do{if(n%10==0){System.out.print(n);}n++;}while(n<1000);(3)for(intn=0;n<=1000;n++){if(n%10==0){system.out.print(n);}給定N,編程實(shí)現(xiàn)打印行數(shù)為N的菱形。參考答案:publicstaticvoidmain(String[]args){ Scannerread=newScanner(System.in); intn; while(true){ System.out.println("輸入一個(gè)整數(shù)(>=0)"); if(read.hasNextInt()){ n=read.nextInt(); if(n<0) continue; break; }else{read.next();} } for(inti=0;i<n;i++){ for(intj=1;j<n-i;j++) System.out.print(""); for(intj=0;j<i*2+1;j++) System.out.print("*"); for(intj=1;j<n-i;j++) System.out.print(""); System.out.println(); } for(inti=n-2;i>=0;i--){ for(intj=1;j<n-i;j++) System.out.print(""); for(intj=0;j<i*2+1;j++) System.out.print("*"); for(intj=1;j<n-i;j++) System.out.print(""); System.out.println(); }}10.寫出下面程序的輸出結(jié)果:publicclassTestWhile{ publicstaticvoidmain(String[]args){ inta=0; while(++a<=100) if((a%9)==0) System.out.print(a+"\t"); System.out.println(); }}參考答案:918273645546372819099第4章1.比較String和StringBuffer的區(qū)別,并說明什么時(shí)候適合使用StringBuffer。參考答案:在Java中,String被完全當(dāng)成一個(gè)對(duì)象,一個(gè)String對(duì)象是組成這個(gè)字符串的字符序列,加上用來操作字符串的方法。字符串一旦被創(chuàng)建,就不能改變它的值。StringBuffer類同樣能夠表示一串字符。但是,及String類不同,一個(gè)StringBuffer類能夠被修改,StringBuffer類維護(hù)的是一個(gè)字符緩沖區(qū),在必要時(shí)它的長度能夠增長和縮短。對(duì)任何涉及修改字符串的任務(wù),應(yīng)該用StringBuffer代替String。2.說明==和equals的區(qū)別,并舉例。參考答案:==操作比較的是兩個(gè)變量的值是否相等,對(duì)于引用型變量表示的是兩個(gè)變量在堆中存儲(chǔ)的地址是否相同,即棧中的內(nèi)容是否相同。equals操作表示的是兩個(gè)變量是否是對(duì)同一個(gè)對(duì)象的引用,即堆中的內(nèi)容是否相同。==比較的是兩個(gè)對(duì)象的地址,而equals比較的是兩個(gè)對(duì)象的內(nèi)容。3.假定s是字符串字面值“exercise”,找出下列表達(dá)式有語法錯(cuò)誤的并改正: (1)s.charAt("hello") (2)s.indexOf("er") (3)s.substring(5)(4)s.lastIndexOf(er)(5)s.length()參考答案:其中(1)和(4)表達(dá)式有語法錯(cuò)誤。(1)charAt(int)參數(shù)是int類型的;(4)lastIndexOf()中的參數(shù)應(yīng)該為int或者String,這里的er既不是int也不是String。4.給定一個(gè)句子,統(tǒng)計(jì)單詞中字母的出現(xiàn)次數(shù)(字母不區(qū)分大小寫,全部按照小寫計(jì)算)。參考答案:參考代碼importjava.util.Scanner;publicclasscountChar{ publicstaticvoidmain(String[]args){ //輸入需要檢測(cè)的字符串 System.out.print("InputString:"); Scannerstr0=newScanner(System.in); Strings=str0.next(); System.out.println("theStringis:"+s); s=s.toLowerCase(); //將字符串轉(zhuǎn)換為小寫 //輸入需要統(tǒng)計(jì)的字符 System.out.print("Inputchar:"); Scannerstr1=newScanner(System.in); Strings1=str1.next(); charc=s1.charAt(0); System.out.println("Inputcharis:"+c); intcount=0; //統(tǒng)計(jì)出現(xiàn)次數(shù)變量 for(inti=0;i<s.length();i++){ charch=s.charAt(i); if(ch==c){ count++; } } System.out.println("Thetimesis:"+count); }}5.執(zhí)行Strings=newString("xyz");這一語句,共創(chuàng)建幾個(gè)String對(duì)象?參考答案:兩個(gè)。"xyz"本身是一個(gè)字符串對(duì)象,而newString()也會(huì)創(chuàng)造一個(gè)字符串對(duì)象。6.對(duì)于語句Strings="hello";下面那個(gè)表達(dá)式是合法的?(1)s+=5;(2)charc=s[1](3)intlen=s.length;(4)Stringt=s.toLowCase;參考答案:(1)為合法的。7.String和StringBuffer中的哪個(gè)方法能改變調(diào)用該方法的對(duì)象自身的值?(1)String的charAt()(2)String的replace()(3)String的toUpperCase()(4)StringBuffer的reverse()參考答案:(4)StringBuffer的reverse()可以改變對(duì)象自身的值。8.假定s是字符串字面值“exercise”,計(jì)算下面每個(gè)表達(dá)式的值: (1)s.charAt(5) (2)s.indexOf("er")(3)s.substring(5)(4)s.lastIndexOf(‘e’)(5)s.length()參考答案:(1)i;(2)2;(3)ise;(4)0;(5)8;9.寫出下面程序的輸出結(jié)果:publicclassStringExample{publicstaticvoidmain(String[]args){Stringstr=newString("abcd");Stringstr1="abcd";Stringstr2=newString("abcd");System.out.println(str==str1);System.out.println(str==str2);System.out.println(str1==str2); System.out.println(str.equals(str1));System.out.println(str.equals(str2));System.out.println(str1.equals(str2));System.out.println(str==ern());System.out.println(str1==ern());System.out.println(ern()==ern());Stringhello="hello";Stringhel="hel";Stringlo="lo";System.out.println(hello=="hel"+"lo");System.out.println(hello=="hel"+lo);}}參考答案:falsefalsefalsetruetruetruefalsetruetruetruefalse10.編寫程序,將字符串“aabbcdefg”中每個(gè)字符作加2操作,最后結(jié)果為“ccddefghi”。參考答案:參考代碼publicclassChar{ publicstaticvoidmain(String[]args){ Strings="aabbcdefg"; char[]ch=s.toCharArray(); for(inti=0;i<ch.length;i++){ ch[i]=(char)(ch[i]+2); } ch.toString(); System.out.println(ch); }}第5章編寫一個(gè)程序,計(jì)算出前10個(gè)平方數(shù)(例如1,4,9,16),并將這10個(gè)數(shù)保存到一個(gè)整型數(shù)組中,將數(shù)組中的所有元素輸出到控制臺(tái),驗(yàn)證程序是否正確。要確保數(shù)組有10個(gè)元素,并且元素值的范圍是1~100.參考答案:publicstaticvoidmain(String[]args){ intb[]=newint[10]; for(inti=1;i<11;i++){ b[i]=i*i;}for(inti=0;i<10;i++){ System.out.println(a[i]); }}聲明一個(gè)數(shù)組,其中的元素為37,47,23,-5,19,56,然后創(chuàng)建一個(gè)新數(shù)組,將前一個(gè)數(shù)組的內(nèi)容復(fù)制到后一個(gè)數(shù)組中。參考答案:publicstaticvoidmain(String[]args){ inta[]={37,47,23,-5,19,56}; intb[]=newint[a.length]; for(inti=0;i<a.length;i++){ b[i]=a[i]; } for(intj=0;j<b.length;j++){ System.out.print(b[j]+""); } }從命令行輸入5個(gè)整數(shù)到數(shù)組a中,分別輸入33、55、22、66及77。求偶數(shù)的個(gè)數(shù)及其和。參考答案:示例代碼:publicstaticvoidmain(String[]args){ inta[]=newint[5]; intcount=0; intsum=0; for(inti=0;i<a.length;i++){ System.out.print("請(qǐng)輸入數(shù)組中的元素:"); Scannerread=newScanner(System.in); a[i]=read.nextInt(); if(i%2!=0){ count++; sum=sum+a[i]; } } System.out.println("偶數(shù)個(gè)數(shù)是:"+count); System.out.println("偶數(shù)的和是:"+sum); }4.從命令行輸入一個(gè)字符串“JavaServlet”,將每個(gè)字符存入a數(shù)組。(1)大寫字母有幾個(gè)?分別是那幾個(gè)?(2)小寫字母有幾個(gè)?分別是那幾個(gè)?(3)將小寫字母轉(zhuǎn)換成大寫字母,大寫字母轉(zhuǎn)換成小寫字母。參考答案:publicstaticvoidmain(String[]args){ if(args[0]!=""){StringinputString=args[0]; intcountLower=0; intcountUpper=0; StringstrLower=""; StringstrUpper=""; for(inti=0;i<inputString.length();i++){ charc=inputString.charAt(i); if(Character.isUpperCase(c)){ countUpper++; strUpper+=c+""; }elseif(Character.isLowerCase(c)){ countLower++; strLower+=c+""; } } System.out.println("大寫字母有"+countUpper+"個(gè),分別是:"+strUpper); System.out.println("小寫字母有"+countUpper+"個(gè),分別是:"+strLower); }}5.閱讀下面代碼:int[]ages=newint[10];System.out.println(ages[9]);下面關(guān)于上面兩行代碼的說法哪一個(gè)正確的?(1)編譯時(shí)發(fā)生錯(cuò)誤(2)編譯通過,運(yùn)行時(shí)發(fā)生錯(cuò)誤,因?yàn)榫植孔兞吭跊]有初始化情況下,不能使用(3)編譯通過,執(zhí)行之后向控制臺(tái)輸出結(jié)果為0(4)編譯通過,執(zhí)行時(shí)提示發(fā)生數(shù)組越界的錯(cuò)誤參考答案:(3)為正確選項(xiàng)。6.閱讀下面代碼:publicclassAClass{ publicstaticvoidmain(String[]args){ String[]msg={"one","two","three","four"};if(args.length==0){ System.out.println("Noarguments");}else{System.out.println(msg[args.length]+"arguments");} }}下面哪個(gè)選項(xiàng)的說法是正確的?(1)該代碼無法編譯通過(2)不帶任何參數(shù)運(yùn)行該程序時(shí),會(huì)拋出NullPointerException異常(3)分別帶0個(gè)參數(shù)、3個(gè)參數(shù)運(yùn)行該程序時(shí),會(huì)打印Noarguments和twoarguments(4)分別帶0個(gè)參數(shù)、3個(gè)參數(shù)運(yùn)行該程序時(shí),會(huì)打印Noarguments和fourarguments參考答案:(4)為正確選項(xiàng)。從命令行輸入八個(gè)參數(shù),并以氣泡法排序后保存在a數(shù)組中,然后再輸入一個(gè)查找鍵值Key,按順序查找判斷該鍵值是否存在及a數(shù)組中。參考答案:參考代碼:publicstaticvoidmain(String[]args){inti,j,t,temp;intarray[]=newint[8]; System.out.println("輸入8個(gè)整數(shù):");/*輸入8個(gè)整數(shù)*/for(i=0;i<array.length;i++){ System.out.print("請(qǐng)輸入:"); Scannerread=newScanner(System.in); array[i]=read.nextInt(); } /*冒泡排序*/for(i=0;i<array.length;i++){for(j=array.length-1;j>i;j--)if(array[j]>array[j-1]){ t=array[j]; array[j]=array[j-1]; array[j-1]=t; } } /*輸出排序后的數(shù)組元素*/for(i=0;i<array.length;i++){ System.out.print(array[i]+""); } System.out.println("輸入一個(gè)整數(shù)作為鍵值Key:"); Scannerread=newScanner(System.in); temp=read.nextInt();for(i=0;i<array.length&&temp<=array[i];i++)/*在排序后的數(shù)組中查找*/ {if(temp==array[i]){ System.out.printf("array[%d]是您所找的數(shù).\n",i);/*在數(shù)組中有可能有相等的元素*/ }elseif(temp!=array[i-1]){ System.out.printf("數(shù)組中沒有您想找的數(shù).");/*數(shù)組中沒有所輸入的數(shù)*/ } } }8.現(xiàn)有一個(gè)長度為49的整型數(shù)組a[49],不重復(fù)的將1-50之中49個(gè)數(shù)依次賦值給該數(shù)組,編寫程序找出沒有放進(jìn)該數(shù)組的是哪個(gè)數(shù)?參考答案:publicstaticintfindNum(inta[]){ intnumFound=0; Arrays.sort(a); System.out.println(Arrays.toString(a)); for(inti=0;i<50;i++){ if(a[i]!=(i+1)){ numFound=i+1; break; } } returnnumFound;}第6章1.指出下面聲明中的語法錯(cuò)誤(如果有)。記住,域聲明的某些部分是可選的。(1)publicbooleanisEven;(2)privatebooleanisEven;(3)privatebooleanisOdd;(4)publicbooleanisOdd;(5)stringS;(6)privatebooleaneven=0;(7)privateStrings=helloWorld;參考答案:(3)和(4)均存在變量名命名錯(cuò)誤;(5)string并不是一個(gè)類型,應(yīng)為String。(6)布爾類型變量的值應(yīng)該為“true”或者“false”,不應(yīng)該為整型。(7)helloWorld不是一個(gè)字符串,必須用雙引號(hào),如:”helloWorld”。2.寫出下列實(shí)例變量的聲明:(1)名為bool的私有boolean型變量,初始值為真。(2)名為str的公共string型變量,初始值為“hello”。(3)名為nEmployees的私有int型變量,沒有初始值。參考答案:(1)privateBooleanbool=true;(2)publicStringstr=“hello”;(3)privateintnEmployees;3.創(chuàng)建如下類:Circle類(圓形),Square類(正方形)和Point類(點(diǎn))。Point根據(jù)(x,y)坐標(biāo)定位。Cricle除了一個(gè)(x,y)坐標(biāo)之外,還有半徑屬性。正方形除了一個(gè)(x,y)坐標(biāo)之外,還有邊長。請(qǐng)問這些類中那些是超類,那些是子類?參考答案:Point類(點(diǎn))為超類,而Circle類(圓形)和Square類(正方形)為子類。4.關(guān)鍵字組合問題:(1)abstract方法能否是final類型的?(2)abstract方法能否是static類型的?(3)能否定義一個(gè)私有靜態(tài)(privatestatic)方法?參考答案:(1)abstract不能用final修飾符修飾;(2)abstract方法不能是static類型的;(3)不能定義一個(gè)私有靜態(tài)方法。5.閱讀下面代碼:1. publicclassTest{2. voidtest(shorts){3. System.out.println("Iamanint");4. }5. voidtest(byteb){6. System.out.println("Iamastring");7. }8. 9. publicstaticvoidmain(Stringargs[]){10. Testt=newTest();11. charch='y';12. t.test(ch);13. }14. }下面對(duì)于上述代碼的描述哪個(gè)是正確的?(1)第5行無法編譯,因?yàn)関oid方法不能被重載(overridden)(2)第12行無法編譯,因?yàn)闆]有定義可以接受char類型參數(shù)的方法(3)代碼可以編譯,但執(zhí)行時(shí)在12行會(huì)拋出異常(4)代碼可以編譯,并且執(zhí)行之后的輸出結(jié)果為:Iamanint參考答案:(2)為正確參考答案。6.閱讀下面代碼,請(qǐng)確定a、b、c、d中的哪一個(gè)說法是正確的? classA{ intvalue1; } classBextendsA{ intvalue2; }(2)類A擴(kuò)展了類B(2)類B是類A的父類(3)類B是類A的子類(4)類A的對(duì)象實(shí)例中,存在一個(gè)名字為value2的成員變量參考答案:(3)為正確參考答案。7.在如下源代碼文件Test.java中,哪個(gè)是正確的類定義?(1)publicclasstest{publicintx=0;publictest(intx){this.x=x;}}(2)publicclassTest{publicintx=0;publicTest(intx){this.x=x;}}(3)publicclassTestextendsT1,T2{publicintx=0;publicTest(intx){this.x=x;}}(4)protectedclassTestextendsT2{publicintx=0;publicTest(intx){this.x=x;}}參考答案:(2)為正確參考答案。8.描述靜態(tài)代碼塊、非靜態(tài)代碼塊及構(gòu)造函數(shù)的執(zhí)行順序。參考答案:(靜態(tài)代碼塊非靜態(tài)代碼塊構(gòu)造方法)。9.請(qǐng)用代碼實(shí)現(xiàn)一個(gè)計(jì)算方法calc(),該方法接受兩個(gè)參數(shù),返回值為兩個(gè)參數(shù)的和,并且返回值類型及傳入的參數(shù)類型一致,例如:calc(3,5)返回8,calc(3.0,5.3)返回8.3。參考答案:(這里不考慮類型判斷和溢出等問題,使用方法重載或者泛型實(shí)現(xiàn))(1)publicintcalc(intnum1,intnum2){ returnnum1+num2;}publicdoublecalc(doublenum1,doublenum2){ returnnum1+num2;}(2)publicTcalc(Tnum1,Tnum2){ returnnum1+num2;}10.簡述Java中this和super的用法。參考答案:在Java中有兩個(gè)非常特殊的變量:this和super,這兩個(gè)變量在使用前都是不需要聲明的。this變量使用在成員函數(shù)的內(nèi)部,指向當(dāng)前對(duì)象。super變量直接指向超類的構(gòu)造函數(shù),用來引用超類中的變量和方法。this指代當(dāng)前類的構(gòu)造方法,super指代父類的構(gòu)造方法。第7章1."abcd"instanceofObject的返回結(jié)果是:(1)"abcd"(2)true(3)false(4)String參考答案:(2)為正確項(xiàng)。2.閱讀下面代碼:publicclassFoo{publicstaticvoidmain(String[]args){inti=0;addTow(i++);System.out.println(i);}staticvoidaddTow(inti){i+=2;}}上述代碼的執(zhí)行結(jié)果是:(1)0 (2)1(3)2 (4)3參考答案:(2)為正確項(xiàng)。3.閱讀下面代碼publicclassThisUse{intplane;staticintcar;publicvoiddoSomething(){inti;//插入語句}}下面哪個(gè)選項(xiàng)中的內(nèi)容不能添加到//插入語句處(添加后導(dǎo)致編譯錯(cuò)誤)(1)i=this.plane; (2)i=this.car;(3)this.car=plane; (4)this.i=4;參考答案:(4)不能添加到//插入語句處。4.下列選項(xiàng)中哪一個(gè)說法是錯(cuò)誤的?(1)實(shí)例方法可以直接訪問靜態(tài)變量和靜態(tài)方法(2)靜態(tài)方法可以直接訪問靜態(tài)變量和靜態(tài)方法(3)靜態(tài)方法可以直接訪問實(shí)例變量和實(shí)例方法(4)靜態(tài)方法中不能使用this和super參考答案:(3)選項(xiàng)說法是錯(cuò)誤。5.關(guān)于靜態(tài)變量的創(chuàng)建,哪一個(gè)選項(xiàng)的說法是正確的?(1)一旦一個(gè)靜態(tài)變量被分配,它就不允許改變(2)一個(gè)靜態(tài)變量在一個(gè)方法中被創(chuàng)建,它在被調(diào)用的時(shí)候值保持不變(3)通常情況下、在任意多個(gè)類的實(shí)例中,一個(gè)靜態(tài)變量的實(shí)例只存在一個(gè)(4)一個(gè)靜態(tài)標(biāo)識(shí)符只能被應(yīng)用于原始類型變量參考答案:(3)正確選項(xiàng)。6.下列哪一種敘述是正確的?(1)abstract修飾符可修飾字段、方法和類(2)抽象方法的body部分必須用一對(duì)大括號(hào){}包?。?)聲明抽象方法,大括號(hào)可有可無(4)聲明抽象方法不可寫出大括號(hào)參考答案:(4)為正確項(xiàng)。解析:抽象方法的定義:只有方法的聲明,沒有方法的實(shí)現(xiàn),即沒有方法體。7.閱讀下面代碼:1:interfaceFoo{2: intk=0;3:}4:5:publicclassTestimplementsFoo{6: publicstaticvoidmain(Stringargs[]){7: inti;8: Testtest=newTest();9: i=test.k;10: i=Test.k;11: i=Foo.k;12: }13:}下面關(guān)于執(zhí)行結(jié)果的說法哪一個(gè)是正確的?(1)第2行編譯失?。?)第9行編譯失敗(3)第10行編譯失?。?)編譯成功參考答案:(4)為正確項(xiàng)。8.閱讀下面代碼:classA{voidtest1(){hi();}privatevoidhi(){System.out.println("sayhi,a");}}classAAextendsA{voidhi(){System.out.println("sayhi,aa");}}publicclasstest{publicstaticvoidmain(Stringb[])throwsException{Aa=newAA();a.test1();}}下面關(guān)于上述代碼的說法哪一個(gè)是正確的?(1)編譯失敗 (2)編譯通過,執(zhí)行結(jié)果是:sayhi,a(3)編譯通過,執(zhí)行結(jié)果是:sayhi,aa (4)編譯通過,運(yùn)行時(shí)發(fā)生錯(cuò)誤參考答案:(2)為正確項(xiàng)。簡述Java中有幾種內(nèi)部類?(根據(jù)自己的理解,簡答即可)參考答案:(1)靜態(tài)嵌套類:是個(gè)封閉式頂層類或接口的static(靜態(tài))成員。這樣的類在Java中作為頂層類。(2)成員內(nèi)部類:是一種非靜態(tài)內(nèi)部類,它不是頂層類。作為包含它的類的全部成員,成員類可以訪問包含它的類的屬性和方法,甚至private修飾的變量和方法。正如類的其他實(shí)例變量和方法一樣,一個(gè)成員內(nèi)部類的所有實(shí)例都及包含它的類的一個(gè)實(shí)例相關(guān)。(3)方法和作用域中的內(nèi)部類(局部類):是一個(gè)內(nèi)部類,定義在一個(gè)Java代碼塊內(nèi),比如說定義在一個(gè)方法或循環(huán)主體內(nèi)。局部類具有局部作用域,僅使用在定義它的代碼塊內(nèi)。局部類可以訪問包含它的類的方法和變量。(4)匿名內(nèi)部類:是一種其定義和使用被組合到單一表達(dá)式中的方法和作用域中的內(nèi)部類。其定義和使用都在一個(gè)表達(dá)式中完成,而不是在一條語句中定義,在另一條語句中使用。匿名內(nèi)部類只使用一次,故不包含構(gòu)造方法。Java中包裝類的作用是什么?參考答案:在Java中不能定義基本類型的類,為了能將基本類型視為對(duì)象來處理,并能操作相關(guān)的方法,Java為每個(gè)基本類型都提供了包裝類。這樣,便可以把這些基本類型轉(zhuǎn)化為對(duì)象來處理了。Java中final修飾的類、方法、變量各有什么特點(diǎn)?參考答案:(1)final類final類不能被繼承,因此final類的成員方法沒有機(jī)會(huì)被覆蓋,默認(rèn)都是final的。在設(shè)計(jì)類時(shí)候,如果這個(gè)類不需要有子類,類的實(shí)現(xiàn)細(xì)節(jié)不允許改變,并且確信這個(gè)類不會(huì)載被擴(kuò)展,則就設(shè)計(jì)為final類。(2)final方法如果一個(gè)類不允許其子類覆蓋某個(gè)方法,則可以把這個(gè)方法聲明為final方法。使用final方法的原因有二:
第一、把方法鎖定,防止任何繼承類修改它的意義和實(shí)現(xiàn)。第二、高效。編譯器在遇到調(diào)用final方法時(shí)候會(huì)轉(zhuǎn)入內(nèi)嵌機(jī)制,大大提高執(zhí)行效率。(3)final變量(常量)用final修飾的成員變量表示常量,值一旦給定就無法改變!final修飾的變量有三種:靜態(tài)變量、實(shí)例變量和局部變量,分別表示三種類型的常量。簡述Java中反射的作用。參考答案:Java反射機(jī)制主要提供了以下功能:在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類;在運(yùn)行時(shí)構(gòu)造任意一個(gè)類的對(duì)象;在運(yùn)行時(shí)判斷任意一個(gè)類所具有的成員變量和方法;在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法;生成動(dòng)態(tài)代理。簡述Java接口的特點(diǎn),和抽象類的區(qū)別。參考答案:接口的特點(diǎn):(1)所有屬性都是用public、static、final修飾。(2)所有方法都是用public修飾,方法沒有方法體。(3)不允許有靜態(tài)方法。(4)接口可以繼承多個(gè)接口。和抽象類的區(qū)別:(1)抽象類中可以有普通成員變量,接口中沒有普通成員變量。(2)抽象類有非抽象的方法和構(gòu)造方法,并且修飾符可以是私有的,接口只能是抽象的方法,并且修飾符是public。(3)抽象類中可以包含靜態(tài)方法,接口中不能包含靜態(tài)方法。(4)類只能繼承一個(gè)抽象類,但能實(shí)現(xiàn)多個(gè)接口。Java中instanceof關(guān)鍵字的作用是什么?參考答案:instanceof是Java中的一個(gè)二元操作符,也是Java中的保留關(guān)鍵字。它的作用是測(cè)試它左邊的對(duì)象是否是它右邊類的實(shí)例,返回boolean類型的值。15.閱讀下面的代碼classA{publicstaticvoidprt(){System.out.println("1");}publicA(){System.out.println("A");}}publicclassBextendsA{publicstaticvoidprt(){System.out.println("2");}publicB(){System.out.println("B"); }publicstaticvoidmain(String[]args){Aa=newB();a=newA();}} 請(qǐng)寫出輸出結(jié)果。參考答案:ABA第8章下面哪個(gè)類是異常類的基類?(1)String (2)Error(3)Throwable (4)RuntimeException參考答案:(3)為正確選項(xiàng)。Java把異常當(dāng)作對(duì)象來處理,并定義一個(gè)基類java.lang.Throwable作為所有異常的超類,因此Throwable在異常類層次結(jié)構(gòu)的頂層。在JavaAPI中已經(jīng)定義了許多異常類,這些異常類分為兩大類歸屬于Throwable:錯(cuò)誤(Error)和異常(Exception)。2.下面哪個(gè)選項(xiàng)中的異常類不是運(yùn)行時(shí)異常?(1)NullPointerException(2)ClassCastException(3)ArrayIndexOutOfBoundsException(4)SQLException參考答案:(4)不是運(yùn)行時(shí)異常。3.閱讀下面代碼:try{intx=0;inty=5/x;}catch(Exceptione){System.out.println("Exception");}catch(ArithmeticExceptionae){System.out.println("ArithmeticException");}System.out.println("finished");以下哪一個(gè)選項(xiàng)的說明是正確的?(1)執(zhí)行結(jié)果為:finished (2)執(zhí)行結(jié)果為:Exception(3)編譯失敗 (4)執(zhí)行結(jié)果為:ArithmeticException參考答案:(3)編譯失敗。因?yàn)锳rithmeticException是Exception的子類,在使用其之前已經(jīng)捕獲了Exception。4.以下關(guān)于異常(Exception)的說法,哪一項(xiàng)是正確的?(1)類的方法中發(fā)生的異常,可以通過try–catch語句進(jìn)行捕捉。(2)JAVA中所有異常都必須被捕捉并處理,否則在編譯時(shí)將提示編譯錯(cuò)誤。(3)try-catch-finally語句來說,finally部分的代碼,只在發(fā)生異常時(shí)執(zhí)行。(4)try-catch-finally語句來說,finally部分的代碼,只在未發(fā)生異常時(shí)執(zhí)行。參考答案:(1)為正確項(xiàng)。5.以下關(guān)于異常(Exception)的說法,哪一項(xiàng)是正確的?(1)Error類型的異常必須被捕捉處理,否則會(huì)提示編譯錯(cuò)誤(2)SQLExcpetion屬于RuntimeException(3)在對(duì)異常進(jìn)行捕捉處理時(shí),finally部分必須存在(4)在對(duì)異常進(jìn)行捕捉處理時(shí),catch部分可以對(duì)多個(gè)異常進(jìn)行捕捉參考答案:(4)為正確項(xiàng)。6.試說明Java中異常處理的方式。(根據(jù)自己的理解,簡答即可)參考答案:(1)Java默認(rèn)處理程序,程序終止,輸出異常信息。(2)程序處理,使用try-catch的語法,只有在知道如何處理的情況下才捕獲異常!一旦程序中出現(xiàn)不可恢復(fù)的錯(cuò)誤,程序應(yīng)當(dāng)盡快終止,不要嘗試處理異常。(3)回避異常,使用throws方法拋出。(4)異常轉(zhuǎn)換,異常捕獲后后進(jìn)行再次throw7.簡述使用try-catch-finally時(shí)的注意事項(xiàng)。(根據(jù)自己的理解,簡答即可)參考答案:(1)try塊中的代碼要少,最好只包含可能拋出異常的語句。(2)catch異常時(shí)需要進(jìn)行正確的處理,避免出現(xiàn)不處理的情況。(3)多catch子句中子類異常一定要在父類異常之前。(4)將資源釋放的工作放在finally塊中,這樣保證資源被釋放。8.簡述子類覆蓋父類方法時(shí),如果父類方法聲明處拋出異常,則子類覆蓋方法該如何處理異常?參考答案:Java繼承中,子
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電纜井施工考核試卷
- 纖維素纖維在食品包裝材料中的應(yīng)用考核試卷
- 罐頭食品生產(chǎn)過程中的食品安全風(fēng)險(xiǎn)評(píng)估考核試卷
- 照明器具的熱管理技術(shù)研究考核試卷
- 文化遺產(chǎn)保護(hù)與可持續(xù)旅游考核試卷
- 罐頭食品企業(yè)人力資源規(guī)劃與招聘策略考核試卷
- 木地板企業(yè)全面質(zhì)量管理與持續(xù)改進(jìn)考核試卷
- 電氣設(shè)備電力系統(tǒng)綜合自動(dòng)化考核試卷
- 綠色編織工藝在環(huán)保生活用品考核試卷
- 婚姻穩(wěn)定保障協(xié)議書:忠誠與責(zé)任承擔(dān)
- 傳統(tǒng)園林技藝智慧樹知到期末考試答案章節(jié)答案2024年華南農(nóng)業(yè)大學(xué)
- 蘇教版四年級(jí)數(shù)學(xué)下冊(cè)確定位置
- 公司基本情況介紹
- 異步電機(jī)矢量控制系統(tǒng)設(shè)計(jì)
- GB/T 29602-2013固體飲料
- 食品中天然有毒物質(zhì)與食品安全精課件
- 小學(xué)統(tǒng)編版道德與法治一年級(jí)下冊(cè)教材分析解讀課件
- 信息經(jīng)濟(jì)學(xué)-信號(hào)傳遞:斯賓塞勞動(dòng)市場(chǎng)模型課件
- 創(chuàng)傷急救-止血、包扎課件
- 豬肉品質(zhì)及其營養(yǎng)調(diào)控
- 小學(xué)數(shù)學(xué) 西南師大版 四年級(jí)下冊(cè) 小數(shù)的加法和減法部優(yōu)課件
評(píng)論
0/150
提交評(píng)論