1.使用Java語言編寫的源程序保存時的文件擴展名是( B )。
(A).class (B).java (C).cpp (D).txt
【注】java語言的源文件擴展名是.java,編譯后會生成.class文件,就是代碼文件。
2.設int a=-2,則表達式a>>>3的值為( D )。
(A)0 (B)3 (C)8 (D)很大的一個數
【注】測試的結果是536870911。涉及補碼:正數的補碼是自身,負數的補碼為取反+1。
3.設有數組的定義int[] a = new int[3],則下面對數組元素的引用錯誤的是( C )。
(A)a[0]; (B)a[a.length-1];
(C)a[3]; (D)int i=1; a[i];
4.在類的定義中可以有兩個同名函數,這種現象稱為函數( D )。
(A)封裝 (B)繼承
(C)覆蓋 (D)重載
【注】可以存在同名的方法,但是參數類型和參數不能相同,這樣的關系體現了Java中的多態(重載)。
5.在類的定義中構造函數的作用是( D )。
(A)保護成員變量 (B)讀取類的成員變量
(C)描述類的特征 (D)初始化成員變量
【注】構造函數通常用於在實例化對象時自動對內部數據成員初始化,設置初始值、分配內存空間等。
而析構函數則用於刪除對象時做收尾工作,比如釋放申請的空間等。
要創建一個對象,就得調用構造函數。
要銷毀一個對象,就會被迫的調用析構函數。
如果成員函數聲明稱static,不創建對象也能調用 靜態成員函數。
6.下面關鍵字中,哪一個不是用於異常處理語句( B )。
(A)try (B)break
(C)catch (D)finally
7.類與對象的關系是( A )。
(A)類是對象的抽象 (B)對象是類的抽象
(C)對象是類的子類 (D)類是對象的具體實例
【注】對象是對客觀事物的抽象,類是對對象的抽象。類是一種抽象的數據類型,其定義為:class 類名{ }
它們的關系是,對象是類的實例,類是對象的模板。
8.下面哪一個是Java中不合法的標識符(D)
(A)$persons (B)twoNum
(C)_myVar (D)*point
【注】Java的標識符必須以 '$','_',或者字母'a'~'z','A'~'Z'開頭,接下來可以是 '$','_',字母'a'~'z','A'~'Z',數字'0'~'9'的任意組成。標識符的長度沒有限制。
標識符中不能含有其他符號,當然也不允許插入空格。
9.為AB類的一個無形式參數無返回值的方法method書寫方法頭,使得使用類名AB作為前綴就可以調用它,該方法頭的形式為( A )。
(A)static void method( )
(B)public void method( )
(C)final void method( )
(D)abstract void method( )
【注】
A是靜態方法,可以直接用如下形式調用Test.method();
B是普通public函數,必須實例化類,Test test = new Test(); test.method();
C是final方法,不能被重載,用法同B
D是抽象方法,必須被子類繼承並重寫,然后調用的方式同B。
10.欲構造ArrayList類的一個實例,此類繼承了List接口,下列哪個方法是正確的(B)。
(A)ArrayList myList=new Object( )
(B)List myList=new ArrayList( )
(C)ArrayList myList=new List( )
(D)List myList=new List( )
【注】是B不是C。
這個稱之為面向接口編程,是java語言的一大優點。ArrayList雖然是一個具體的類,按照ArrayList myList=new ArrayList();的確可以生成一個myList對象,而且編譯也不會報錯。但是在實際開發中時不采用這樣的方式即實際開發時都是 接口名 xxx=new 接口某實現類()。這樣便於
1.便於程序規范化設計
2.便與團隊協同開發
3.便於轉換為組件
4.方便的代碼復用,無需了解技術細節。
11.Java源文件和編譯后的文件擴展名分別為( B)
(A).class和.java
(B).java和.class
(C).class和.class
(D).java和.java
【注】java語言的源文件擴展名是.java,編譯后會生成.class文件,就是代碼文件。
13.對於一個Java源文件,import, class定義以及package正確的順序是: (A)
(A) package,import,class
(B) class,import,package
(C) import,package,class
(D) package,class,import
14.下面哪個是非法的:(B)
(A) int I = 32; (B) float f = 45.0;
(C) double d = 45.0;
(D) char c = ‘u’; //符號錯
【注】應該為float f = 45.0f;
15.Java語言使用的字符碼集是(D)
(A) ASCII (B) BCD
(C) DCB (D) Unicode
【注】Java語言所使用的字符集是16位Unicode編碼。
16. 如果一個類的成員變量只能在所在類中使用,則該成員變量必須使用的修飾是(C)
(A) public (B) protected
(C) private (D) static
【注】
private同一個類可以訪問;
public 是全局都可以訪問,子類,同一個包,同一個類都可以訪問);
protected是同一類,同一個包,子類可以訪問;
無修飾符號是缺省類型--default,可以在同一個類,同一個包內訪問。
Static修飾狀態,以上前三個是修飾權限。
17.下面關於main方法說明正確的是(B)
(A) public main(String args[ ])
(B) public static void main(String args[ ])
(C) private static void main(String args[ ])
(D) void main()
【注】如下
18.哪個關鍵字可以對對象加互斥鎖?( B )
(A) transient (B) synchronized
(C) serialize (D) static
【注】synchronized 線程安全與同步。
19.關於抽象方法的說法正確的是( C )
(A)可以有方法體 (B) 可以出現在非抽象類中
(C) 是沒有方法體的方法
(D) 抽象類中的方法都是抽象方法
【注】抽象方法指一些只有方法聲明,而沒有具體方法體的方法。抽象方法一般存在於抽象類或接口中。所以正確的是C(沒有方法體的方法)。
20.java.io包的File類是(B)選擇D
(A)字符流類 (B) 字節流類
(C) 對象流類(無此流) (D) 非流類
21.Java application中的主類需包含main方法,以下哪項是main方法的正確形參?(B)
A、String args B、String args[]
C、Char arg D、StringBuffer args[]
22.以下代碼段執行后的輸出結果為( A )
int x=-3; int y=-10;
System.out.println(y%x);
A、 -1 B、2 C、1 D、3
【注】取模符號與被除數一致!求余數,也就是整除之后剩余值,其中-9被整除了,還余下-1.。
23.以下關於繼承的敘述正確的是( A )。
A、在Java中類只允許單一繼承
B、在Java中一個類只能實現一個接口(多個)
C、在Java中一個類不能同時繼承一個類和實現一個接口(可以)
D、在Java中接口只允許單一繼承(可多重繼承)
24. 若有定義:byte[] x={11,22,33,-66};
其中0≤k≤3,則對x數組元素錯誤的引用是( C )
A)x[5-3]
B)x[k]
C)x[k+5]
D)x[0]
26.以下哪個不是Java的原始數據類型( B )
A、int B、Boolean C、float D、char
【注】首字母大寫的說明是boolean的封裝類,繼承自Object。就像Integer對應int一類,同一個包,子類可以訪問。
27.在Java中,一個類可同時定義許多同名的方法,這些方法的形式參數的個數、類型或順序各不相同,傳回的值也可以不相同。這種面向對象程序特性稱為( C )
A) 隱藏
B) 重寫
C) 重載
D) Java不支持此特性
28. 以下有關構造方法的說法,正確的是:( A )
A. 一個類的構造方法可以有多個
B. 構造方法在類定義時被調用
C. 構造方法只能由對象中的其它方法調用。
D. 構造方法可以和類同名,也可以和類名不同
【注】構造方法在生成實例對象的時候被調用;構造方法不能被對象的其他方法調用;構造方法必須和類同名。
30.給出下面代碼,關於該程序以下哪個說法是正確的?( B錯 )應該選擇C。。靜態的方法只能調用靜態的成員。Math.abs()
public class Person{
static int arr[] = new int[5];
public static void main(String a[])
{
System.out.println(arr[0]); }
}
A、編譯時將產生錯誤
B、編譯時正確,運行時將產生錯誤
C、輸出零
D、輸出空
31、有以下方法的定義,請選擇該方法的返回類型( C 錯)。應該選擇D
ReturnType method(byte x, double y)
{
return (short)x/y*2;
}
A、byte B、short C、int D、double
32.下列類定義中哪些是合法的抽象類的定義?( C)
A.abstract Animal{abstract void growl();}
B.class abstract Animal{abstract void growl();}
C.abstract class Animal{abstract void growl();}
D.abstract class Animal{abstract void growl(){System.out.println(“growl”);};}
33.有以下程序片段,下列哪個選項不能插入到行1。( D )
1.
2.public class Interesting{
3.//do sth 此處內部類,就不能寫public了
4. }
A、import java.awt.*;
B、package mypackage;
C、class OtherClass{ }
D、public class MyClass{}一個類不能有兩個public
【注】不能有兩個public類,A是引用包,B是創建包,C是一個普通類。
34. 設有下面兩個賦值語句:
a = Integer.parseInt(“12”);
b = Integer.valueOf(“12”).intValue();
下述說法正確的是( D )。
A、a是整數類型變量,b是整數類對象。
B、a是整數類對象,b是整數類型變量。
C、a和b都是整數類對象並且值相等。
D、a和b都是整數類型變量並且值相等。
【注】Integer,是int類型的封裝。java中有一些基本類型,如boolean byte char short int long float double
這些類型是沒有封裝的裸類型,其余的所有類,都是繼承自Objcet類。裸類型游離於類的繼承樹之外,不過java為所有這些簡單類型都做了封裝,其中對int的封裝就是Integer
parseInte和intValue這兩個方法的返回值都是int。
a和b都是整數類型變量,而非integer對象。
37. 為了使包ch4在當前程序中可見,可以使用的語句是( A )。
A)import ch4.*; B)package ch4.*;
C)ch4 import; D)ch4 package;
38. 請問所有的異常類皆繼承哪一個類?( B )。
A)java.io.Exception
B)java.lang.Throwable
C)java.lang.Exception
D)java.lang.Error
39.進行Java基本的GUI設計需要用到的包是( C )。
A)java.io B)java.sql
C)java.awt D)java.rmi
40. 當點擊鼠標或者拖動鼠標時,觸發的事件是下列的哪一個?( D )
A)KeyEvent B)ActionEvent
C)ItemEvent D)MouseEvent
填空題:
1.數組x定義:String x[ ][ ]=new int[3][2]; x[0 ][0 ]=”abc”, x[0 ][1]=”12345”;
則 x.length 的值為__3__,x[0][1].length( ) 的值為__5__。
2、Java語言的變量由變量名、_修飾符_、變量屬性、_初值___組成。
3、當程序中需要拋出異常時,應該使用_catch_子句,當需要在方法中聲明可能拋出的異常類型,應該使用_ throws XXXException _子句。
6、Java源程序文件和字節碼文件的擴展名分別為_.java__和__.class__。
7、Java語言的類型檢查機制要求對於沒有返回值的方法,在其前面必須加__void____進行說明。
8、 在Java語言中,所有的對象均通過_____new____運算符分配內存,並對內存進行自動管理。
10、每個Java Application程序可以包括許多方法,但是必須有且只能有一個__main_方法,統一格式為_public static void main(String[]args){} _,它是程序執行的入口。
11、 若要在程序中定義一個公用的int型的類成員變量MAX_LENGTH,且該變量的值保持常數值1000,則定義該變量的語句是_ public final int MAX_LENGTH=100___。
12、 子類必須通過_ super _關鍵字調用父類有參數的構造函數。
13、 在Java語言中,所有的類都是類__Object __的子類。
14、 在Java程序中,通過類的定義只能實現單重繼承,但通過__接口 __ 的定義可以實現多重繼承關系。
15、 如果在Java程序中,需要使用java.util包中的所有類,則應該在程序開始處加上語句_ import java.util.* _。
16、 下列程序的運行結果是___01234_____
public class ex2 {
public static void main(String[] args)
{
for(int cnt=0;cnt<10;cnt++)
{
if(cnt==5)
break;
System.out.print(cnt);
}}}
17、 下列程序的運行結果是______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;
}
}
18、 分析下列程序,填上空白處的語句
class point //定義坐標類
{ int x,y;
test(int a,int b)
{x=a;y=b;}
}
class rec extends point __________//定義長方形類
{
int length,width;
rec(int a1,int b1,int l,int w)
{super(a1,b1);
length=l;width=w;
}}
class test
{public static void main(String args[])
{
___test r1=new__rec(0,0,10,20)______
//定義名為r1的對象同時初始化坐標為0,0,長度為10,寬度為20
r1.print();
}}
19、Java 源文件中最多只能有_____1________________個公共類,其它類的個數不限。
20、在 Java 中所有實現的多維數組,實際上是由一維數組構成的_數組的數組 。
21、設 x =15 ,則表達式 ( x + + )/4 的值是________3_____。
22、___抽象____方法是一種僅有方法頭,沒有具體方法體和操作實現的方法,該方法必須在抽象類之中定義。
23、 ___run()_______方法用於定義線程的執行體. ______start()_____方法用於啟動線程.
24、String str1=”abc”;
String str2=new String(“abc”);
System.out.println(str1==str2); 則程序運行后輸出結果為:____fault__(因為比較的是地址)_____
25、Java語言中,有一個類是所有類或接口的父類,這個類的名稱是 ____Object____。
26、當啟動 Applet 程序時,首先調用的方法是_______init()______。(初始化組件)
27、Java語言是一種完全的_____面向對象_____程序設計語言。
28. 如果一個Java Applet源程序文件只定義有一個類,該類的類名為MyApplet,則類MyApplet必須是____Applet_____類的子類並且存儲該源程序文件的文件名為Applet 。
29. 設 int x = 2 ,則表達式 (x++)/3 的值是_______0___________。
30. Java提供的訪問權限修飾符有:public、_private 、protected、友元。
31. Java中有兩種常用的字符串類,一個是String,另一個是_ ,StringBuffer _。
【注】String是每次使用都會生成一個對象,不管你用=還是new都會是新的對象。
StringBuffer就是為了補String的這個問題,它可以使用append,這樣初始化后就不會生成新的對象了,但是她是線程不安全的。
StringBuilder是線程安全的,所以它的速度要比StringBuffer慢點,其他的他們一樣。
32. Java實現多線程的方法有兩種,一種方法是通過創建___ Thread ____類的子類實現多線程,另一種方法是定義一個實現
____ runnable __接口的類。
33. Java不支持多繼承。但它允許一個類同時實現多個___接口___,這就相當於部分實現了多繼承。
34. Java源文件中,________import_____語句位於package語句之后、類定義之前。
35. _FileOutputStream__類是OutputStream類的子類,用來處理以文件作為數據輸出的數據流。