java基礎考試題及答案_第1頁
java基礎考試題及答案_第2頁
java基礎考試題及答案_第3頁
免費預覽已結束,剩余7頁可下載查看

下載本文檔

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

文檔簡介

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

2、以0x開頭,long型數以L(大小寫均可,一般使用大寫,因為小寫的l和數字1不易區分)。3. 下面的哪些程序片斷可能導致錯誤?(多選題)Strings="Gonewiththewind"Stringt="good"Stringk=s+t;Strings="Gonewiththewind"Stringt;t=s3+"one"Strings="Gonewiththewind"Stringstandard=s.toUpperCase();Strings="homedirectory"

3、;Stringt=s-"directory"答案B,D分析A:String類型可以直接使用+進行連接運算。B:String是一種Object,而不是簡單的字符數組,不能使用下標運算符取其值的某個元素,錯誤。C:toUpperCase()方法是String對象的一個方法,作用是將字符申的內容全部轉換為大寫并返回轉換后的結果(String類型)。D:String類型不能進行減(-)運算,錯誤。pointx處的哪些聲明是句法上合法的?(多選題)classPersonprivateinta;publicintchange(intm)returnm;publicclassTeache

4、rextendsPerson(publicintb;publicstaticvoidmain(Stringarg)(Personp=newPerson();Teachert=newTeacher();inti;A. /pointxi=m;i=b;i=p.a;i=p.change(30);i=t.b.答案D,E分析A:m沒有被聲明過,不能使用。B:雖然b是類Teacher的public成員變量,但是在靜態方法中不能使用類中的非靜態成員。C:a是類Person的private成員,在類外不能直接引用。D:change(intm)方法是public方法,并且返回一個int型值,可以通過類的實例變量p

5、引用并賦值給一個int型變量。E:b是類Teacher的public成員變量,且是int型,可以通過類的實例變量t弓I用并賦值給一個int型變量。4. 下面的代碼片斷(多選題):publicvoidcreate()(VectormyVect;myVect=newVector();下面的哪些陳述正確?A. 第二行的聲明不會為變量myVect分配內存空間。B. 第二行的聲明分配一個到Vector對象的引用的內存空間。C. 第二行語句創建一個Vector類對象。D. 第三行語句創建一個Vector類對象。E. 第三行語句為一個Vector類對象分配內存空間。答案A,D,E分析要為一個新對象分配空間必

6、須執行newXxx()調用,new調用執行以下的操作:1.為新對象分配空間并將其成員初始化為0或者null。2. 執行類體中的初始化。(例如在類中有一個成員聲明inta=10;在第一步后a=0,執行到第二步后a=10)執行構造函數。3. 變量被分配為一個到內存堆中的新對象的引用。A. 下面的哪些答案可以用以表示八進制值8?(單選題)0100x10080x8答案A分析八進制值以0開頭,以0x開頭的為十六進制值,八進制中不能出現數字8,最大只有7。classPerson(publicvoidprintValue(inti,intj)(/*/publicvoidprintValue(inti)(/*

7、.*/publicclassTeacherextendsPerson(publicvoidprintValue()(/*.*/publicvoidprintValue(inti)(/*.*/publicstaticvoidmain(Stringargs)Persont=newTeacher();t.printValue(10);第十行的聲明將調用哪些方法?(單選題)online2online3online6online7答案D分析變量t是一個Person對象,但是它是用Teacher實例化的,這個問題涉及到java的編譯時多態和運行時多態的問題,就編譯時多態來說,t實際上是一個Person類,

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

9、;-3x<=-3x<=0&x>-3答案D分析x>0時打印"first",x>-3&&x<=0時打印"second",x<=-3時打印"third"。這個題目沒有什么難的,只要理解if語句的語法就可以了。A. 下面的哪些賦值語句是不正確的(單選題)floatf=11.1;doubled=5.3E12;doubled=3.14159;doubled=3.14D.答案A題目:。浮點數的賦值是帶有小數點的數字缺省是double型的,如果在浮點數后面加f或者F則是float,后面

10、加d或者D則是double,科學計數法形式的浮點數也是double型的,而double的精度比float高,將一個高精度的double賦值給一個低精度的float時需要進行強制類型轉換,反之則不需要。給出下面的不完整的類代碼:(單選題)classPersonStringname,department;intage;publicPerson(Stringn)name=n;publicPerson(Stringn,inta)name=n;age=a;publicPerson(Stringn,Stringd,inta)/doingthesameastwoargumentsversionofconst

11、ructor/includingassignmentname=n,age=adepartment=d;下面的哪些表達式可以加到構造方法中的"doingthesameas."處?A. Person(n,a);this(Person(n,a);this(n,a);this(name,age).答案C分析:在同一個類的不同構造方法中調用該類的其它構造方法需要使用this()的形式,而且必須是在構造方法的第一行調用,這個和普通的方法重載調用的方式不同,普通的方法可以直接使用方法名加參數來調用,而且調用位置沒有限制,因此答案A是不行的,B的語法就是錯誤的,D的錯誤在于在父類型的構造函

12、數被調用前不能引用類的成員。構造方法是一個類對象實例化的起點(雖然嚴格來說首先執行的并不是構造方法的第一個語句,而是內存的分配),因此在構造方法中不能將成員作為參數引用。publicvoidtest()/(多選題)tryoneMethod();catch(ArrayIndexOutOfBoundsExceptione)catch(Exceptione)finally在oneMethod()方法運行正常的情況下將顯示什么?A. condition1condition2condition3finally答案ad分析:如果try塊中的語句在執行時發生異常,則執行從該處中斷而進入catch塊,根據異常

13、的類型進行匹配,最前面的優先進行匹配比較,只要該異常是catch中指定的異常的子類就匹配成功進而執行相應的catch中的內容,而finally塊中的內容無論是否發生異常都將被執行。給出下面的代碼:(單選題)publicclassTest(voidprintValue(intm)(while(-m>10)publicstaticvoidmain(Stringarg)(inti=10;Testt=newTest();t.printValue(i);輸出將是什么?A. Thevalueis8Thevalueis9Thevalueis10Thevalueis11答案:c此題考察的是dowhile

14、循環和-操作符的知識,do-while最少被執行一次,在執行完do中的內容后判斷while中的條件是否為true,如果為true的話就再執行do中的內容,然后再進行判斷,以此類推直到while的判斷為false時退出循環執行循環后面的內容,而一操作符的規則是在變量右邊的-將先進行運算,然后才是使變量的值減一,而在變量左邊的是先將變量的值減一再運算。給出下面的代碼:(單選題)publicvoidmodify()(inti,j,k;i=100;while(i>0)(j=i*2;k=k+1;i-;哪些行在編譯時可能產生錯誤。A. line4line6line7line8答案c這個問題在前面有關

15、變量的類型及其作用域的問題中討論過,局部變量在使用前必須顯式初始化,而代碼中的變量k在使用前沒有。給出下面的代碼片斷:(單選題)Stringstr=null;if(str!=null)&&(str.length()>10)(3)elseif(str!=null)&(str.length()<5)6)哪些行將導致錯誤?line1line2line5line8答案c此題需要將代碼仔細看活楚,查詢沒有邏輯錯誤,ifelse的使用沒有問題,也沒有拼寫錯誤,錯誤在于第5行的“與”操作符的使用,邏輯操作符(logicaloperator)的“與”應該是&&

16、;而&是位邏輯操作符(bitwiselogicaloperator)的“與”,使用的對象不一樣,邏輯操作符的“與”的左右操作數都應該是布爾型(logicalboolan)的值,而位邏輯操作符的左右操作數都是整型(integral)值。給出下面的代碼:(單選題)publicclassPersonstaticintarr=newint10;publicstaticvoidmain(Stringa)那個敘述是對的。A. 編譯時將發生錯誤。B. 編譯時正確但是運行時出錯。C. 輸出為0。D. 輸出為null答案cint型數組是類對象,它在類被加載時完成初始化,在前面題目中已經有敘述,由于是原始

17、數據類型int,其初始值為0。publicclassParent/(多選題)publicintaddValue(inta,intb)ints;s=a+b;returns;classChildextendsParent哪些方法可以加入類Child中?A. intaddValue(inta,intb)(/dosomething.publicvoidaddValue()(/dosomething.publicintaddValue(inta)(/dosomething.publicintaddValue(inta,intb)throwsMyException/dosomething.答案bc此題涉及

18、方法重載(overload),方法重寫(override)以及類派生時方法重寫的規則。方法重載的規則是:一、參數列表必須不同,個數的不同完全可以,如果個數相同則參數類型的不同不能引起歧意,例如int和long,float和double就不能作為唯一的類型不同;二、返回值可以不同,但是不能是重載時唯一的不同點(這點和c+中不同,c+中返回類型必須一致)。方法重寫發生在類繼承時,子類可以重寫一個父類中已有的方法,必須在返回類型和參數列表一樣時才能說是重寫,否則就是重載,java中方法重寫的一個重要而且容易被忽略的規則是重寫的方法的訪問權限不能比被重寫的方法的訪問權限低!重寫的另一個規則是重寫的方法

19、不能比被重寫的方法拋棄(throws)更多種類的異常,其拋棄的異常只能少,或者是其子類,不能以拋棄異常的個數來判斷種類,而應該是異常類層次結果上的種類。此題中答案a的錯誤就是重寫的訪問權限比被重寫的方法的低,而b,c都屆于重載,d的錯誤在于比被重寫的方法拋棄了更多種類的異常。A. 共有成員變量MAX_LENG曲一個int型值,變量的值保持常數值100。使用一個短聲明定義這個變量。(單選題)publicintMAX_LENGTH=100;finalintMAX_LENGTH=100;finalpublicintMAX_LENGTH=100;publicfinalintMAX_LENGTH=100

20、。答案dJava中共有變量使用public定義,常量變量使用final,另外注意的是修飾符的順序,一個最完整的修飾是publicstaticfinalintvarial_a=100;這個順序不能錯,這和c+中也是不同的。而答案c恰恰錯在修飾符的順序i。下面的那個java源文件代碼片斷是對的?(多選題)packagetestpackage;publicclassTest/dosomething.importjava.io.*;packagetestpackage;publicclassTest/dosomething.importjava.io.*;classPerson/dosomething

21、.publicclassTest/dosomething.importjava.io.*;importjava.awt.*;publicclassTest/dosomething.答案acdjava中的package語句必須是源文件中除去說明以外的第一條語句,導入包語句可以有幾個,但是必須位于package語句之后,其它類定義之前,一個源文件中可以有幾個類,但最多只能有一個是public的,如果有,則源文件的文件名必須和該類的類名相同。A. 下面的哪些聲明是合法的?(多選題)longl=4990;inti=4L;floatf=1.1;doubled=34.4;doublet=0.9F.答案ad

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

23、endsParent哪些方法可被加入類Child?A. publicintchange()intchang(inti)privateintchange()abstractintchang()答案ab這個題目的問題在第35題中有詳盡的敘述。需要注意的是答案。的內容,子類可以重寫父類的方法并將之聲明為抽象方法,但是這引發的問題是類必須聲明為抽象類,否則編譯不能通過,而且抽象方法不能有方法體,也就是方法聲明后面不能帶上那兩個大括號(),這些D都不能滿足。給出下面的代碼:(單選題)classParentprivateStringname;publicParent()publicclassChildex

24、tendsParentprivateStringdepartment;publicChild()publicStringgetValue()returnname;publicstaticvoidmain(Stringarg)Parentp=newParent();哪些行將導致錯誤?line3line6line7line8line10答案d第8行的getValue()試圖訪問父類的私有變量,錯誤,參看前面有關變量類型及其作用域的敘述變量"result"是一個boolean型的值,下面的哪些表達式是合法的?(多選題)result=true;if(result)/dosometh

25、ing.if(result!=0)/sosomething.result=1答案abJava的boolean不同于c或者c+中的布爾值,在java中boolean值就是boolean值,不能將其它類型的值當作boolean處理。類Teacher和Student都是類Person的子類(單選題)Personp;Teachert;Students;P,t和s都是非空值。A. if(tinstanceofPerson)s=(Student)t;這個if語句導致的結果是什么將構造一個Student對象。B. 表達式合法。C. 編譯時非法。D. 編譯時合法而在運行時可能非法。答案cinstanceof操

26、作符的作用是判斷一個變量是否是右操作數指出的類的一個對象,由于java語言的多態性使得可以用一個子類的實例賦值給一個父類的變量,而在一些情況下需要判斷變量到底是一個什么類型的對象,這時就可以使用instanceof了。當左操作數是右操作數指出的類的實例或者是子類的實例時都返回真,如果是將一個子類的實例賦值給一個父類的變量,用instanceof判斷該變量是否是子類的一個實例時也將返回真。此題中的if語句的判斷沒有問題,而且將返回真,但是后面的類型轉換是非法的,因為t是一個Teacher對象,它不能被強制轉換為一個Student對象,即使這兩個類有共同的父類。如果是將t轉換為一個Person對象

27、則可以,而且不需要強制轉換。這個錯誤在編譯時就可以發現,因此編譯不能通過。給出下面的類:(單選題)publicclassSamplelonglength;publicSample(longl)length=l;publicstaticvoidmain(Stringarg)Samples1,s2,s3;s1=newSample(21L);s2=newSample(21L);s3=s2;longm=21L;哪個表達式返回true。A. si=s2;s2=s3;m=si;sl.equals(m).答案b前面已經敘述過=旅作符和String的equals()方法的特點,另外=旅作符兩邊的操作數必須是同

28、一類型的(可以是父子類之間)才能編譯通過。給出下面有關List的表達式:(多選題)Listl=newList(6,true);哪些敘述是對的。A. 在沒有其它的約束的條件下該列表將有6行可見。B. 一行的最大字符數是6列表將允許用戶多選。C. 列表只能有一項被選中。答案acList組件的該構造方法的第一個參數的意思是它的初始顯式行數,如果該值為0則顯示4行,第二個參數是指定該組件是否可以多選,如果值為true則是可以多選,如果不指定則缺省是不能多選。給出下面的代碼:(單選題)classPerson(Stringname,department;publicvoidprintValue()(pub

29、licclassTeacherextendsPerson(intsalary;publicvoidprintValue()(/doingthesameasintheparentmethodprintValue()/includingprintthevalueofnameanddepartment.下面的哪些表達式可以加入printValue()方法的"doingthesameas."部分?A. printValue();this.printValue();person.printValue();super.printValue().答案d子類可以重寫父類的方法,在子類的對應

30、方法或其它方法中要調用被重寫的方法需要在該方法前面加上”super.”進行調用,如果調用的是沒有被重寫的方法,則不需要加上super.進行調用,而直接寫方法就可以。這里要指出的是java支持方法的遞歸調用,因此答案a和b在語法上是沒有錯誤的,但是不符合題目代碼中說明處的要求:即做和父類的方法中相同的事情??打印名字和部門,嚴格來說也可以選a和b。1) 給出下面的代碼片斷:(多選題)switch(m)(3)case2:5)m為哪些值將導致"default"輸出?A. 0123答案cd此題考察switch語句的用法,switch的判斷的條件必須是一個int型值,也可以是byte

31、、short、char型的值,case中需要注意的是一個case后面一般要接一個break語句才能結束判斷,否則將繼續執行其它case而不進行任何判斷,如果沒有任何值符合case列出的判斷,則執行default的語句,default是可選的,可以沒有,如果沒有default而乂沒有任何值匹配case中歹0出的值則switch不執行任何語句。2) 給出下面的不完整的方法:(多選題)1)success=connect();if(success=-1)thrownewTimedOutException();TimedOutException不是一個RuntimeException。下面的哪些聲明可以

32、被加入第一行完成此方法的聲明。?A. publicvoidmethod()publicvoidmethod()throwsExceptionpublicvoidmethod()throwsTimedOutExceptionpublicvoidmethod()throwTimedOutExceptionpublicthrowTimedOutExceptionvoidmethod()答案b、c如果程序在運行的過程中拋出異常,而這個異常乂不是RuntimeException或者Error,那么程序必須捕獲這個異常進行處理或者聲明拋棄(throws)該異常,捕獲異常可以使用trycatch()語句,而

33、拋棄異常在方法聲明是聲明,在方法的聲明后面加上throwsXxxxException,拋棄多個異常時在各異常問使用逗號(,)分隔,題目中的程序在運行時拋出的不是一個RuntimeException,所有必須捕獲或者拋棄,而程序乂沒有捕獲,所有應該在方法聲明中聲明拋棄。由于Exception是所有異常的父類,所有當然也可以代表RuntimeException了。下面的哪些答案可以正確表示一個十六進制數字10?(單選題)0xA0x160A016答案a十六進制數以0x開頭,以0開頭的是八進制數。十六進制表小中的a,b,c,d,e,f依次為10,11,12,13,14,15。給出下面的代碼:(單選題)

34、1)publicclassTest(2intm,n;3publicTest()(4publicTest(inta)(m=a;5publicstaticvoidmain(Stringarg)(6Testt1,t2;7intj,k;8j=0;k=0;9t1=newTest();10t2=newTest(j,k);1112在編譯時哪行將導致一個錯誤?line3line5line6line10答案d第10行的聲明調用一個帶兩個參數的Test的構造方法,而該類沒有這樣的構造方法。二、簡答題1. 讀如下程序,說出結果,并說明得出結果原因(10分)。publicclassBreakContinue(publ

35、icstaticvoidmain(Stringargs)(for(inti=0;i<10;i+)(if(i=3|i=5)(continue;for(intj=0;j<i;+j)(if(i+j>5)break;if(i=6)break;答案:1,2,3,4,52. 讀程序,說出j值,并說明得出結果原因(10分)。publicclassTest(privatestaticintj=0;publicstaticvoidmain(Stringargs)(methodA(0);privatestaticbooleanmethodB(intk)j+=k;returntrue;public

36、staticvoidmethodA(inti)booleanb;b=i<10|methodB(4);b=i<10|methodB(8);/此處短路method不進行計算答案:4三、編程題1.請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母(20分)。答案:1.程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。?importpublicclassEx26publicstaticvoidmain(Stringargs)/保存用戶輸入的第二個字母charweekSecond;/將Scanner類示例化為input

37、對象,用于接收用戶輸入Scannerinput=newScanner(System.in);/開始提示并接收用戶控制臺輸入System.out.print("請輸入星期值英文的第一個字母,我來幫您判斷是星期幾:”);Stringletter=input.next();/判斷用戶控制臺輸入字符串長度是否是一個字母if(letter.length()=1)/利用取第一個索引位的字符來實現讓Scanner接收char類型輸入charweekFirst=letter.charAt(0);switch(weekFirst)case'm':/當輸入小寫字母時,禾U用switch結

38、構特性執行下一個帶break語句的case分支,以實現忽略用戶控制臺輸入大小寫敏感的功能case'M':System.out.println("星期一(Monday)");break;case't':/當輸入小寫字母時,禾U用switch結構特性執行下一個帶break語句的case分支,以實現忽略用戶控制臺輸入大小寫敏感的功能case'T':System.out.print("由于星期二(Tuesday)與星期四(Thursday)均以字母T開頭,故需輸入第二個字母才能正確判斷:");letter=inpu

39、t.next();/判斷用戶控制臺輸入字符串長度是否是一個字母if(letter.length()=1)/利用取第一個索引位的字符來實現讓Scanner接收char類型輸入weekSecond=letter.charAt(0);/利用或(|)運算符來實現忽略用戶控制臺輸入大小寫敏感的功能if(weekSecond='U'|weekSecond='u')System.out.println("星期二(Tuesday)");break;/利用或(|)運算符來實現忽略用戶控制臺輸入大小寫敏感的功能elseif(weekSecond='H'|weekSecond='h')System.out.println(break;/

溫馨提示

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

評論

0/150

提交評論