java基礎考試題及答案_第1頁
java基礎考試題及答案_第2頁
java基礎考試題及答案_第3頁
java基礎考試題及答案_第4頁
java基礎考試題及答案_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、新員工考試一、 選擇題(共 30題,每題 2 分)1. 下面哪些是合法的標識符 ?(多選題)A. $personsB. TwoUsersC. *pointD. thisE. _endline答案 A,B,E分析 Java 的標識符可以以一個 Unicode 字符,下滑線( _),美元符( $)開始,后續(xù) 字符可以是前面的符號和數(shù)字, 沒有長度限制, 大小寫敏感, 不能是保留字( this 保留字)2. 哪些是將一個十六進制值賦值給一個 long 型變量 ?(單選題)A. long number = 345L;B. long number = 0345;C. long number = 0345

2、L;D. long number = 0x345L答案 D分析十六進制數(shù)以Ox開頭,long型數(shù)以L (大小寫均可,一般使用大寫,因為小寫的 l 和數(shù)字 1 不易區(qū)分)。3. 下面的哪些程序片斷可能導致錯誤 ? (多選題)A. String s = Gone with the wind;String t = good ;String k = s + t;B. String s = Gone with the wind;String t;t = s3 + one;C. String s = Gone with the wind;String standard = s.toUpperCase();

3、D. String s = home directory;String t = s - directory;答案 B,D分析A:String 類型可以直接使用 +進行連接運算。B:String 是一種 Object ,而不是簡單的字符數(shù)組,不能使用下標運算符取其值的某個 元素,錯誤。C:toUpperCase() 方法是 String 對象的一個方法,作用是將字符串的內(nèi)容全部轉換為 大寫并返回轉換后的結果( String 類型)。D:String 類型不能進行減( - )運算,錯誤。4. point x 處的哪些聲明是句法上合法的 ? (多選題)class Person private int

4、 a;public int change(int m) return m; public class Teacher extends Person public int b;public static void main(String arg) Person p = new Person(); Teacher t = new Teacher(); int i;/ point xA. i = m;B. i = b;C. i = p.a;D. i = p.change(30);E. i = t.b.答案 D,E分析A: m沒有被聲明過,不能使用。B:雖然b是類Teacher的public成員變量,

5、但是在靜態(tài)方法中不能使用類中的非 靜態(tài)成員。C: a 是類 Person 的 private 成員,在類外不能直接引用。D: change(int m) 方法是 public 方法,并且返回一個 int 型值,可以通過類的實 例變量 p 引用并賦值給一個 int 型變量。E: b 是類 Teacher 的 public 成員變量,且是 int 型,可以通過類的實例變量 t 引 用并賦值給一個 int 型變量。5. 下面的代碼片斷(多選題) :1) public void create() 2) Vector myVect;3) myVect = new Vector();4) 下面的哪些陳述正

6、確 ?A. 第二行的聲明不會為變量myVect分配內(nèi)存空間。B. 第二行的聲明分配一個到 Vector 對象的引用的內(nèi)存空間。C. 第二行語句創(chuàng)建一個 Vector 類對象。D. 第三行語句創(chuàng)建一個 Vector 類對象。E. 第三行語句為一個 Vector 類對象分配內(nèi)存空間。答案 A,D,E分析要為一個新對象分配空間必須執(zhí)行 new Xxx()調(diào)用,new調(diào)用執(zhí)行以下的操作: 1為新對象分配空間并將其成員初始化為 0或者 null 。2. 執(zhí)行類體中的初始化。(例如在類中有一個成員聲明int a=10;在第一步后a=0 , 執(zhí)行到第二步后 a=10)3. 執(zhí)行構造函數(shù)。4. 變量被分配為一

7、個到內(nèi)存堆中的新對象的引用。6. 下面的哪些答案可以用以表示八進制值 8? (單選題)A. 010B. 0x10C. 08D. 0x8答案 A分析八進制值以0開頭,以Ox開頭的為十六進制值,八進制中不能出現(xiàn)數(shù)字8,最大只有 7。1) class Person 2) public void prin tValue(i nt i, i nt j) /*/ 3) public void printValue(int i)/*.*/ 4) 5) public class Teacher extends Person 6) public void printValue() /*.*/ 7) public

8、 void printValue(int i) /*.*/8) public static void main(String args)9) Person t = new Teacher();10) t.printValue(10);11) 12) 第十行的聲明將調(diào)用哪些方法 ? (單選題)A. on line 2B. on line 3C. on line 6D. on line 7答案 D分析 變量 t 是一個 Person 對象,但是它是用 Teacher 實例化的,這個問題涉及 到 java 的編譯時多態(tài)和運行時多態(tài)的問題, 就編譯時多態(tài)來說, t 實際上是一個 Person 類, 這

9、涉及到類型的自動轉換 (將一個子類的實例賦值給一個父類的變量是不用進行強制類型轉 換,反之則需要進行強制類型轉換,而且被賦值的變量實際上應該是一個子類的對象),如果對 t 調(diào)用 了子類中新增的方法則造成編譯時錯誤編譯將不能通過,而在運行時,運行時系統(tǒng)將根據(jù) t 實際指向的類型調(diào)用對應的方法, 對于本例來說, t.print(10) 將調(diào)用 t 實際指向的 Teacher 類的對應方法。在 java 中,可以用一個子類的實例實例化父類的一個變量,而變量在編譯 時是一個父類實例,在運行時可能是一個子類實例。7. 給出下面的代碼:(單選題)x 的取值在什么范圍內(nèi)時將打印字符串 second 。A.

10、x 0B. x -3C. x = -3D. x -3答案 D分析 x0 時打印first , x-3&x=0 時打印second , x 10 )public static void main(String arg) int i=10;Test t= new Test();t.printValue(i);輸出將是什么?A. The value is 8B. The value is 9C. The value is 10D. The value is 11答案:c此題考察的是dowhile循環(huán)和-操作符的知識,dowhile最少被執(zhí)行一次,在 執(zhí)行完do中的內(nèi)容后判斷while中的條件是否為t

11、rue,如果為true的話就再執(zhí)行do中的 內(nèi)容,然后再進行判斷, 以此類推直到 while 的判斷為 false 時退出循環(huán)執(zhí)行循環(huán)后面的內(nèi) 容,而操作符的規(guī)則是在變量右邊的 - 將先進行運算,然后才是使變量的值減一,而在 變量左邊的是先將變量的值減一再運算。12. 給出下面的代碼:(單選題)1) public void modify() 2) int i, j, k;3) i = 100;4) while ( i 0 ) 5) j = i * 2;7) k = k + 1;8) i-;9) 10) 哪些行在編譯時可能產(chǎn)生錯誤。A. line 4B. line 6C. line 7D. li

12、ne 8答案 c這個問題在前面有關變量的類型及其作用域的問題中討論過,局部變量在使用前必 須顯式初始化,而代碼中的變量 k 在使用前沒有。13. 給出下面的代碼片斷:(單選題)1) String str = null;2) if (str != null) & (str.length() 10) 3)4) 5) else if (str != null) & (str.length() 5) 6)7) ntln(end); 哪些行將導致錯誤 ?A. line 1B. line 2C. line 5D. line 8答案 c此題需要將代碼仔細看清楚,查詢沒有邏輯錯誤,ifelse的使用沒有問題,

13、也 沒有拼寫錯誤,錯誤在于第 5 行的“與”操作符的使用,邏輯操作符( logical operator ) 的“與”應該是 &,而&是位邏輯操作符( bitwise logical operator )的“與”,使用的 對象不一樣,邏輯操作符的“與”的左右操作數(shù)都應該是布爾型( logical boolan )的值, 而位邏輯操作符的左右操作數(shù)都是整型( integral )值。14. 給出下面的代碼:(單選題)public class Personstatic int arr = new int10;public static void main(String a) 那個敘述是對的。A.

14、編譯時將發(fā)生錯誤。B. 編譯時正確但是運行時出錯。C. 輸出為 0。D. 輸出為 null答案 cint 型數(shù)組是類對象,它在類被加載時完成初始化,在前面題目中已經(jīng)有敘述,由 于是原始數(shù)據(jù)類型 int ,其初始值為 0。15. public class Parent / (多選題)public int addValue( int a, int b) int s;s = a+b;return s;class Child extends Parent 哪些方法可以加入類 Child 中?A. int addValue( int a, int b )/ do something.B. public

15、void addValue ()/ do something.C. public int addValue( int a )/ do something.D. public int addValue( int a, int b )throws MyException /do something.答案 bc此題涉及方法重載( overload ),方法重寫( override )以及類派生時方法重寫的 規(guī)則。方法重載的規(guī)則是:一、參數(shù)列表必須不同,個數(shù)的不同完全可以,如果個數(shù)相同則 參數(shù)類型的不同不能引起歧意,例如 int 和 long,float 和 double 就不能作為唯一的類型 不同;

16、二、返回值可以不同,但是不能是重載時唯一的不同點(這點和C+中不同,C+中返回類型必須一致)。方法重寫發(fā)生在類繼承時,子類可以重寫一個父類中已有的方法,必 須在返回類型和參數(shù)列表一樣時才能說是重寫,否則就是重載, java 中方法重寫的一個重 要而且容易被忽略的規(guī)則是重寫的方法的訪問權限不能比被重寫的方法的訪問權限低! 重寫 的另一個規(guī)則是重寫的方法不能比被重寫的方法拋棄 (throws) 更多種類的異常, 其拋棄的異 常只能少,或者是其子類,不能以拋棄異常的個數(shù)來判斷種類,而應該是異常類層次結果上 的種類。此題中答案a的錯誤就是重寫的訪問權限比被重寫的方法的低,而b,c都屬于重載,d 的錯誤

17、在于比被重寫的方法拋棄了更多種類的異常。16. 共有成員變量MAX_LENG是一個int型值,變量的值保持常數(shù)值100。使用一個短聲明 定義這個變量。(單選題)A. publiC int MAX_LENGTH=100;B. final int MAX_LENGTH=100;C. final publiC int MAX_LENGTH=100;D. publiC final int MAX_LENGTH=100 。答案 dJava 中共有變量使用 publiC 定義,常量變量使用 final ,另外注意的是修飾符的 順序,一個最完整的修飾是 publiC statiC final int var

18、ial_a=100;這個順序不能錯,這和C+中也是不同的。而答案c恰恰錯在修飾符的順序上。17. 下面的那個 java 源文件代碼片斷是對的 ? (多選題)A. paCkage testpaCkage;publiC Class Test/do something.B. import java.io.*;paCkage testpaCkage;publiC Class Test/ do something.C. import java.io.*;Class Person/ do something.publiC Class Test/ do something.D. import java.io

19、.*;import java.awt.*;publiC Class Test/ do something.答案 aCdjava 中的 paCkage 語句必須是源文件中除去說明以外的第一條語句, 導入包語句可 以有幾個,但是必須位于 paCkage 語句之后,其它類定義之前, 一個源文件中可以有幾個類, 但最多只能有一個是 publiC 的,如果有,則源文件的文件名必須和該類的類名相同。18. 下面的哪些聲明是合法的 ? (多選題)A. long l = 4990;B. int i = 4L;C. float f = 1.1;D. double d = 34.4;E. double t = 0

20、.9F.答案 ade 此題的考點是數(shù)字的表示法和基本數(shù)據(jù)類型的類型自動轉換,沒有小數(shù)點的數(shù)字被認 為是 int 型數(shù),帶有小數(shù)點的數(shù)被認為是 double 型的數(shù),其它的使用在數(shù)字后面加一個字 母表示數(shù)據(jù)類型,加 l 或者 L 是 long 型,加 d 或者 D 是 double ,加 f 或者 F 是 float ,可 以將低精度的數(shù)字賦值給高精度的變量,反之則需要進行強制類型轉換,例如將 int,short,byte 賦值給 long 型時不需要顯式的類型轉換,反之,將 long 型數(shù)賦值給 byte,short,int 型時需要強制轉換( int a=(int)123L; )。19. 如

21、下描述:(多選題)public class Parent int cha nge() class Child extends Parent 哪些方法可被加入類 Child?A. public int change()B. int chang(int i)C. private int change()D. abstract int chang()答案 ab這個題目的問題在第35題中有詳盡的敘述。需要注意的是答案D的內(nèi)容,子類 可以重寫父類的方法并將之聲明為抽象方法,但是這引發(fā)的問題是類必須聲明為抽象 類,否則編譯不能通過,而且抽象方法不能有方法體,也就是方法聲明后面不能帶上那 兩個大括號(),這

22、些D都不能滿足。20. 給出下面的代碼:(單選題)1) class Parent 2) private String name;3) public Parent()4) 5) public class Child extends Parent 6) private String department;7) publicChild() 8) publicString getValue() returnname; 9) publicstatic void main(String arg)10) Parent p = new Parent();11) 12) 哪些行將導致錯誤 ?A. line 3B

23、. line 6C. line 7D. line 8E. line 10答案 d第 8 行的 getValue() 試圖訪問父類的私有變量, 錯誤,參看前面有關變量類型及其 作用域的敘述21. 變量result是一個boolean型的值,下面的哪些表達式是合法的?(多選題)A. result = true;B. if ( result ) / do something. C. if ( result!= 0 ) / so something. D. result = 1 答案 abJava的boolean不同于 c或者 C+中的布爾值,在java 中boolean值就是 boolean 值,不

24、能將其它類型的值當作 boolean 處理。22. 類 Teacher 和 Student 都是類 Person 的子類(單選題)Person p;Teacher t;Student s;P, t 和 s 都是非空值。if(t instanceof Person) s = (Student)t; 這個 if 語句導致的結果是什么A. 將構造一個 Student 對象。B. 表達式合法。C. 編譯時非法。D. 編譯時合法而在運行時可能非法。答案 cinstanceof 操作符的作用是判斷一個變量是否是右操作數(shù)指出的類的一個對象, 由 于 java 語言的多態(tài)性使得可以用一個子類的實例賦值給一個父

25、類的變量,而在一些情況下 需要判斷變量到底是一個什么類型的對象,這時就可以使用 instanceof 了。當左操作數(shù)是 右操作數(shù)指出的類的實例或者是子類的實例時都返回真, 如果是將一個子類的實例賦值給一 個父類的變量,用 instanceof 判斷該變量是否是子類的一個實例時也將返回真。此題中的 if 語句的判斷沒有問題,而且將返回真,但是后面的類型轉換是非法的,因為t 是一個Teacher 對象,它不能被強制轉換為一個 Student 對象,即使這兩個類有共同的父類。如果 是將 t 轉換為一個 Person 對象則可以,而且不需要強制轉換。這個錯誤在編譯時就可以發(fā) 現(xiàn),因此編譯不能通過。23

26、. 給出下面的類:(單選題)public class Samplelong length;public Sample(long l) length = l; public static void main(String arg) Sample s1, s2, s3; s1 = new Sample(21L); s2 = new Sample(21L); s3 = s2; long m = 21L;哪個表達式返回 true 。A. s1 = s2;B. s2 = s3;C. m = s1;D. s1.equals(m).答案 b 前面已經(jīng)敘述過 =操作符和 String 的 equals() 方

27、法的特點,另外 =操作符兩邊的 操作數(shù)必須是同一類型的(可以是父子類之間)才能編譯通過。24. 給出下面有關 List 的表達式:(多選題)List l = new List(6,true);哪些敘述是對的。A. 在沒有其它的約束的條件下該列表將有 6 行可見。B. 一行的最大字符數(shù)是 6C. 列表將允許用戶多選。D. 列表只能有一項被選中。答案 acList 組件的該構造方法的第一個參數(shù)的意思是它的初始顯式行數(shù), 如果該值為 0 則 顯示 4 行,第二個參數(shù)是指定該組件是否可以多選,如果值為 true 則是可以多選,如果不 指定則缺省是不能多選。25. 給出下面的代碼:(單選題)class

28、Person String name,department;public void printValue()public class Teacher extends Person int salary;public void printValue()/ doing the same as in the parent method printValue()/ including print the value of name and department.下面的哪些表達式可以加入 printValue() 方法的 doing the same as.部分 ?A. printValue();B.

29、this.printValue();C. person.printValue();D. super.printValue().答案 d子類可以重寫父類的方法,在子類的對應方法或其它方法中要調(diào)用被重寫的方法需 要在該方法前面加上” super. ”進行調(diào)用,如果調(diào)用的是沒有被重寫的方法,則不需要加上 super. 進行調(diào)用,而直接寫方法就可以。這里要指出的是 java 支持方法的遞歸調(diào)用,因此 答案a和b在語法上是沒有錯誤的,但是不符合題目代碼中說明處的要求:即做和父類的方法中相同的事情??打印名字和部門,嚴格來說也可以選a和bo26. 給出下面的代碼片斷:(多選題)1) switch(m)2)

30、 3) k;4) case 2:5)5) m為哪些值將導致default輸出?A. 0B. 1C. 2D. 3答案 cd此題考察 switch 語句的用法, switch 的判斷的條件必須是一個 int 型值,也可以 是 byte 、short 、 char 型的值, case 中需要注意的是一個 case 后面一般要接一個 break 語 句才能結束判斷,否則將繼續(xù)執(zhí)行其它 case 而不進行任何判斷,如果沒有任何值符合 case 列出的判斷,則執(zhí)行 default 的語句, default 是可選的,可以沒有,如果沒有 default 而 又沒有任何值匹配 case 中列出的值則 swit

31、ch 不執(zhí)行任何語句。27. 給出下面的不完整的方法:(多選題)1)2) success = connect();3)if (success=-1) 4)throw new TimedOutException();5) 6)TimedOutException 不是一個 RuntimeException 。下面的哪些聲明可以被加入第一 行完成此方法的聲明。 ?A. public void method()B. public void method() throws ExceptionC. public void method() throws TimedOutExceptionD. public

32、 void method() throw TimedOutExceptionE. public throw TimedOutException void method()答案 b、c如果程序在運行的過程中拋出異常, 而這個異常又不是 RuntimeException 或者 Error , 那么程序必須捕獲這個異常進行處理或者聲明拋棄( throws )該異常,捕獲異??梢允褂?trycatch() 語句,而拋棄異常在方法聲明是聲明,在方法的聲明后面加上 throws XxxxException ,拋棄多個異常時在各異常間使用逗號( , )分隔,題目中的程序在運行時拋 出的不是一個 Runtim

33、eException ,所有必須捕獲或者拋棄,而程序又沒有捕獲,所有應該 在方法聲明中聲明拋棄。由于 Exception 是所有異常的父類,所有當然也可以代表 RuntimeException 了。28. 下面的哪些答案可以正確表示一個十六進制數(shù)字 10?(單選題)A. 0xAB. 0x16C. 0AD. 016答案 a十六進制數(shù)以 0x 開頭,以 0 開頭的是八進制數(shù)。 十六進制表示中的 a,b,c,d,e,f 依次為 10,11, 12,13,14, 15。29. 給出下面的代碼:(單選題)1) public class Test 2int m, n;3 public Test() 4pu

34、blic Test(int a) m=a; 5public static void main(String arg) 6Test t1,t2;7int j,k;8j=0; k=0;9t1=new Test();10t2=new Test(j,k);11 12 在編譯時哪行將導致一個錯誤 ?A. line 3B. line 5C. line 6D. line 10答案 d第 10 行的聲明調(diào)用一個帶兩個參數(shù)的 Test 的構造方法,而該類沒有這樣的構造方 法。二、 簡答題1. 讀如下程序,說出結果, 并說明得出結果原因 (10 分)。public class BreakContinue publ

35、ic static void main(String args) for (int i = 0; i 10; i+) if(i = 3 | i = 5) continue;for (int j = 0; j 5) break;if (i = 6) break;答案: 1,2,3,4,52. 讀程序,說出 j 值, 并說明得出結果原因 (10 分)。public class Test private static int j = 0;public static void main(String args) methodA(0);private static boolean methodB(int

36、 k)j += k;return true;public static void methodA(int i) boolean b;b = i 10 | methodB(4);b = i 10 | methodB(8); /此處短路 method 不進行計算答案:4三、 編程題1. 請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續(xù)判斷第 二個字母( 20 分)。答案: 1.程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if 語句判斷第二個字母。importpublic class Ex26 public static void main(String

37、args)/ 保存用戶輸入的第二個字母char weekSecond;/ 將 Scanner 類示例化為 input 對象,用于接收用戶輸入 Scanner input = new Scanner(System. in );/ 開始提示并接收用戶控制臺輸入System. out .print( 請輸入星期值英文的第一個字母,我來幫您判斷是星期幾: );String letter = input.next();/ 判斷用戶控制臺輸入字符串長度是否是一個字母if (letter.length() = 1)/ 利用取第一個索引位的字符來實現(xiàn)讓 Scanner 接收 char 類型輸入char wee

38、kFirst = letter.charAt(0);switch (weekFirst)case m :/ 當輸入小寫字母時,利用 制臺輸入大小寫敏感的功能 case M :switch 結構特性執(zhí)行下一個帶 break 語句的 case 分支,以實現(xiàn)忽略用戶控System. out .println( break ; 星期一 (Monday) );case t :/ 當輸入小寫字母時,利用switch 結構特性執(zhí)行下一個帶 break 語句的 case 分支,以實現(xiàn)忽略用戶控制臺輸入大小寫敏感的功能case TSystem. out .print(由于星期二仃uesday)與星期四(Thursday)均以字母T開頭,故需輸入第二個字母才能正確判斷: );letter = input.next();/ 判斷用戶控制臺輸入字符串長度是否是一個字母if (letter.length() = 1)/ 利用取第一個索引位的字符來實現(xiàn)讓 Scanner 接收 char 類型輸入weekSecond = letter.charAt(0);/ 利用或( | )運算符來實現(xiàn)忽略用戶控制臺輸入大小寫敏感的功能 if (weekSecond =U| weekSecond =u )out .println( 星期二 (Tuesday) );System. break ;/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論