Sun 認證Java程式設計師考試內容涉及Java所有相關知識、程式設計概念及applet開發技巧。以下是小編整理的關於Java筆試題附答案,希望大家認真閱讀!
一、單項選擇題
是從()語言改進重新設計。
B.C++
cal
C
答案:B
2.下列語句哪一個正確()
A. Java程式經編譯後會產生machine code
程式經編譯後會產生byte code
程式經編譯後會產生DLL
D.以上都不正確
答案:B
3.下列說法正確的有()
s中的constructor不可省略
B. constructor必須與class同名,但方法不能與class同名
tructor在一個物件被new時執行
D.一個class只能定義一個constructor
答案:C
4.提供Java存取資料庫能力的包是()
g
答案:A
5.下列運算符合法的是()
A.&&
B.<>
D.:=
答案:A
6.執行如下程式程式碼
a=0;c=0;
do{
--c;
a=a-1;
}while(a>0);
後,C的值是()
A.0
B.1
C.-1
D.死迴圈
答案:C
7.下列哪一種敘述是正確的()
ract修飾符可修飾字段、方法和類
B.抽象方法的body部分必須用一對大括號{}包住
C.宣告抽象方法,大括號可有可無
D.宣告抽象方法不可寫出大括號
答案:D
8.下列語句正確的是()
A.形式引數可被視為localvariable
B.形式引數可被欄位修飾符修飾
C.形式引數為方法被呼叫時,真正被傳遞的引數
D.形式引數不可以是物件
答案:A
9.下列哪種說法是正確的()
A.例項方法可直接呼叫超類的例項方法
B.例項方法可直接呼叫超類的類方法
C.例項方法可直接呼叫其他類的例項方法
D.例項方法可直接呼叫本類的類方法
答案:D
二、多項選擇題
程式的種類有()
A.類(Class)
et
ication
let
2.下列說法正確的有()
A.環境變數可在編譯sourcecode時指定
B.在編譯程式時,所能指定的環境變數不包括class path
c一次可同時編譯數個Java原始檔
能指定編譯結果要置於哪個目錄(directory)
答案:BCD
3.下列識別符號不合法的有()
B.$Usdollars
C.1234
答案:ACD
4.下列說法錯誤的有()
A.陣列是一種物件
B.陣列屬於一種原生類
umber=[]={31,23,33,43,35,63}
D.陣列的大小可以任意改變
答案:BCD
5.不能用來修飾interface的有()
ate
ic
ected
ic
答案:ACD
6.下列正確的有()
A. call byvalue不會改變實際引數的數值
B. call by reference能改變實際引數的參考地址
C. call byreference不能改變實際引數的參考地址
D. call byreference能改變實際引數的內容
答案:ACD
7.下列說法錯誤的有()
A.在類方法中可用this來呼叫本類的類方法
B.在類方法中呼叫本類的類方法時可直接呼叫
C.在類方法中只能呼叫本類中的類方法
D.在類方法中絕對不能呼叫例項方法
答案:ACD
三、判斷題
程式中的起始類名稱必須與存放該類的檔名相同。()
答案:正確
ode是用16位來表示一個字的。()
答案:正確
3.原生類中的資料型別均可任意轉換。()
答案:錯誤
1.分別寫出BOOL,int,float,指標型別的變數a 與“零”的比較語句。
答案:
BOOL : if ( !a ) orif(a)
int : if ( a == 0)
float : const EXPRESSION EXP = 0.000001
if ( a < EXP && a >-EXP)
pointer : if ( a !=NULL) or if(a == NULL)
2.請說出const與#define 相比,有何優點?
答案:1) const常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查。而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換可能會產生意料不到的錯誤。
2) 有些整合化的除錯工具可以對const 常量進行除錯,但是不能對巨集常量進行除錯。
3.簡述陣列與指標的區別?
陣列要麼在靜態儲存區被建立(如全域性陣列),要麼在棧上被建立。指標可以隨時指向任意型別的記憶體塊。
(1)修改內容上的'差別
char a[]= “hello”;
a[0] = ‘X’;
char *p = “world”; // 注意p 指向常量字串
p[0] = ‘X’;// 編譯器不能發現該錯誤,執行時錯誤
(2) 用運算子sizeof 可以計算出陣列的容量(位元組數)。sizeof(p),p為指標得到的是一個指標變數的位元組數,而不是p 所指的記憶體容量。C++/C語言沒有辦法知道指標所指的記憶體容量,除非在申請記憶體時記住它。注意當陣列作為函式的引數進行傳遞時,該陣列自動退化為同類型的指標。
char a[] ="hello world";
char *p = a;
cout<< sizeof(a) << endl; // 12位元組
cout<< sizeof(p) << endl; // 4 位元組
計算陣列和指標的記憶體容量
voidFunc(char a[100])
{
cout<< sizeof(a) << endl; // 4 位元組而不是100位元組
}
4.類成員函式的過載、覆蓋和隱藏區別?
答案:
a.成員函式被過載的特徵:
(1)相同的範圍(在同一個類中);
(2)函式名字相同;
(3)引數不同;
(4)virtual 關鍵字可有可無。
b.覆蓋是指派生類函式覆蓋基類函式,特徵是:
(1)不同的範圍(分別位於派生類與基類);
(2)函式名字相同;
(3)引數相同;
(4)基類函式必須有virtual 關鍵字。
c.“隱藏”是指派生類的函式遮蔽了與其同名的基類函式,規則如下:
(1)如果派生類的函式與基類的函式同名,但是引數不同。此時,不論有無virtual關鍵字,基類的函式將被隱藏(注意別與過載混淆)。
(2)如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有virtual 關鍵字。此時,基類的函式被隱藏(注意別與覆蓋混淆)
5. There are two int variables: a and b, don’t use “if”, “? :”, “switch”orother judgement statements, find out the biggest one of the two numbers.
答案:( ( a + b ) + abs( a - b ) ) / 2