Java基礎習題(附答案)
1. 以下方法fun的功能是求兩引數之積。(return a*b)
int fun ( int a, int b ) { __________________; }
2. 以下方法fun的功能是求兩引數之積。(return (float)a*b)
float fun ( int a, double b ) { __________________; }
3. 以下方法fun的功能是求兩引數的最大值。(return a>b?a:b)
int fun ( int a, int b ) { __________________; }
4. 以下方法m的功能是求兩引數之積的整數部分。
(return (int)(a*b))
int m ( float x, float y ) { __________________; }
5. 下面是使用者程式對 Applet 類中方法 paint( ) 的重新定義。
(void call)
public ___ paint(Graphics ____)
{ call.drawString("Hello,java!",10,20); }
6.下面方法的功能是判斷一個整數是否為偶數,將程式補充完整。(boolean true)
public ________ isEven(int a)
{ if(a%2==0)
return _____;
else
return false;
}
7.同一個類中多個方法具有相同的方法名,不同的_____________稱為方法的過載。(引數列表)
二.選擇題及答案
1.下列方法定義中,正確的是( D )。
A) int x( int a,b ) { return (a-b); }
B) double x( int a,int b) { int w; w=a-b; }
C) double x( a,b ) { return b; }
D) int x( int a,int b) { return a-b; }
2.下列方法定義中,正確的是( D )。
A) void x( int a,int b ); { return (a-b); }
B) x( int a,int b) { return a-b; }
C) double x { return b; }
D) int x( int a,int b) { return a+b; }
3. 下列方法定義中,不正確的是(D)。
A) float x( int a,int b ) { return (a-b); }
B) int x( int a,int b) { return a-b; }
C) int x( int a,int b ); { return a*b; }
D) int x(int a,int b) { return 1.2*(a+b); }
4. 下列方法定義中,正確的是( A )。
A) int x( ){ char ch='a'; return (int)ch; }
B) void x( ){ ...return true; }
C) int x( ){ ...return true; }
D) int x( int a, b){ return a+b; }
5. 列方法定義中,方法頭不正確的是(D )。
A)public int x( ){ ... }
B)public static int x( double y ){ ... }
C)void x( double d ) { ... }
D)public static x( double a ){ ... }
6.在某個類中存在一個方法:void getSort(int x),以下能作為這個方法的過載的宣告的是(C)。
A)public getSort(float x) B)int getSort(int y)
C)double getSort(int x,int y) D)void get(int x,int y)
7.在某個類中存在一個方法:void sort(int x),以下不能作為這個方法的過載的宣告的是(B)。
A)public float sort(float x) B)int sort(int y)
C)double sort(int x,int y) D)void sort(double y)
8. 為了區分類中過載的同名的不同方法,要求( A)。
A) 採用不同的形式引數列表 B) 返回值型別不同
C) 呼叫時用類名或物件名做字首 D) 引數名不同
三.問答題及答案
1. 方法可以沒有返回值嗎?可以有多個返回值嗎? (可以;不能)
2. 一個方法如果沒有返回值,方法頭定義中的返回值型別為何?(void)
3. 何為形式引數?何為實在引數?(略)
4. 一個方法或一個複合語句內定義的變數是否可以在方法外或複合語句外使用?這種變數稱為什麼變數?(不能;區域性變數)
5. 採用_______的程式設計原則,使程式結構清晰簡單,設計容易,有助於軟體可靠性的提高。(模組化)
6. 過載的方法可以通過它們的返回值型別的不同來區分嗎?(不能)
7. 編譯程式如何區分過載方法的呼叫?(根據引數列表不同來區分)
一、選擇題
1 定義類頭時,不可能用到的關鍵字是( B)。
A) class B)private C)extends D)public
2.下列類定義中,不正確的是(C)。
A) class x { .... }
B) class x extends y { .... }
C) static class x implements y1,y2 { .... }
D) public class x extends Applet { .... }
3.下列類頭定義中,錯誤的是( A)。
A)public x extends y {...}
B) public class x extends y {...}
C)class x extends y implements y1 {...}
D)class x {...}
.設 A為已定義的類名,下列宣告A類的物件a的語句中正確的是( D)。
A) float A a; B) public A a=A( );
C) A a=new int( ); D) static A a=new A( );
5.設 A為已定義的類名,下列宣告A類的物件a的語句中正確的是(A)。
A) public A a=new A( ); B) public A a=A( );
C) A a=new class( ); D) a A;
6.設 X 、Y 均為已定義的類名,下列宣告類X的物件x1的語句中正確的是(C)。
A) public X x1= new Y( ); B) X x1= X ( );
C) X x1=new X( ); D) int X x1;
7. 設X 、Y為已定義的類名,下列宣告X類的物件x1的語句中正確的是(A)。
A) static X x1; B) public X x1=new X(int 123);
C) Y x1; D) X x1= X( );
8.通過類MyClass中的不含引數的構造方法,生成該類的一個物件obj,可通過以下語句實現: _______________________________。
(MyClass obj=new MyClass( );)
9. 設i , j為類X中定義的int型變數名,下列X類的構造方法中不正確的是( A)。
A) void X(int k ){ i=k; } B) X(int k ){ i=k; }
C) X(int m, int n ){ i=m; j=n; } D) X( ){i=0;j=0; }
10. 有一個類A,以下為其構造方法的宣告,其中正確的是( A )。
A)public A(int x){...} B)static A(int x){...}
C)public a(int x){...} D)void A(int x){...}
11. 有一個類A,以下為其構造方法的宣告,其中正確的是( B )。
A)void A(int x){...} B)A(int x){...}
C)a(int x){...} D)void a(int x){...}
12. 設i、j、k為類X中定義的int型變數名,下列類X的構造方法中不正確的是( B )。
A) X( int m){ ... } B) void X( int m){ ... }
C) X( int m, int n){ ... } D) X( int h,int m,int n){ ... }
13. 設i , j為類X中定義的double型變數名,下列X類的構造方法中不正確的是(A )。
A) double X(double k ){ i=k; return i; } C) X( ){i=6;j=8; }
B) X(double m, double n ){ i=m; j=n; } D) X(double k ){ i=k; }
14. 設a , b為類MyClass中定義的int型變數名,下列MyClass類的構造方法中不正確的是(A)。
A) double MyClass(double k ){ a=k; return a; }
B) MyClass( ){a=6;b=8; }
C) MyClass (double m, double n ){ a=m; b=n; }
MyClass (double k ){ a=k; }
15 定義類頭時,不可能用到的關鍵字是(A)
。 A)protected B) class C)extends D)public
16.下列類頭定義中,錯誤的是(A)。
A)public TestClass extends y {...}
B) public class TestClass extends y {...}
C)class TestClass extends y implements y1 {...}
D) class TestClass {...}
17.設 B為已定義的類名,下列宣告B類的物件b的語句中正確的是(D)。
A) float B b; B) public B b=B( );
C) B b=new int( ); D) static B b=new B( );
18.設 ClassA為已定義的類名,下列宣告ClassA類的物件ca的語句中正確的是(A)。
A)public ClassA ca=new ClassA( ); B) public ClassA ca=ClassA( );
C) ClassA ca=new class( ); D) ca ClassA;
19.設 A 、B 均為已定義的類名,下列宣告類A的物件a1的語句中正確的是(C)。
A) public A a1= new B( ); B) A a1= A ( );
C) A a1=new A( ); D) int A a1;
20. 設A 、B為已定義的類名,下列宣告A類的物件a1的語句中正確的是(A)。
A) static A a1; B) public A a1=new A(int 123);
C) B a1; D) A a1= A( );
21.通過類A中的不含引數的構造方法,生成該類的一個物件a,可通過以下語句實現: _______________________________。
(A a=new A( );)
22. 設m , n為類A中定義的int型變數名,下列A類的構造方法中不正確的是( A)。
A) void A(int k ){ m=k; } B) A(int k ){ m=k; }
C) A(int m, int n ){m=i; n=j; } D) A( ){m=0;n=0; }
23. 有一個類Person,以下為其構造方法的宣告,其中正確的是( A )。
A)public Person (int x){...} B)static Person (int x){...}
C)public a(int x){...} D)void Person (int x){...}
24. 有一個類Student,以下為其構造方法的宣告,其中正確的是( B )。
A)void Student (int x){...} B) Student (int x){...}
C)s(int x){...} D)void s(int x){...}
25. 設i、j、k為類School中定義的int型變數名,下列類School的構造方法中不正確的是( B )。
A) School ( int m){ ... } B) void School ( int m){ ... }
C) School ( int m, int n){ ... } D) School ( int h,int m,int n){ ... }
二、填空題
2. 下面是一個類的定義,請將其補充完整。(Student String)
class _____
{
String name;
int age;
Student( _____ s, int i)
{
name=s;
age=i;
}
}
3.下面是一個類的定義,請將其補充完整。(myclass static)
class ____________ // 定義名為myclass的類
{
__________ int var=666;
static int getvar()
{ return var; }
}
4.下面程式的功能是通過呼叫方法max()求給定的三個數的最大值,
請將其補充完整。(max(i1,i2,i3) static)
public class Class1
{
public static void main( String args[] )
{
int i1=1234,i2=456,i3=-987;
int MaxValue;
MaxValue=____________;
System.out.println("三個數的最大值:"+MaxValue);
}
public ______ int max(int x,int y,int z)
{ int temp1,max_value;
temp1=x>y?x:y;
max_value=temp1>z?temp1:z;
return max_value;
}
}
5.下面是一個類的定義,請將其補充完整。(class static)
___________ A
{ String s;
_____ int a=666;
A(String s1) { s=s1; }
static int geta( ) { return a; }
}
9.下面程式的功能是通過呼叫方法max()求給定的二個整數的最大值,
請將其補充完整。(max(a1,a2) int)
public class Class1
{
public static void main( String args[] )
{
int a1=1234,a2=456;
int MaxValue;
MaxValue=____________;
System.out.println("二個數的最大值:"+MaxValue);
}
public static ______ max(int x,int y)
{ int max_value;
max_value =x>y?x:y;
return max_value;
}
}
1. 面向物件的軟體開發方法用什麼把資料和基於資料的操作封裝在一起?(類)
2. 在一個類定義中,用什麼描述物件的狀態? 用什麼描述物件的行為?(屬性;方法)
3. 什麼方法是一個特殊的方法,用於對物件進行初始化?
(構造方法)
4. 一個源程式檔案中,能有多於一個的 public 類嗎?(不能)
5. 構造方法的方法名可由程式設計人員任意命名嗎?
(不能,必須與類名同名)
6. 類的構造方法名必須和類名相同嗎?(必須)
7. 建構函式有返回值嗎?(沒有)
8. 建構函式可以過載嗎? (可以)
9. 如果一個類定義中沒有定義構造方法,該類有建構函式嗎?
(有,編譯器會自動生成一個預設的不帶引數的建構函式)
10. 如果一個類定義中已經定義了構造方法,java還會給它定義預設的構造方法嗎?(不會)
11. 類的訪問控制權有哪兩種?(public 和 預設的(即沒有訪問控制修飾符))
12. 用什麼修飾符修飾的方法稱為靜態方法? 用什麼修飾符修飾的屬性稱為靜態屬性?(static)
13. 靜態屬性和靜態方法僅屬於類的一個具體物件嗎?它屬於誰?
(不是;它是類的所有物件公有的)
14. static 變數能是 private 變數嗎?(可以)
15. 使用靜態成員都能以什麼做字首?(可以用類名或物件名做字首)
16. static方法中能有this引用嗎?(不能)
17. 非static方法中可以有this引用嗎?(可以)
18.static方法能處理非static成員嗎?(不能)
19.非static方法能處理static成員嗎?(能)
20. 類的私有屬性和私有方法能不能被其子類直接訪問? (不能)
一、 選擇題
1. Java語言的類間的繼承關係是( B )。
A) 多重的 B) 單重的 C) 執行緒的 D) 不能繼承
2. 以下關於Java語言繼承的說法正確的是( C )。 A)Java中的類可以有多個直接父類 B)抽象類不能有子類
C)Java中的介面支援多繼承 D)最終類可以作為其它類的父類
3. 現有兩個類A、B,以下描述中表示B繼承自A的是(D)。
A) class A extends B B) class B implements A
C) class A implements B D) class B extends A
4. 下列選項中,用於定義介面的關鍵字是( A)。
A)interface B) implements C) abstract D) class
5. 下列選項中,用於實現介面的關鍵字是( B)。
A)interface B) implements C) abstract D) class
6. Java語言的類間的繼承的關鍵字是( B )。
A) implements B) extends C) class D) public
7. 以下關於Java語言繼承的說法錯誤的是( A )。 A)Java中的類可以有多個直接父類 B)抽象類可以有子類
C)Java中的介面支援多繼承 D)最終類不可以作為其它類的父類
8. 現有兩個類M、N,以下描述中表示N繼承自M的是(D)。
A) class M extends N B) class N implements M
C) class M implements N D) class N extends M
9. 現有類A和介面B,以下描述中表示類A實現介面B的語句是(A)。
A) class A implements B B) class B implements A
C) class A extends B D) class B extends A
10. 下列選項中,定義抽象類的關鍵字是( C)。
A)interface B) implements C) abstract D) class
11. 下列選項中,定義最終類的關鍵字是(D)。
A)interface B) implements C) abstract D) final
12. 下列選項中,哪個是java語言所有類的父類(C)
A)String B) Vector C) Object D) KeyEvent
13. java語言中,用於判斷某個物件是否是某個類的例項的運算子是(A)
A)instanceof B) + C) isinstance D) &&
14. 下列選項中,表示資料或方法可以被同一包中的任何類或它的子類訪問,即使子類在不同的包中也可以的修飾符是(B)
A)public B) protected C) private D) final
15. 下列選項中,表示資料或方法只能被本類訪問的修飾符是(C)
A)public B) protected C) private D) final
16. 下列選項中,介面中方法的預設可見性修飾符是(A)
A)public B) protected C) private D) final
17. 下列選項中,表示終極方法的修飾符是:(B)
A)interface B) final C) abstract D) implements
18. 下列選項中,定義介面MyInterface的語句正確的是:(A)
A)interface MyInterface{ } B) implements MyInterface { }
C) class MyInterface{ } D) implements interface My{ }
19. 如果子類中的方法mymethod()覆蓋了父類中的方法mymethod(),假設父類方法頭部定義如下:void mymethod(int a),則子類方法的定義不合法的是:(C)
A) public void mymethod(int a) B) protected void mymethod(int a)
C) private void mymethod(int a) D) void mymethod(int a)
二、 填空題
1. 如果子類中的某個變數的變數名與它的父類中的某個變數完全一樣,則稱子類中的這個變數________了父類的同名變數。(隱藏)
2. 屬性的隱藏是指子類重新定義從父類繼承來的__________。(同名變數或屬性)
3. 如果子類中的某個方法的名字、返回值型別和________與它的父類中的某個方法完全一樣,則稱子類中的這個方法覆蓋了父類的同名方法。(引數列表)
4. Java 僅支援類間的____重繼承。(單重)
5. 抽象方法只有方法頭,沒有________。 (方法體)
6. Java 語言的介面是特殊的類,其中包含______常量和_______方法。(static(靜態) ; abstract(抽象))
7. 介面中所有屬性均為_________、_________和________的。
(public、static、final)
8. 如果介面中定義了一個方法methodA(),一個屬性attA,那麼一個類ClassA要實現這個介面的話,就必須實現其中的_______方法。(methodA())
9.一個類如果實現一個介面,那麼它就必須實現介面中定義的所有方法,否則該類就必須定義成________的。(抽象的)
10. 如果子類中的某個方法的名字、__________和引數列表與它的父類中的某個方法完全一樣,則稱子類中的這個方法覆蓋了父類的同名方法。(返回值型別)
11. Java 僅支援類間的單重繼承,介面可以彌補這個缺陷,支援_____重繼承(多重)
12. 在方法頭用abstract修飾符進行修飾的方法叫做________方法。(抽象)
13.Java語言中用於表示類間繼承的關鍵字是___________。(extends)
14. 介面中所有方法均為________和________的。
(public、abstract)
15. Java語言中,表示一個類不能再被繼承的關鍵字是________。(final)
16. Java語言中,表示一個類A繼承自父類B,並實現介面C的語句是_________________。
(class A extends B implements C)。
17. 如果子類中的方法compute()覆蓋了父類中的方法compute(),假設父類的compute()方法頭部有可見性修飾符public,則methodS()的可見性修飾符必須是__________。(public)