JAVA練習(xí)題及答案
第1章java語言概述習(xí)題
一、填空題
?1、面向?qū)ο蟪绦虻闹饕卣鳎豪^承,__封裝___,___多態(tài) _____。
?2、java中的繼承機(jī)制之所以能夠降低程序的復(fù)雜性,提高程序的效率,主要是 ?因?yàn)樗勾a可以__重用或復(fù)用___.
?3、java語言中,為將源代碼翻譯成 __字節(jié)碼__文件時(shí)產(chǎn)生的錯(cuò)誤稱為編譯錯(cuò)誤,而將程序在運(yùn)行中產(chǎn)生的錯(cuò)誤稱為運(yùn)行錯(cuò)誤。
?4、javac是java語言中的編譯器,基本語法是:javac[選項(xiàng)] __文件名__,java是java語言中的解釋執(zhí)行器,基本語法是:java[選項(xiàng)]___類名___.
?5、java語言的主要貢獻(xiàn)者是誰 James gosling???????????
二、單選題
1、編譯Java Application 源程序文件將產(chǎn)生相應(yīng)的字節(jié)碼文件,這些字節(jié)碼文件的擴(kuò)展名為( B)。
?A、java ??B、.class ??C、html ?D、.exe
2、main方法是Java ?Application程序執(zhí)行的入口點(diǎn),關(guān)于main方法的方法首部,
以下(B)項(xiàng)是合法的。
A、public ?static void ?main()
?B、public static void main(String ?args[]) ?
C、public static int main(String[] arg)
?D、public void main(String ?arg[])
三、判斷
1、Java語言具有較好的安全性和可移植性及與平臺(tái)無關(guān)等特性?!?/p>
2、Java語言的源程序不是編譯型的,而是編譯解釋型的?!?/p>
四、問答題
1、編寫、運(yùn)行java程序需要經(jīng)過哪些主要步驟?
答:1.編寫源文件,擴(kuò)展名必須是.java
2.編寫java源程序,使用java編譯器編寫源文件,得到字節(jié)碼文件
3.運(yùn)行java程序,使用javaSE平臺(tái)只不過的java解釋器來解釋執(zhí)行字節(jié)碼文件。
?
2、閱讀下列java源代碼文件,并回答問題
public?class?Speak{
void?speakHello(){ ????????
System.out.println("I'm glad to meet you"); ???
}
?}
?class?Xiti8{ ??????
????public?static?void?main(String args[]){ ????
???? Speak sp=new?Speak(); ??????
???? sp.speakHello(); ??
}
}
(1)上述源文件的名字是什么?Speak.java
?(2)上述源文件編譯后生成幾個(gè)字節(jié)碼文件,這些字節(jié)碼文件的名字分別是什么?Speak.class Xiti8.class
第2章(1)基本數(shù)據(jù)類型練習(xí)題
一、填空題
1、java基本數(shù)據(jù)類型中整型,字符型分別占用字節(jié)數(shù)為___4___,___2____.
?2、java語言中的浮點(diǎn)數(shù)根據(jù)數(shù)據(jù)存儲(chǔ)長度和數(shù)值精度的不同,進(jìn)一步分為_ ?float__和__double__兩種具體類型。
3、Java中的浮點(diǎn)類型有兩類,分別是float和double類型,其中float取7___位有 ?效數(shù)據(jù),double取_15__位有效數(shù)據(jù)。
4、布爾類型常量只有兩個(gè)__true___和__false____,其中前者表示邏輯真,后者表示邏輯假。
5、浮點(diǎn)型常量又稱實(shí)型常量,用于表示有小數(shù)部分的十進(jìn)制數(shù),它有兩種表示形式:__小數(shù)形式____和__指數(shù)形式______。
6、java語言中的各種數(shù)據(jù)類型之間提供自動(dòng)轉(zhuǎn)換,如第一種操作數(shù)為byte,而第二種操作數(shù)為float,則其結(jié)果是__float___類型。
7、java語言的各種數(shù)據(jù)類型之間提供兩種轉(zhuǎn)換,分別是__自動(dòng)轉(zhuǎn)換__和_強(qiáng)制轉(zhuǎn)換____。
8、開發(fā)與運(yùn)行Java程序需要經(jīng)過的三個(gè)主要步驟為 ??編寫源程序?????、編譯生成字節(jié)碼文件 ??和 ?解釋運(yùn)行字節(jié)碼文件 ???????。
9、Java程序中的單行注釋符是(// ???),多行注釋符是( /* */ ?)。
10、Java中布爾類型的常量有兩種,它們是( true??)和(false)。
11、Java中用于定義小數(shù)的關(guān)鍵字有兩個(gè):( ?float?) 和 (?double ?),后者精度高于前者。
二、多選
1、下面有關(guān)char類型數(shù)據(jù)的定義中,正確得是_BE_______?
?A. char ch = “a”; ???B. char ch = ‘\’ ‘;
?C. char ch = ‘cafe’; ?D. char ch = “cafe”;
?E. char ch = ‘\ucafe’; F. char ch = ‘\u10100’; ?
G. char ch = (char) true;
三、判斷
1、Java語言使用的是Unicode字符集,每個(gè)字符在內(nèi)存中占8位。?×,16位
?2、Java語言中不同數(shù)據(jù)類型的長度是固定的,不隨機(jī)器硬件不同而改變?!?/p>
四、單選
1、以下哪個(gè)不是Java的基本數(shù)據(jù)類型( B)
A、int ?B、Boolean C、float ?D、char
2、如下哪個(gè)是Java中有效的關(guān)鍵字( ?c ?)
A、name ?B、hello ?C、false ??D、good?
第2章(2)數(shù)組練習(xí)題
一、填空題
1、當(dāng)聲明一個(gè)數(shù)組int arr[] = new int[5]; 時(shí),這代表這個(gè)數(shù)組所保存的變量類型是(int),數(shù)組名是(arr),數(shù)組的大小為(5),數(shù)組元素下標(biāo)的使用范圍是(0-4)。
二、多選
1、定義如下的二維數(shù)組b,下面的說法正確的是(ACD )。
?int b[][]={{1, 2, 3}, {4, 5},{6, 7, 8}}};
A)b.length的值是3。 ?B)b[1].length的值是3。
B)?C)b[1][1]的值是5。 ?D) 二維數(shù)組b的第一行有3個(gè)元素
三、單選
1、以下哪項(xiàng)是main方法的正確形參?( B)
?A、String args ??B、String ar[] ??C、Char arg ??D、StringBufferargs[]
2、有整型數(shù)組:int[] x={12,35,8,7,2};,則調(diào)用方法Arrays.sort(x)后,數(shù)組x中的元 ?素值依次是(A?).
A) 2 7 8 12 35 ?B) 12 35 8 7 2 ??C) 35 12 8 7 2 ?D) 8 7 12 35 2
?
3、應(yīng)用程序Test.java的源程序如下,在命令行鍵入:java Test aaa bb c,回車后輸出的結(jié)果是 (?A)。
?public class Test {
?public static void main(String args[]) {
?int k1=args.length;
?int k2=args[1].length();
System.out.print(k1+" "+k2);
?}
?}
A) 3 2 ??B)1 2 ??C) 1 3 ??D) 3 3
4、關(guān)于下面代碼的說法(C)是正確的?
public class Example{ ?
??????public static void main(String[] args){
????????????????int[] arr= new int[10]; ?????????????? ? ? ? ?System.out.println(arr[1]);
???????}
}
A、編譯時(shí)產(chǎn)生錯(cuò)誤 ?
B、編譯時(shí)正確,運(yùn)行時(shí)將產(chǎn)生錯(cuò)誤 ??
C、輸出零 ??
D、輸出空(null)??
第3章(1)運(yùn)算符&表達(dá)式&if語句練習(xí)題
一、填空
1、Java中,除了_字符型____和___布爾型__外,其他的所有的基本數(shù)據(jù)類型都支持加,減,乘,除四則運(yùn)算。
?2、短路邏輯運(yùn)算符包括___&&___和___||___。
?3、Java提供了&,&&和|,||運(yùn)算符,除了一點(diǎn)外,&運(yùn)算符和&&運(yùn)算符在使用中 ?完全相同,|運(yùn)算符和||運(yùn)算符也相同。它們的不同點(diǎn)在于:__&__運(yùn)算符和___| ?運(yùn)算符中的兩個(gè)運(yùn)算對(duì)象都要運(yùn)算。
?4、順序執(zhí)行以下兩個(gè)語句的輸出結(jié)果是:__10_____。
String s=”我喜歡學(xué)習(xí)java!”;
System.out.println(s.length());
5、下面代碼定義了兩個(gè)整型變量和一個(gè)字節(jié)型變量,則將num1+num2的值賦給 ?num3變量的語句是______num3=(byte)(num1+num2)_______。
?int num1 = 53;
?int num2=47;
?byte num3;
6、下面代碼中,“Type”應(yīng)該換成什么類型__double______?
public class ReturnIt {
return?Type?methodA(byte?x, double?y) {
return?(long)x / y * 2;
}
}
?????????7、Java語言提供了兩條基本的分支選擇語句:_if___語句和switch____語句
?
?8、以下程序段的輸出結(jié)果為Message four
int?x=0,y=4, z=5;
if?( x>2){
if?(y<5){
System.out.println("Message one");
}
else?{
System.out.println("Message two");
}
}
else?if(z>5){
System.out.println("Message three");
}
else?{
System.out.println("Message four");
}?
二、單選
1、下面選項(xiàng)中,__D___的值與3*4的值相等?
A. 3/2 ??B. 3<2 ?C. 3*2^2 ??D. 3<<2
2、下面選項(xiàng)中,D_____的值與16/2^12的值相等?
?A. 16>4 ??B. 16/2 ??C. 16*4 ??D. 16>>2 ??E. 16>>>2
3、有以下方法的定義,請(qǐng)選擇該方法的返回類型(?D)。
ReturnType method(byte x, double y) {
return (short) x/y*2;
}
A、byte ??B、short ??C、int ??D、double ?
?
第3章(2)switch&循環(huán)語句練習(xí)題
一、填空題
1、設(shè)有數(shù)組定義:int MyIntArray[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70}; 則執(zhí)行以下幾個(gè)語句后的輸出結(jié)果是 ????120 。
int s = 0 ;
?for (int i = 0 ; i < MyIntArray.length ; i + + )
?if ( i % 2 = = 1 )
s += MyIntArray[i] ;
System.out.println(s); //s=20+40+60
2、下面程序段的執(zhí)行結(jié)果是(?6 5 4 3 2 ??) ?
?int a[] = { 2, 3, 4, 5, 6 };
???for (int i = a.length - 1; i >= 0; i--)
????System.out.print(a[i] + ""); //從大到小排序
?3、以“java Sub 3”運(yùn)行以下程序的結(jié)果是:3th season?__。?
public class Sub{
public?static?void?main(String[] args) {
int?i=Integer.parseInt(args[0]);
switch(i) {
case?1: System.out.println("First season"); break;
case?2: System.out.println("Second season"); break;
case?3: System.out.println("3th season"); break;
case?4: System.out.println("Last season"); break;
}
}
}
?
?4.switch(X)中,X可以接受的類型有_byte____,____char___,short,int。
?5、以下程序段的輸出結(jié)果為
_value is two_
?value is three?______。
int j=2;
???switch ( j ) {
?case 2: System.out.print(“Value is two.”);
????????case 2+1 : System.out.println(“Value is three.”); break; ?default: System.out.println(“value is “+j); break;
??}
6.如果x=2;則下面程序執(zhí)行后的結(jié)果是_34_____?
? switch (x) {
case 1: System.out.println(1);
? ?case 2: case 3: System.out.print(3);
case 4: System.out.println(4);
}
7、下面代碼執(zhí)行結(jié)束后l和j的值分別是___5,6___?
public static void main(String[] args) {
?int j=10;
?int l=1;
?do{
if(l++>--j) continue;
?}while(l<5);
?}
8、下面程序序的運(yùn)行結(jié)果為( 20)
?class test{
public static void main(String args[]){
?int sum=0;
for(int i=0;i<10;i++){
? if(i%2==0)
sum+=i;
?else continue;
?}
System.out.println(sum);
?}
} ?
二、單選
1、應(yīng)用程序的main方法中有以下語句,則輸出的結(jié)果是 (B?)。
?int b[][]={{1}, {2,2}, {2,2,2}};
?int sum=0;
?for(int i=0;i<b.length;i++) {
?for(int j=0;j<b[i].length;j++) {
sum+=b[i][j]; } }
System.out.println("sum="+sum);
?A) 32 B)11?C) 2 D) 3
2、應(yīng)用程序的main方法中有以下語句,則執(zhí)行后輸出的結(jié)果是 (D)? ? ?int[] x={125,21,5,168,98};
?int max=x[0];
for(int i=1;i<x.length;i++){
?if(x[i]> max) max =x[i];
?}
?System.out.println(max);
A) 125 B) 5 C) 98 D) 168?
第4章(1)類和對(duì)象練習(xí)題
一、填空
?1、面向?qū)ο蟪绦虻闹饕卣鳎豪^承,____封裝___________,___多態(tài)___________。
?2、____構(gòu)造方法_是類中的一種特殊方法,用來定義對(duì)象的初始狀態(tài)。
?3、構(gòu)造方法在__創(chuàng)建對(duì)象__時(shí)被調(diào)用。
?4、系統(tǒng)類Math的random()方法可用來產(chǎn)生0-1.0之間的實(shí)數(shù),則產(chǎn)生一個(gè)50
-100之間的整數(shù)的程序語句是_(int)Math.random()*50+50______。
?5、下面代碼執(zhí)行結(jié)束之后,打印出來的結(jié)果是__4____?
public class Happy {
?public?static?void?main(String args[]) {
?int?i=4; int?j=2; methodA(i,j);
?}
?System.out.println(i);
?}
static?public?void?methodA(int?i,int?j) {
i<<=j;
}
}?
☆6、在java語言中,有一個(gè)類是所有類和接口的父類,這個(gè)類的名稱是java.lang.Object(Object)_____。
7、構(gòu)造方法在__創(chuàng)建對(duì)象__時(shí)被調(diào)用。
?8、java運(yùn)行系統(tǒng)通過垃圾回收機(jī)制/GC____周期性的釋放無用對(duì)象所占用的內(nèi)存,以完成對(duì)象的消除。
?9、閱讀以下程序,輸出結(jié)果為_1.23___。
? class Q1{
public?static?void?main(String args[ ]){ ?
double?d=1.23; ?
Dec dec=new?Dec( ); ?
dec.decrement(d);
System.out.println(d); ?
}
? }
?class?Dec{ ?
?public?void?decrement(double?decMe){
?decMe = decMe -0.1;
?}
}
?10、閱讀程序
public class Test{
?int?x=12; public?void?method1(int?x){
?x+=x;
? ?System.out.println(x);
? }
}
如果有如下的代碼段:
??Test t=new Test();
? ??t.method1(5);
程序執(zhí)行到這個(gè)地方,代碼輸出結(jié)果是__10___?
11、定義在類中的變量為_成員變量___,它不需要進(jìn)行顯式的初始化,定義在方法中的變量為__局部變量__,它需要進(jìn)行顯式的初始化。
?12、面向?qū)ο蟮哪P椭?,最基本的概念是__類_和_對(duì)象__。
二、多選題
13、下面選項(xiàng)中,__AC_______是合法的構(gòu)造方法的重載?//無返回值??
public class ConstOver { ?
? public ConstOver (int x, int y, int z) { } ?
}
?A. ConstOver ( ) { }
?B. Protected int?ConstOver ( ) { }
?C. Private ConstOver (int z, int y, byte x) { }
?D. Public Object?ConstOver (int x, int y, int z) { }
?E. Public void?ConstOver (byte x, bytey, byte z) { }
14、下面說法中___AC___是對(duì)方法setVar()重載的方法。 ?
public class MethodOver {
public void setVar (int a, int b, float c) { } ?
}
?A. Private void setVar (int a, float c, int b) { }
?B. Protected void setVar (int a, int b, float c) { }
?C. Public int setVar (int a, float c, int b) {return a;}
?D. Public int setVar (int a, int b, float c) {return a;}
?E. Protected float setVar (int a, int b, float c) {return c;}
第4章(2)可變參數(shù),static與this練習(xí)題
一、填空題
1、在下面程序劃線處填入適當(dāng)?shù)膬?nèi)容。
?class MyClass{
??static int var=100;
____static
?public static___
int getVar() { return var;
}
}
2、以下程序段的輸出結(jié)果為int version______ 。
?class Cruncher{ void crunch( int i ){
System.out.println(“int version”);
??????????}
void crunch(String s){
?System.out.println(“String version”);
}
public static void main(String args[ ]){
Cruncher crun=new Cruncher ( );
char ch=’p’;
?crun.crunch(ch);
? }
}
3、以下程序段的輸出結(jié)果為 _Integer String____。
?class IntORString{ void iosM( int i ){
System.out.print(“Integer ”);
?}
?? ?void iosM(String s){
System.out.print(“String ”);
?}
?public static void main(String args[ ])
{
IntORString ios=new IntORString ( );
ios.iosM(‘a(chǎn)’);
ios.iosM(“1”);
?}
}
?4、如果有個(gè)類A,該類中有成員變量b和成員方法c(),則在創(chuàng)建該類得對(duì)象a ?后,對(duì)該對(duì)象的成員變量和成員方法的調(diào)用方式分別是a.b___,__a,c()__。
?5、以下代碼段創(chuàng)建了__2_個(gè)對(duì)象,聲明了_3____個(gè)變量。
? ?Thing item, stuff;
item = new Thing();
Thing entity = new Thing();
?
6、通過類MyClass中的不含參數(shù)的構(gòu)造函數(shù)象obj,可通過 ?以下語句實(shí)現(xiàn):_MyClass ?obj=new MyClass()________。
?7、下面____AD_____情況下,系統(tǒng)會(huì)為類A自動(dòng)產(chǎn)生構(gòu)造函數(shù)?
?A. class A { } ??B. class A { public A() {} }
?C. class A { public A(int x) {} } ?D. class Z {} class A extends Z { void A() {} }
8、請(qǐng)問構(gòu)造函數(shù)、成員變量初始化以及靜態(tài)成員變量初始化三者的先后順序是__靜態(tài)成員變量初始化,成員變量初始化,構(gòu)造函數(shù)_____。
?9、劃線處應(yīng)填的一句代碼:_?this (a) _______。
?public class Example{
?int x,y;
?public Example(int a){
?x = a;
?}
public Example(int a, int b){
_this (a) __________;//調(diào)用上面的一個(gè)參數(shù)的構(gòu)造方法
?y = b;
}
?}
10.關(guān)鍵字___final____表明一個(gè)對(duì)象或變量在初始化后不能被修改。
?11、類是對(duì)象的抽象,是屬性和操作的封裝體,其中屬性是事物靜態(tài)特征的抽象,在程序中用數(shù)據(jù)成員描述,操作是事物動(dòng)態(tài)特征的抽象,在程序中用成員方法描述。
?
第4章(3)包_訪問權(quán)限_基本數(shù)據(jù)類型封裝練習(xí)題
一、填空題
1、請(qǐng)?zhí)畛鲈趈ava.lang包中與下列基本數(shù)據(jù)類型相對(duì)應(yīng)的封裝類:
?float:java.lang.Float, char:_java.lang.Character________ , boolean:_java.lang.Boolean __________.
2、java中提供了四種訪問控制符,分別是:public__________,___protected________,_private________,____缺省(friendly)________
?3、以下程序段的輸出結(jié)果為 _true ,false_________。
public class EqualsMethod {
public static void main(String[] args) {
?Integer n1 = new Integer(47);
?Integer n2 = new Integer(47);
?System.out.print(n1= =n2);
?System.out.print(“,”);
?System.out.println(n1! =n2);
?}
}
4、在java中,將具有相同屬性的對(duì)象抽象成_類___。然后將它按照程序設(shè)計(jì)所需要的常用方法和接口封裝成__包_。
?5、創(chuàng)建一個(gè)名為 MyPackage 的包的語句是 package Mypackage ???,
該語句應(yīng)該放在程序的位置為:?放在程序的第一句 ?????????????????。
6、導(dǎo)入mypackage包中的所類的命令是 import mypackage.*;
二、單選題
1、不允許作為類及類成員的訪問控制符的是( C?)。
?????A. public ????B. private ?? C. static ?????????????D. protected
2、為AB類的一個(gè)無形式參數(shù)無返回值的方法method書寫方法頭,使得使用類名AB作為前綴就可以調(diào)用它,該方法頭的形式為( A ????)。
A. static void method( ) ???????????????????B. public void method( ) ????????C. final void method( ) ????????????????????D. abstract void method( )
?3、下列修飾符中與訪問控制無關(guān)的是( ??D???)
A.private ????B.Public ?C.protected ?D.final
4、void的含義:( ?A????)
A.方法沒有返回值 ??B.方法體為空 ?
C.沒有意義 ????????????D. 定義方法時(shí)必須使用
?5、關(guān)于對(duì)象成員占用內(nèi)存的說法哪個(gè)正確?( ??B???)
A.同一個(gè)類的對(duì)象共用同一段內(nèi)存
B、同一個(gè)類的對(duì)象使用不同的內(nèi)存段,但靜態(tài)成員共享相同的內(nèi)存空間
C.對(duì)象的方法不占用內(nèi)存
?D.以上都不對(duì)
6、定義一個(gè)類,必須使用的關(guān)鍵字是( ?B????)
? A、public ?B、class ?C、interface ?D、static?
第5章(1)繼承與多態(tài)練習(xí)題答案
一、選擇題
1、關(guān)于繼承的說法正確的是:( ?B ???)
?A、子類將繼承父類所有的屬性和方法。
?B、子類將繼承父類的非私有屬性和方法。
?C、子類只繼承父類public方法和屬性
D、子類只繼承父類的方法,而不繼承屬性
2、this和super:( ??B ??)
?A、都可以用在main()方法中
B、都是指一個(gè)內(nèi)存地址
?C、不能用在main()方法中
?D、意義相同
3、關(guān)于super的說法正確的是:( ??B ??)
?A、是指當(dāng)前對(duì)象的內(nèi)存地址
?B、是指當(dāng)前對(duì)象的父類對(duì)象的內(nèi)存地址
?C、是指當(dāng)前對(duì)象的父類
?D、可以用在main()方法中
4、覆蓋與重載的關(guān)系是 ( ???A?)
?A、覆蓋只有發(fā)生在父類與子類之間,而重載可以發(fā)生在同一個(gè)類中
?B.覆蓋方法可以不同名,而重載方法必須同名
?C.final修飾的方法可以被覆蓋,但不能被重載
D.覆蓋與重載是同一回事
?5、定義一個(gè)類,必須使用的關(guān)鍵字是( ?B ???)
A、public
? B、class
? ?C、interface
?? D、static
?6、如果有如下這樣一段代碼 ?
class A {
A() { } ?
} ?
class B extends A {
}
?請(qǐng)?jiān)谙旅骓?xiàng)中,正確的說法是:____________ B D
??A、類B的構(gòu)造函數(shù)的訪問權(quán)限是public
?B、類B的構(gòu)造函數(shù)沒有參數(shù)
?C、類B的構(gòu)造函數(shù)中包含this()方法的調(diào)用;
?D、類B的構(gòu)造函數(shù)中包含super()的調(diào)用
?7、下面(AD)情況下,系統(tǒng)會(huì)為類A自動(dòng)產(chǎn)生構(gòu)造函數(shù)?
?A. class A { }
?B.class A {
?public A() {} }
?C. class A {
?public A(int x) {} }
?D. class Z {}
?class A extends Z {
?void A() {} }
二、填空題
?1、java中提供了兩種用于多態(tài)的機(jī)制 重載,覆蓋.?
?2、this代表了當(dāng)前對(duì)象的引用,super表示的是當(dāng)前對(duì)象的父類?對(duì)象。
3、如果子類中覆蓋了父類中的同名方法,則在子類中調(diào)用父類中的同名方法是使用關(guān)鍵字super。
在一個(gè)類的內(nèi)部可以直接調(diào)用本類的對(duì)象,也可以使用關(guān)鍵字this來調(diào)用。
4.子類可以繼承父類的成員變量?和成員方法,但是不能繼承父類的構(gòu)造函數(shù)。
?5、下面代碼執(zhí)行后的結(jié)果是2
?class Super {
? public int i = 0;
? public Super(String text) { ?
i = 1;
?}
?}
?public class Sub extends Super {
public Sub(String text) { ??
? ?super(text); ?
? ?i = 2;
?} ?
public static void main(String args[]) { ?
?Sub sub = new Sub("Hello");
?System.out.println(sub.i);
}
}
6、如果在一個(gè)文件中有package,import以及class的定義,請(qǐng)給出三者在文件中的先后順序。package,import ,class .
7.父類的final方法可以被子類重寫嗎?答案:不可以
第5章(2)接口練習(xí)題答案
一、選擇題
1、定義一個(gè)接口必須使用的關(guān)鍵字是( ?C ???)
A、public ??B、class ?C、interface ?D、static??
2、抽象方法:( ??C ??)
A、可以有方法體
B、可以出現(xiàn)在非抽象類中
?C、是沒有方法體的方法
?D、抽象類中的方法都是抽象方法??
3、關(guān)于接口哪個(gè)正確?( A ???)
?A、實(shí)現(xiàn)一個(gè)接口必須實(shí)現(xiàn)接口的所有方法 ?B.一個(gè)類只能實(shí)現(xiàn)一個(gè)接口
C.接口間不能有繼承關(guān)系 ?D.接口和抽象類是同一回事
二、填空題
1、抽象方法是一種僅有方法頭,沒有具體方法體和操作實(shí)現(xiàn)的方法,該方法必須在抽象類之中定義。final方法是不能被當(dāng)前類的子類重新定義的方法。
2、在Java程序中,通過類的定義只能實(shí)現(xiàn)單重繼承,但通過接口的定義可以實(shí)現(xiàn)多重繼承關(guān)系。
3、接口由兩部分組成接口聲明以及接口體。 ?
4、接口可以看作是僅容納抽象法以及常量,而又不能直接生成對(duì)象的特殊類。??
5、用于將一個(gè)類修飾為最終類的關(guān)鍵字是final。用于聲明一個(gè)類為抽象類的關(guān)鍵字是abstract。??
6、abstract不能和final 共同修飾一個(gè)類。
7、 java中用extends 關(guān)鍵字指明繼承關(guān)系.用implements關(guān)鍵字指明對(duì)接口的實(shí)現(xiàn)。
8、如果Alpha類繼承Beta類,Alpha類被稱為子(基)類,Beta類被稱為父(超)類。 ?
9、子類可以繼承父類的成員變量 和成員方法,但是不能繼承父類的構(gòu)造函數(shù)。
?10、下面程序的輸出結(jié)果是:_?Art constructor , Drawing constructor , ?Cartoon constructor 。
class?Art {
Art() {
System.out.println("Art constructor");
}
}
class?Drawing extends?Art {
Drawing() {
super();
System.out.println("Drawing constructor");
}
}
class?Cartoon extends?Drawing {
Cartoon() {
super();
System.out.println("Cartoon constructor");
}
public?static?void?main(String[] args) {
Cartoon x?= new?Cartoon();
}
}
11、寫出以下程序的運(yùn)行結(jié)果__4 ____?
import?java.io.*;
public?class?ATest{
public?static?void?main(String args[]) {
SubClass sb = new?SubClass( );
System.out.println(sb.fun( ));
}
}
class?SuperClass{
int?a?=24 , b?=5 ;
}
class?SubClass extends?SuperClass{
int?fun( ) { return?a%b;}
}
三、多項(xiàng)選擇題 ?
1、與第2行等價(jià)的定義方式是_____。A B
1. public interface Foo {
2. int k = 4;
3. }
?A. final int k = 4;
?B. public int k = 4;
?C. abstract int k = 4;
?D. volatile int k = 4;
?E. protected int k = 4;
2、下面幾個(gè)方法中,_____可以放在接口(interface)中。A B?
?A.void methoda();
?B. public double methoda();
?C. public final double methoda();
?D. static void methoda(double d1);
?E. protected void methoda(double d1);
3、請(qǐng)問如下選項(xiàng)中,_____可以使得以上代碼編譯沒有錯(cuò)誤。E
?1. public abstract class Test {
?2. public abstract void methodA();
?3.
4.?public abstract void methodB()
???5. {
???6. System.out.println(“Hello”);
???7. }
8.?}
???A 給methodA加上方法體;
B 將第5-7行的代碼用“;”代替
C 將類Test前面的修飾符abstract去掉
?D 將方法methodA前面的修飾符abstract去掉
E 將方法methodB前面的修飾符abstract去掉
4、下面選項(xiàng)中,_____可以是合法的方法重寫的形式。BD?
?class BaseClass { ?
private float x = 0f; ?
protected float getVar() { return x; }
????????}
?class SubClass extends BaseClass {
? ? private float x = 0f;
?____________________ ?
}
??A. float getVar() { return x; }
B. public float getVar() { return x; }
C. public double getVar() { return x; }
D. protected float getVar() { return x; }
?E. public float getVar(float f) { return f; }
5、如果有如下這樣一段代碼
?class A { ??A() { } ?}
??class B extends A { ?}
?請(qǐng)?jiān)谙旅骓?xiàng)中,正確的說法是:B D?
??A.類B的構(gòu)造函數(shù)的訪問權(quán)限是public
??B、 類B的構(gòu)造函數(shù)沒有參數(shù)
??C、 類B的構(gòu)造函數(shù)中包含this()方法的調(diào)用;
??D、 類B的構(gòu)造函數(shù)中包含super()的調(diào)用
三、課后習(xí)題答案
3.什么類中可以有abstract方法?
?答案:abstract類。??
4.什么叫對(duì)象的上轉(zhuǎn)型對(duì)象?
答案:假設(shè)B類是A類子類或間接子類,當(dāng)我們用子類B創(chuàng)建一個(gè)對(duì)象,并把這個(gè)對(duì)象的引用放到A類的對(duì)象中時(shí),稱這個(gè)A類對(duì)象是子類對(duì)象的上轉(zhuǎn)型對(duì)象。父引用指向子對(duì)象。
5.什么叫接口的回調(diào)?
?答案:可以把實(shí)現(xiàn)某一接口的類創(chuàng)建的對(duì)象的引用賦給該接口聲明的接口變量中。那么該接口變量就可以調(diào)用被類實(shí)現(xiàn)的接口中的方法。
6.下列敘述哪些是正確的?AD ?
?A.?final類不可以有子類
?B. abstract類中只可以有abstract方法。
?C. abstract類中可以有非方法,但該方法不可以用final修飾。 D.?不可以同時(shí)用final和abstract修飾一個(gè)方法。
9.寫一個(gè)類A,該類創(chuàng)建的對(duì)象可以調(diào)用方法f輸出英文字母表,然后再編寫一個(gè)該類的子類B,要求子類B必須繼承A類的方法f(不允許重寫),子類創(chuàng)建的對(duì)象不僅可以調(diào)用方法f輸出英文字母表,而且可以調(diào)用子類新增的方法g輸出希臘字母表。
class A {
public final void f() {
char cStart = 'a', cEnd = 'z';
for (char c = cStart; c <= cEnd; c++) {
System.out.print(" " + c); ?
}
}
}
class B extends A {
public void g() {
char cStart = 'α', cEnd = 'ω';
for (char c = cStart; c <= cEnd; c++) {
System.out.print(" " + c);
}
}
}
public class Xiti9 {
public static void main(String args[]) {
B b = new B();
b.f();
b.g();
}
}
10.寫一個(gè)類,該類有一個(gè)方法public int f(int a,int b),該方法返回a和b的最大公約數(shù)。然后再編寫一個(gè)該類的子類,要求子類重寫方法f,而且重寫的方法將返回a和b的最小公倍數(shù);要求在重寫的方法體中首先調(diào)用被隱藏的方法返回a和b的最大公約數(shù)m,然后將乘積(a*b)/m返回;要求在應(yīng)用的程序的主類中分別使用父類和子類創(chuàng)建對(duì)象,并分別調(diào)用方法f計(jì)算兩個(gè)正整數(shù)的最大公約數(shù)和最小公倍數(shù)。
class A {
public int f(int a, int b) {
if (b < a) {
int temp = 0;
temp = a;
a = b;
b = temp;
}
int r = b % a; ??
while (r != 0) {
b = a;
a = r;
r = b % a;
} ?
return a;
}
}
class B extends A {
public int f(int a, int b) {
int division = super.f(a, b);
return (a * b) / division;
}
}
public class Xiti9 {
public static void main(String args[]) {
A a = new A();
B b = new B();
System.out.println("最大公約數(shù) :" + a.f(36, 24));
System.out.println("最小公倍數(shù) :" + b.f(36, 24));
}
}?
第6章內(nèi)部類與異常類練習(xí)題
一、填空題
1、Throwable類有兩個(gè)子類,分別是Error和Exception.
?2、所有異常的根類是Throwable類,throw關(guān)鍵字的作用是引發(fā)異常。?
3、try關(guān)鍵字負(fù)責(zé)定義處理異常的程序,再來由catch關(guān)鍵字來捕獲異常。
4、補(bǔ)足代碼;調(diào)用兩個(gè)函數(shù),要求用匿名內(nèi)部類
interface?Inter {
void?show(int?a,int?b);
void?func();
}
class?Demo {
public?static?void?main(String[] args) ?{ ?
Inter in=new?Inter(){
Void show(int a,int b){}
Void func(){}};
????in.show(4,5);
????in.func();
}
}
5.、下面程序的輸出結(jié)果是:BCD
class?Demo {
public?static?void?func() throws?Exception {
try{
throw?new?Exception();
???}
finally{
System.out.println("B");
}
}
public?static?void?main(String[] args){
try{
func();
System.out.println("A");
}
catch(Exception e){
System.out.println("C");
}
System.out.println("D");
}
}
6.在java中所有的異常類都繼承自java.lang.Throwable類,它有兩個(gè)直接子類,一個(gè)是Error類,另一個(gè)是Exception類。
7、Java語言中,可以用throw語句和throws語句拋出異常,其中throws語句的作用是用來改變程序的執(zhí)行流程,使程序跳到相應(yīng)的異常處理語句中執(zhí)行。throw語句把異常向上移交給調(diào)用這個(gè)方法的方法來處理。
8.下述代碼執(zhí)行后的結(jié)果是ACD
class?X?{
?public?static?void?main(String [] args) {
?try?{
?badMethod();
?System.out.print("A");
?}
?catch?(Exception ex) {
?System.out.print("B");
?}
?finally?{
?System.out.print("C");
?}
?System.out.print("D");
?}
?public?static?void?badMethod() {}
}
單選題:?
1、下面選項(xiàng)中,C不能用在throw語句中?
??A. Error ?B. RuntimeException
?C. Object ?D. Throwable ? ?E. Exception?
第9章String類練習(xí)題答案
一、填空
1、程序執(zhí)行后的顯示結(jié)果是abcdefabcDEF。?
public?class??Question {
?public?static?void?main (String args[]) {
?String s1 = "abc";
?String s2 = "def";
?String s3 = s1.concat(s2.toUpperCase());
?System.out.println(s1+s2+s3);
?}
}
2.
?String s1 = "ab";
?String s2 = "abcd";
?System.out.print("s1?"?+ (( s1== s2)? "=="?: "!=") + "?s2");
這個(gè)代碼段顯示的結(jié)果是s1 != s2?
3.下面程序段輸出結(jié)果的第一行是rtrme,第二行是r。
? ??String s="false()rtrme";
?String s2=s.substring(7);
?String s3=s2.replace('m','u');
?System.out.println(s2);
?System.out.println(s3.charAt(2));
?System.out.println(s3.toUpperCase());
第三行輸出結(jié)果為 RTRUE。
4.第5行的時(shí)候foo的值是baseball
String foo = "base";
foo.substring(0,3);
foo.concat("ket");//是返回 foo?+ "ket",但foo本身的值并不必變,
foo+="ball";//改成foo?= foo.concat("ket"),結(jié)果就是baseketball了System.out.println(foo);
5、如下這段代碼執(zhí)行后,字符串s的值是hellothere
?? ??String s="hello";
?s.concat("mrs");
?s.toUpperCase();
?s+="there";
?System.out.println(s);
6.下面這段程序執(zhí)行后,屏幕上顯示的是:true。
public class Exam{
public?static?void?main(String[] args){
char?char1[]={'t','e','s','t'};
char?char2[]={'t','e','s','t','1'};
String s1=new?String(char1);
String s2=new?String(char2,0,4);//提取字符數(shù)組char2[],從索引 0開始,提取個(gè)數(shù)為4個(gè)。
System.out.println(s1.equals(s2));//s1與s2中的實(shí)體(即內(nèi)容)是否相同
}
}
7、請(qǐng)問執(zhí)行完這段代碼后,顯示結(jié)果是abcd? ?
String a = "ABCD";
String b = a.toLowerCase(); //將字符串a(chǎn)的值小寫
?b.replace('a', 'd');//不影響字符串b,因?yàn)椴⑽促x值給b
?b.replace('b', 'c');//不影響字符串b,因?yàn)椴⑽促x值給b
?System.out.println(b);
8、Java中,用來獲取字符串長度的函數(shù)是length(),用來取字符串子串的函數(shù)是substring()。
9、以下代碼段將創(chuàng)建1個(gè)對(duì)象。
String s1="bc";
String s2="bc";
10、有下面這樣的代碼段,總共產(chǎn)生了2個(gè)對(duì)象。
String A, B, C ;
?A = new?String( "1234"?) ;
?B = A ;
?C = A + B ;
11、有如下一段代碼:
?Integer s = new Integer(9);
Integer t = new Integer(9);
?Long u = new Long(9);
則下面選項(xiàng)中返回值為true的是:CE。
?A. (s==u)
?B. (s==t)
?C. (s.equals(t))
?D. (s.equals(9)) //有疑問,但輸出結(jié)果也為true.
?E. (s.equals(new Integer(9))
三、完成課后習(xí)題
課后習(xí)題1,3,5,6,7
1.下列敘述哪些是正確的?ABD
A.String類是final類,不可以有子類
B.String類在java.lang包中
C.”abc”==”abc”的值是false
D.”abc”.equals(“abc”)的值是true
3.請(qǐng)說出E類中的輸出結(jié)果為13?abc夏日
public?class?E {
public?static?void?main(String args[]){
byte?d[]="abc夏日的海灘".getBytes();
System.out.println(d.length);
String s=new?String(d,0,7);
System.out.println(s);
}
}
5.請(qǐng)說出E類中的輸出結(jié)果為9javaHello
public?class?E {
public?static?void?main(String args[]){
String regex="\\djava\\w{1,}";
String str1="88javaookk";
String str2="9javaHello";
if(str1.matches(regex)){
System.out.println(str1);
}
if(str2.matches(regex)){
System.out.println(str2);
}
}
}
6.字符串調(diào)用public.String.toUpperCase()方法返回一個(gè)字符串,該字符串把當(dāng)前字符串中的小寫字母變成大寫字母;字符串調(diào)用public.String.toLowerCase()方法返回一個(gè)字符串,該字符串把當(dāng)前字符串中的大寫字母變成小寫字母;String類的public.String.concat(String str)方法返回一個(gè)字符串,該字符串是把調(diào)用該方法的字符串與參數(shù)指定的字符串相連接。編寫一個(gè)程序,練習(xí)使用這3個(gè)方法。
public?class?E {
public?static?void?main(String args[]){
???????String s1,s2,s3,t1="ABCDabcd";
???????System.out.println("字符串原來是這個(gè)樣子: "+t1);
???????s1=t1.toUpperCase();
???????System.out.println("字符串中的小寫字母變成大寫是這個(gè)樣子: "+s1);
???????s2=t1.toLowerCase();
???????System.out.println("字符串中的大寫字母變成小寫是這個(gè)樣子: "+s2);
???????s3=s1.concat(s2);
???????System.out.println("大寫字符串連接小寫字符串是這個(gè)樣子: "+s3);
}
}
7.String類的public char charAt(int index)方法可以得到當(dāng)前字符串index位置上的一個(gè)字符。編寫程序,使用該方法得到一個(gè)字符串中的第一個(gè)和最后一個(gè)字符。
public class Xiti7 {
public?static?void?main(String args[ ]){
String ?s ="中華人民共和國";
????char?a=s.charAt(0);
????char?b=s.charAt(6);
????System.out.println("第一個(gè)字符: ?"+a);
????System.out.println("最后一個(gè)字符: ?"+b);
?}
}
第9章(2)實(shí)用常用類練習(xí)題答案
一、填空題
1、如果method()方法會(huì)拋出NullPointerException,則該代碼段執(zhí)行結(jié)束后b的值是______?1345?
StringBuffer b=new StringBuffer();
?try{
?b.append("1");
method();
b.append("2");
}catch(Exception a{
b.append("3");
?}
finally{
?b.append("4");
?}
b.append("5");
?2、String s1=”JAVA”;String s2=”java”; 則s1.equals(s2)的返回值是_____,s1.equalsIgnoreCase(s2)的返回值是_____。false true?
3、StringBuffer s1=new StringBuffer();StringBuffer s2=new StringBuffer(“Hello”); 則s1.capacity()的返回值是_____。s2.capacity()的返回值是____.16 ?21?
4、程序執(zhí)行后的輸出結(jié)果是:_____?
JavacJava public static void main(String a[]) {
StringBuffer s=new StringBuffer("Java"); ?
String c=new String("Java");
Hello(s,c);
?System.out.println(s+c);
}
public static Hello(StringBuffer s, String c) {
s.append("c");
c.repalce('a','d')
}
5、下列代碼,執(zhí)行的時(shí)候會(huì)錯(cuò)的是______??4,6
1.StringBuffer sb = new StringBuffer("abc");
2.String s = new String("abc");
3.sb.append("def");
4.s.append("def");
5.sb.insert(1, "zzz");
6.s.concat(sb);
?7.s.trim();
二、單項(xiàng)選擇題
1、 _______選項(xiàng)插在第三行處,程序執(zhí)行后可以得到結(jié)果4247? B?
1.public class Cer{
2. public static void main(String[] args){
3. ___________________________________
?4. System.out.println(s);
5.?}
6.?}
A.?String s=”123456789”; s=(s-“123”).replace(1,3,,”24”)-“89”; B.StringBuffer s=new StringBuffer(“123456789”); s.delete(0,3).replace(1,3,”24”).delete(4,6);
C.StringBuffer s=new StringBuffer(“123456789”); s.subString(3,6).delete(1,3).insert(1,”24”);
?D.StringBuilder s=new StringBuilder(“123456789”); s.subString(3,6).delete(1,2).insert(1,”24”);
?2、應(yīng)用程序的main方法中有以下語句,則輸出的結(jié)果是 ( ?B ???)。 ?? String s = "xxxxxxxxxxxxxxx#123#456#zzzzz"; ?
? int n = s.indexOf("#"); ???
? int k = s.indexOf("#", n+1); ?
? String s2 = s.substring(n+1, k);
?? System.out.println(s2); ?
A) 123456 ????B) 123 ????C) xxxxxxxxxxxxxxx ?????D) zzzzz
3、下列程序段執(zhí)行后的結(jié)果是( ?A ???)。
?String s = new String("abcdefg");
for(inti=0;i<s.length();i+=2){ ?
???System.out.print(s.charAt(i));
} ??
A)?aceg ??B) ACEG ???C) abcdefg ???D) abcd ??
?4、應(yīng)用程序的main方法中有以下語句,則輸出的結(jié)果是( ???A ?)。 ????? String ?s1=new String("abc"); ???
?????String ?s2=new String("abc"); ???
??????boolean b1=s1.equals(s2); ??
??????boolean b2=(s1==s2); ???????????????????? System.out.print(b1+" ??"+b2); ?
??????????A)true ?false ???????B) false ?true ?????C) true ?true ??? ?D)false ?false ??
?5、應(yīng)用程序的main方法中有以下語句,則輸出的結(jié)果是 ( ?A ???)。 ??String s1="0.5", s2="12"; ????????
double x=Double.parseDouble(s1);
??int ???y=Integer.parseInt(s2);
???System.out.println(x+y);
A) 12.5 ????????B) 120.5 ???????C) 12 ??????????D) “12.5” ???????