JAVA程序設(shè)計期末練習題_第1頁
JAVA程序設(shè)計期末練習題_第2頁
JAVA程序設(shè)計期末練習題_第3頁
JAVA程序設(shè)計期末練習題_第4頁
JAVA程序設(shè)計期末練習題_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、JAVA程序設(shè)計期末練習題一選擇最合適的答案填空(每題2分,共16分)( )1applet程序必須重寫方法。A.runB.appletC.main D.paint( )2定義類時冠以關(guān)鍵字 ,則表示不能用此類直接說明一個對象。A.abstractB.publicC.void D.null( )3Java通過_ 直接將目標代碼翻譯成機器指令執(zhí)行。A.編譯器B.瀏覽器C.虛擬機D.操作系統(tǒng)( )4接口中能定義的成員為_ 。A.公共的類常量B.保護的對象常量C.私有的抽象方法D.公共的非抽象方法( )5類B1是類Thread的子類,對象b1屬于類B1,則線程b1的線程體是_ 。A.類B1的run方法

2、B.類B1的start方法C.類Thread的run方法D.類Thread的start方法( )6類B2安裝了接口Runnable,對象b2屬于類B2,則線程b2的線程體是_ 。A.類B2的run方法B.類B2的start方法C.類Thread的run方法D.類Thread的start方法( )7J2EE中使用MVC方法來構(gòu)建系統(tǒng),不包括的部分為_ 。A.表現(xiàn)層(視圖)B.控制層C.虛擬機D.數(shù)據(jù)模型( )8_ 的通信機制可以實現(xiàn)在變量級上的信息共享。A.管道B.進程C.socketD.線程二簡要回答問題(14分)1用自己的觀點,闡述Java中流的概念。并舉例說明流的好處。2Socket是什么

3、?給出Java語言使用Socket的基本步驟。三指出下列程序錯誤并說明原因(10分)1、(4分)提示:兩個錯誤final class FirstClass private int a = 1;int b = 2; class SecondClass extends FirstClass public void method() System.out.println(a + b); 2、(6分)提示:三個錯誤public class TestClass int n;public static void main(string args)int i = 10;n = i*10;system.out

4、.println("n= " + n);四程序閱讀(共20分)1試分析下列代碼執(zhí)行的結(jié)果:class Aclass Aclass() System.out.println("Aclass"); public class Bclass extends Aclass Bclass() System.out.println("Bclass"); public static void main(String args) Aclass a=new Aclass(); Aclass a1=new Bclass(); 2.源程序user05.jav

5、a的內(nèi)容為:importjava.awt.*;importjava.applet.*;public class user05 extends Applet implements RunnableFontfont = new Font(“TimesRoman”,Font.PLAIN,24);Threadt;Stringstr;int speed;publicvoidinit()Strings = getParameter(“speed”);speed = ( s = = null ) ? 400:Integer.parseInt(s);s = getParameter(“str”);str= (

6、 s = = null ) ? “*”:s;public voidpaint(Graphics g)g.setFont(font);if ( Math.random() < 0.5 ) g.setColor(Color.red);elseg.setColor(getBackground();g.drawString(str,10,font.getSize()+10);publicvoidstart()t = new Thread(this);t.start();publicvoidstop()t.stop();publicvoidrun()while(true)tryThread.cur

7、rentThread().sleep(speed);catch(InterruptedExceptione ) System.exit(0);repaint();源程序user05.html的內(nèi)容為:<html><applet code=“user05.class” width=400 height=200><Param name=“str” value=“star”><Param name=“speed” value=“200”></applet></html>若命令行輸入為:appletviewer user05.ht

8、ml寫出程序功能、瀏覽器窗口輸出。答案:以紅色閃爍的star出現(xiàn)在第一行五子程序設(shè)計(共30分)說明:任意選做二題。多選者,第三題僅作為評分參考;1(10分)編寫application源程序cp.java,滿足:指定命令行輸入為: java cp b01.txt b01.bak通過命令行參數(shù)讀取文件名,將文件b01.txt的內(nèi)容復(fù)制到文件b01.bak中;將讀取文件的內(nèi)容輸出到屏幕上。2(10分) 編制一個applet和HTML文檔,applet從這個HTML文檔接收二個字符串:“2005年即將過去”、“2006年即將到來”,然后用兩個線程在同一個文本框(TextField)內(nèi)每隔十秒交替顯示

9、這二個字符串。3 (10分) 寫出一個方法判斷是否對一個空串求第10字符之后的子串,如果是則拋出自定義的異常,并寫出一個類,在適當?shù)牡胤秸{(diào)用這個方法,然后捕獲這個異常。六綜合分析題(選做一題10分)說明:任意選做一題。多選者,以卷面先列出的為判分依據(jù);1.從Java的安全性角度分析:1 為什么要拋棄象指針和釋放內(nèi)存等C+功能。2 為什么Java虛擬機提高了系統(tǒng)的安全性。 2.從Java的安全性角度分析:1 說明Java與C語言的對數(shù)組的理解上的差異。2 為什么Java虛擬機提高了程序的可以移植性。 3.給出一個J2EE的技術(shù)構(gòu)架圖。說明2-3個容器的主要功能。4.描述一個框架,用拋出機制實現(xiàn)兩

10、段程序的交替執(zhí)行。4.答案import java.io.*;class test public static void main(String args) boolean b = true;while(true)tryif(b )System.out.println("Section a");elseint temp = 1/0;catch(Exception e)System.out.println("Section b");finallyb = !b;1、下列程序編譯或運行的結(jié)果是。()D public static void main(String

11、 args) int a = 10; int b,c; if(a>50) b=9; c = b + a; System.out.println(c); A.10 B. 19 C.9 D.編譯錯誤2、下列語句片段中,four的值為 () D int three = 3; char one = 1; char four = (char)(three+one); A. 3 B. 1 C. 31 D. 4 1、下列哪個是JDK提供的編譯器:(C)A. java.exe B. C.javac.exe D.javaw.exe2、下列哪個是JAVA應(yīng)用程序主類中正確的main方法: (C)A. pub

12、lic void main (String args) B. static void main (String args)C. public void main (String args) D. public void Main (String args)3、關(guān)于Java中數(shù)據(jù)類型敘述正確的是:( B ) A、整型數(shù)據(jù)在不同平臺下長度不同 Bboolean類型數(shù)據(jù)只有2個值,true和falseC數(shù)組屬于簡單數(shù)據(jù)類型 DJava中的指針類型和C語言的一樣 4、設(shè) int x=1,float y=2,則表達式 x / y的值是:( D ) 結(jié)果是0.5A0 B1 C2 D以上都不是 5、以下語句

13、有語法錯的是:( A )Aint x=1;y=2;z=3 Bfor (int x=10,y=0;x>0;x+); Cwhile (x>5); Dfor(; ;); 6、關(guān)于類和對象的敘述正確的是:( A ) AJava的類分為兩大部分:系統(tǒng)定義的類和用戶自定義的類 B類的靜態(tài)屬性和全局變量的概念完全一樣,只是表達形式不同C類的成員至少有一個屬性和一個方法 D類是對象的實例化 7、以下有關(guān)構(gòu)造方法的說法,正確的是:( A )A一個類的構(gòu)造方法可以有多個 B構(gòu)造方法在類定義時被調(diào)用 C構(gòu)造方法只能由對象中的其它方法調(diào)用 D構(gòu)造方法可以和類同名,也可以和類名不同 8、以下有關(guān)類的繼承的敘

14、述中,正確的是:( D ) A子類能直接繼承父類所有的非私有屬性,也可通過接口繼承父類的私有屬性 B子類只能繼承父類的方法,不能繼承父類的屬性 C子類只能繼承父類的非私有屬性,不能繼承父類的方法 D子類不能繼承父類的私有屬性9、下面關(guān)于File類的描述,不正確的是:( C ) AFile對象主要用來獲取文件本身的一些信息,不涉及對文件的讀寫操作 B可用public String getName() 命令獲取文件的名字Cpublic String getAbsolutePath() 獲取文件的相對路徑。Dpublic long length() 獲取文件的長度(單位是字節(jié))10、下面關(guān)于File

15、類的描述,不正確的是:( C ) A可用public boolean canRead() 判斷文件是否是可讀的B可用public boolean canWrite() 判斷文件是否可被寫入C可用public boolean isHidden() 隱藏指定文件D可用public boolean exits() 判斷文件是否存在11、void 的含義:( C ) A方法體為空 B定義的方法沒有形參C定義的方法沒有返回值 D方法的返回值不能參加算術(shù)運算 12、關(guān)于Java中異常的敘述正確的是:( D )A異常是程序編寫過程中代碼的語法錯誤 B異常是程序編寫過程中代碼的邏輯錯誤 C異常出現(xiàn)后程序的運行

16、馬上中止 D異常是可以捕獲和處理的 13、所有的異常類皆繼承哪一個類?( C ) Ajava.io.Exception Bjava.lang.Throwable Cjava.lang.Exception Djava.lang.Error 14、下面關(guān)于內(nèi)部類和異常類的描述,不正確的是:(D)A. Java支持在一個類中聲明另一個類,這樣的類稱作內(nèi)部類。B. 和某類有關(guān)的匿名類就是該類的一個子類,該子類沒有明顯的用類聲明來定義,稱作匿名類。C. 和某接口有關(guān)的匿名類就是實現(xiàn)該接口的一個子類,該子類沒有明顯的用類聲明來定義,稱作匿名類。D. Java使用try-catch語句來處理異常,將可能出現(xiàn)

17、的異常操作放在trycatch語句的catch部分,將發(fā)生異常后的處理放在try部分。15、下面關(guān)于內(nèi)部類和異常類的描述,正確的是:(c)A. Java支持在一個類中聲明另一個類,這樣的類稱作外嵌類。B. 和某類有關(guān)的匿名類就是該類的一個父類,該父子類沒有明顯的用類聲明來定義,稱作匿名類。C. 和某接口有關(guān)的匿名類就是實現(xiàn)該接口的一個子類,該子類沒有明顯的用類聲明來定義,稱作匿名類。D. Java使用try-catch語句來處理異常,將可能出現(xiàn)的異常操作放在trycatch語句的catch部分,將發(fā)生異常后的處理放在try部分。16、在復(fù)選框中移動鼠標,然后單擊一選項,要捕獲所選項必需實現(xiàn)哪個

18、接口?(D) AActionListener BMouseListener CMouseMotionListern DItemListener 17、執(zhí)行以下代碼后,y的值為:(C)class Tom int x = 10,y; void f() int x = 5; y = x+x; /y得到的值是10,不是20。如果方法f 中沒有“int x=5;”,y的值將是20 A. 20 B15 C10 D518、執(zhí)行以下代碼后,y的值為:(B)class Tom int x = 10,y; void f() int x = 5; y = x+this.x; /y得到的值是15 A. 20 B15

19、C10 D519、下面UML圖中,屬于類實現(xiàn)接口關(guān)系的是: (b) Bf(int):intinterfaceAf(int):intBf(int):intinterfaceAf(int):intBf(int):intinterfaceAf(int):intBf(int):intinterfaceAf(int):intA. B. 接口 C. 繼承 D.20、下面UML圖中,屬于依賴關(guān)系接口的是: (c) Be:intAf(int):voidBe:intAf(int):voidA. B.關(guān)聯(lián)關(guān)系Be:intAf(int):voidBe:intAf(int):void C. 依賴關(guān)系 D.二、判斷題(

20、T為正確,F(xiàn)為錯誤。每題2分,共20分)1、標識符由字母、下劃線、美元符號和數(shù)字組成,長度不受限制。(T)2、標識符的第一個字符不能是數(shù)字字符。(T)3、一維數(shù)組通過索引符訪問自己的元素,需要注意的是索引從1開始。(F)4、數(shù)組屬于引用型變量,數(shù)組變量中存放著數(shù)組的首元素的地址。(T)5、+x(-x)表示在使用x之前,先使x的值增(減)1。(T)6、x+(x-)表示在使用x之后,使x的值增(減)1。(T)7、成員變量在整個類內(nèi)都有效,其有效性與它在類體中書寫的先后位置無關(guān)。(T)8、JAVA程序中,當一個方法不需要返回數(shù)據(jù)時,則不需要返回類型。(F)9、如果子類和父類在同一個包中,那么,子類自

21、然地繼承了其父類中不是private的成員變量作為自己的成員變量,并且也自然地繼承了父類中不是private的方法作為自己的方法,繼承的成員變量或方法的訪問權(quán)限保持不變。(T)10、子類中有一部分方法是從父類繼承的,這部分方法可以操作子類未繼承的變量 。(T)11、Java程序中,一個類可以實現(xiàn)多個接口。使用關(guān)鍵字interface來定義一個接口。(T)12、一個類通過使用關(guān)鍵字implements聲明自己實現(xiàn)一個或多個接口。(T)13、和某類有關(guān)的匿名類就是該類的一個子類,該子類沒有明顯地用類聲明來定義,所以稱作匿名類。(T)14、異常就是程序運行時可能出現(xiàn)一些錯誤,比如試圖打開一個根本不存

22、在的文件等,異常處理將會改變程序的控制流程,讓程序有機會對錯誤作出處理。(T)15、Java把String類聲明為final類,因此String類不可以有子類。(T)16、Object類有一個public String toString()方法,一個對象通過調(diào)用該方法可以獲得該對象的字符串表示。(T)17、輸入、輸出流提供一條通道程序,可以使用這條通道讀取源中的數(shù)據(jù)或把數(shù)據(jù)傳送到目的地。(T)18、java.io包為程序提供了相應(yīng)的輸入流或輸出流,這些輸入、輸出流絕大部分都是InputStream、OutputStream、Reader或Writer的子類。(T)19、JAVA允許一個類中編寫

23、若干個構(gòu)造方法,但必須保證他們的參數(shù)不同,即參數(shù)的個數(shù)不同,或者是參數(shù)的類型不同。(T)20、JAVA創(chuàng)建一個對象包括對象的聲明和為對象分配變量兩個步驟。(T)三、填空題(每空2分,共20分) 1、_類_是Java程序中基本的結(jié)構(gòu)單位。(類)2、String s1=“China”; int n=s1.length( ); n的值為_5_。(5)3、 Java源程序文件和字節(jié)碼文件的擴展名分別為_.java_和 .class _。(.java,.class)4、一般Java程序的類體由兩部分組成:一部分是_屬性_,另一部分是_方法。(屬性,方法)5、Java中類成員的限定詞有以下幾種:_ pri

24、vate _, public, _ protected _,缺省。其中,public的限定的范圍最大。(private, protected)6、JAVA中,this指_當前對象_,super指 _父對象_。(當前對象,父對象)2.1、以下方法fun的功能是求兩參數(shù)之積。(return a*b) int fun ( int a, int b ) _ return a*b _; 2.2、數(shù)組x定義如下:(3, 2)int x =new int32 則 x.length 的值為_3_, x0.length 的值為_2_。 3、 擴展名為.Java的文件是_源程序文件_,擴展名為.class的文件是

25、_字節(jié)碼文_。 (源程序文件,字節(jié)碼文件)4、當程序需要處理時間時,使用_ Date _類和_ Calendar _類。(Date, Calendar)5、String 類是_ final _類, 不可以有子類。(final)6、JAVA中,字類在其構(gòu)造方法中調(diào)用父類的構(gòu)造方法時需使用關(guān)鍵字_ super _,父類的方法不允許被子類重寫時需使用關(guān)鍵字_ final _。(super ,final)四、閱讀程序,并填空(每空2分,共16分) 1、public class ErrorO public static void main(String args ) int a= 10,b = 0,c

26、= 2017; try a = Integer.parseInt("5678"); b = Integer.parseInt("TEST3"); c = 7102; _ (NumberFormatException e) System.out.println("ERROR:"+e.getMessage(); System.out.println("a="+a+",b="+b+",c="+c); 輸出結(jié)果如下:ERROR:For input string: “TEST3”a=_

27、, b=_, c=_ 答案:catch , a=5678, b=0, c=20172、下面的代碼是實現(xiàn)與接口SpeakHello有關(guān)的匿名類,請?zhí)羁?。_(1)_ SpeakHello void speak();class HelloMachine public void turnOn(SpeakHello hello) hello.speak(); public class Noname public static void main(String args) HelloMachine machine = new _(2)_ (); machine.turnOn( new SpeakHello

28、() public void _(3)_() System.out._ ("hello,you are welcome!"); ); 輸出結(jié)果:hello,you are welcome! 答案:println等輸出命令, interface, HelloMachine, speak五、綜合題(第1題10分,第2題14分,共24分)1、使用一個數(shù)組放著幾個倉庫對某商品的庫存量。程序準備計算這幾個倉庫的庫存量總和。在調(diào)試程序時使用了斷言語句,如果發(fā)現(xiàn)庫存量有負數(shù),程序立刻結(jié)束執(zhí)行。(10分)import java.util.Scanner;public class ZongH

29、eTi1 public static void main (String args ) int score=-120,98,89,120,99; int sum=0; for(int number:score) assert number>0:"負數(shù)不能是庫存量" sum=sum+number; System.out.println("總庫存量:"+sum); 1.1、使用一個數(shù)組存放幾種商品的銷售數(shù)量,程序準備計算總商品的銷售數(shù)量。在調(diào)試程序時使用了斷言語句,如果發(fā)現(xiàn)銷售數(shù)量有負數(shù),程序立刻結(jié)束執(zhí)行。(10分)import java.util.S

30、canner;public class ZongHeTi1 public static void main (String args ) int score=-120,98,89,120,99; int sum=0; for(int number:score) assert number>0:"負數(shù)不能是銷售數(shù)量" sum=sum+number; System.out.println("總銷售數(shù)量:"+sum); 2、模板編程題(請按模板要求,在指定位置寫出【代碼】答案,否則無效。本題共14分)采用接口回調(diào)技術(shù),實現(xiàn)ShowMessage接口中的“

31、顯示商標”方法interface ShowMessage void 顯示商標(String s);class TV implements ShowMessage /定義類TV實現(xiàn)了接口ShowMessage public void 顯示商標(String s) System.out.println(s); /輸出顯示商標的參數(shù)內(nèi)容 class PC implements ShowMessage public void 顯示商標(String s) System.out.println(s); public class Example6_3 public static void main(Str

32、ing args) ShowMessage sm; /聲明接口變量 sm=new TV(); /接口變量中存放新建TV類對象的引用 sm.顯示商標("長城牌電視機"); /采用接口回調(diào)輸出“長城牌電視機” sm=new PC(); /接口變量中存放新建PC類對象的引用 sm.顯示商標("聯(lián)想奔月5008PC機"); /采用接口回調(diào)輸出“聯(lián)想奔月5008PC機” 1. 下面哪些是Thread類的方法()A start() B run() C exit() D getPriority()答案:ABD解析:看Java API docs吧:2. 下面關(guān)于java

33、.lang.Exception類的說法正確的是()A 繼承自Throwable B Serialable CD 不記得,反正不正確答案:A解析:Java異常的基類為java.lang.Throwable,java.lang.Error和java.lang.Exception繼承 Throwable,RuntimeException和其它的Exception等繼承Exception,具體的RuntimeException繼承RuntimeException。 擴展:錯誤和異常的區(qū)別(Error vs Exception) 1) java.lang.Error: Throwable的子類,用于標記

34、嚴重錯誤。合理的應(yīng)用程序不應(yīng)該去try/catch這種錯誤。絕大多數(shù)的錯誤都是非正常的,就根本不該出現(xiàn)的。java.lang.Exception: Throwable的子類,用于指示一種合理的程序想去catch的條件。即它僅僅是一種程序運行條件,而非嚴重錯誤,并且鼓勵用戶程序去catch它。2) Error和RuntimeException 及其子類都是未檢查的異常(unchecked exceptions),而所有其他的Exception類都是檢查了的異常(checked exceptions).checked exceptions: 通常是從一個可以恢復(fù)的程序中拋出來的,并且最好能夠從這種

35、異常中使用程序恢復(fù)。比如FileNotFoundException, ParseException等。檢查了的異常發(fā)生在編譯階段,必須要使用trycatch(或者throws)否則編譯不通過。unchecked exceptions: 通常是如果一切正常的話本不該發(fā)生的異常,但是的確發(fā)生了。發(fā)生在運行期,具有不確定性,主要是由于程序的邏輯問題所引起的。比如ArrayIndexOutOfBoundException, ClassCastException等。從語言本身的角度講,程序不該去catch這類異常,雖然能夠從諸如RuntimeException這樣的異常中catch并恢復(fù),但是并不鼓勵終

36、端程序員這么做,因為完全沒要必要。因為這類錯誤本身就是bug,應(yīng)該被修復(fù),出現(xiàn)此類錯誤時程序就應(yīng)該立即停止執(zhí)行。 因此,面對Errors和unchecked exceptions應(yīng)該讓程序自動終止執(zhí)行,程序員不該做諸如try/catch這樣的事情,而是應(yīng)該查明原因,修改代碼邏輯。RuntimeException:RuntimeException體系包括錯誤的類型轉(zhuǎn)換、數(shù)組越界訪問和試圖訪問空指針等等。處理RuntimeException的原則是:如果出現(xiàn) RuntimeException,那么一定是程序員的錯誤。例如,可以通過檢查數(shù)組下標和數(shù)組邊界來避免數(shù)組越界訪問異常。其他(IOExcept

37、ion等等)checked異常一般是外部錯誤,例如試圖從文件尾后讀取數(shù)據(jù)等,這并不是程序本身的錯誤,而是在應(yīng)用環(huán)境中出現(xiàn)的外部錯誤。 3. 下面程序的運行結(jié)果是()String str1 = "hello"String str2 = "he" + new String("llo");System.err.println(str1 = str2);答案:false解析:因為str2中的llo是新申請的內(nèi)存塊,而=判斷的是對象的地址而非值,所以不一樣。如果是String str2 = str1,那么就是true了。4. 下列說法正確的有(

38、)A class中的constructor不可省略B constructor必須與class同名,但方法不能與class同名C constructor在一個對象被new時執(zhí)行D一個class只能定義一個constructor答案:C 解析:這里可能會有誤區(qū),其實普通的類方法是可以和類名同名的,和構(gòu)造方法唯一的區(qū)分就是,構(gòu)造方法沒有返回值。5. 具體選項不記得,但用到的知識如下:String a = new String10;則:a0a9 = nulla.length = 10如果是int a = new int10;則:a0a9 = 0a.length = 106. 下面程序的運行結(jié)果:()

39、public static void main(String args) Thread t = new Thread() public void run() pong(); ; t.run(); System.out.print("ping"); static void pong() System.out.print("pong"); A pingpong B pongping C pingpong和pongping都有可能 D 都不輸出答案:B解析:這里考的是Thread類中start()和run()方法的區(qū)別了。start()用來啟動一個線程,當調(diào)用

40、start方法后,系統(tǒng)才會開啟一個新的線程,進而調(diào)用run()方法來執(zhí)行任務(wù),而單獨的調(diào)用run()就跟調(diào)用普通方法是一樣的,已經(jīng)失去線程的特性了。因此在啟動一個線程的時候一定要使用start()而不是run()。7. 下列屬于關(guān)系型數(shù)據(jù)庫的是()A. Oracle B MySql C IMS D MongoDB答案:AB解答:IMS(Information Management System )數(shù)據(jù)庫是IBM公司開發(fā)的兩種數(shù)據(jù)庫類型之一; 一種是關(guān)系數(shù)據(jù)庫,典型代表產(chǎn)品:DB2;另一種則是層次數(shù)據(jù)庫,代表產(chǎn)品:IMS層次數(shù)據(jù)庫。非關(guān)系型數(shù)據(jù)庫有MongoDB、memcachedb、Redis

41、等。8. GC線程是否為守護線程?()答案:是解析:線程分為守護線程和非守護線程(即用戶線程)。只要當前JVM實例中尚存在任何一個非守護線程沒有結(jié)束,守護線程就全部工作;只有當最后一個非守護線程結(jié)束時,守護線程隨著JVM一同結(jié)束工作。守護線程最典型的應(yīng)用就是 GC (垃圾回收器)9. volatile關(guān)鍵字是否能保證線程安全?()答案:不能解析:volatile關(guān)鍵字用在多線程同步中,可保證讀取的可見性,JVM只是保證從主內(nèi)存加載到線程工作內(nèi)存的值是最新的讀取值,而非cache中。但多個線程對volatile的寫操作,無法保證線程安全。例如假如線程1,線程2 在進行read,load 操作中,

42、發(fā)現(xiàn)主內(nèi)存中count的值都是5,那么都會加載這個最新的值,在線程1堆count進行修改之后,會write到主內(nèi)存中,主內(nèi)存中的count變量就會變?yōu)?;線程2由于已經(jīng)進行read,load操作,在進行運算之后,也會更新主內(nèi)存count的變量值為6;導(dǎo)致兩個線程及時用volatile關(guān)鍵字修改之后,還是會存在并發(fā)的情況。10. 下列說法正確的是()A LinkedList繼承自ListB AbstractSet繼承自SetC HashSet繼承自AbstractSetD WeakMap繼承自HashMap答案:AC解析:下面是一張下載的Java中的集合類型的繼承關(guān)系圖,一目了然。11. 存在使

43、i + 1 < i的數(shù)嗎()答案:存在解析:如果i為int型,那么當i為int能表示的最大整數(shù)時,i+1就溢出變成負數(shù)了,此時不就<i了嗎。擴展:存在使i > j | i <= j不成立的數(shù)嗎()答案:存在解析:比如Double.NaN或Float.NaN,感謝BuilderQiu網(wǎng)友指出。12. 0.6332的數(shù)據(jù)類型是()A float B double C Float D Double答案:B解析:默認為double型,如果為float型需要加上f顯示說明,即0.6332f13. 下面哪個流類屬于面向字符的輸入流( )A BufferedWriter B File

44、InputStream C ObjectInputStream D InputStreamReader答案:D解析:Java的IO操作中有面向字節(jié)(Byte)和面向字符(Character)兩種方式。面向字節(jié)的操作為以8位為單位對二進制的數(shù)據(jù)進行操作,對數(shù)據(jù)不進行轉(zhuǎn)換,這些類都是InputStream和OutputStream的子類。面向字符的操作為以字符為單位對數(shù)據(jù)進行操作,在讀的時候?qū)⒍M制數(shù)據(jù)轉(zhuǎn)為字符,在寫的時候?qū)⒆址D(zhuǎn)為二進制數(shù)據(jù),這些類都是Reader和Writer的子類??偨Y(jié):以InputStream(輸入)/OutputStream(輸出)為后綴的是字節(jié)流;以Reader(輸入)

45、/Writer(輸出)為后綴的是字符流。擴展:Java流類圖結(jié)構(gòu),一目了然,解決大部分選擇題:14. Java接口的修飾符可以為()A private B protected C final D abstract答案:CD解析:接口很重要,為了說明情況,這里稍微啰嗦點:(1)接口用于描述系統(tǒng)對外提供的所有服務(wù),因此接口中的成員常量和方法都必須是公開(public)類型的,確保外部使用者能訪問它們;(2)接口僅僅描述系統(tǒng)能做什么,但不指明如何去做,所以接口中的方法都是抽象(abstract)方法;(3)接口不涉及和任何具體實例相關(guān)的細節(jié),因此接口沒有構(gòu)造方法,不能被實例化,沒有實例變量,只有靜態(tài)

46、(static)變量;(4)接口的中的變量是所有實現(xiàn)類共有的,既然共有,肯定是不變的東西,因為變化的東西也不能夠算共有。所以變量是不可變(final)類型,也就是常量了。(5) 接口中不可以定義變量?如果接口可以定義變量,但是接口中的方法又都是抽象的,在接口中無法通過行為來修改屬性。有的人會說了,沒有關(guān)系,可以通過 實現(xiàn)接口的對象的行為來修改接口中的屬性。這當然沒有問題,但是考慮這樣的情況。如果接口 A 中有一個public 訪問權(quán)限的靜態(tài)變量 a。按照 Java 的語義,我們可以不通過實現(xiàn)接口的對象來訪問變量 a,通過 A.a = xxx; 就可以改變接口中的變量 a 的值了。正如抽象類中是

47、可以這樣做的,那么實現(xiàn)接口 A 的所有對象也都會自動擁有這一改變后的 a 的值了,也就是說一個地方改變了 a,所有這些對象中 a 的值也都跟著變了。這和抽象類有什么區(qū)別呢,怎么體現(xiàn)接口更高的抽象級別呢,怎么體現(xiàn)接口提供的統(tǒng)一的協(xié)議呢,那還要接口這種抽象來做什么呢?所以接口中 不能出現(xiàn)變量,如果有變量,就和接口提供的統(tǒng)一的抽象這種思想是抵觸的。所以接口中的屬性必然是常量,只能讀不能改,這樣才能為實現(xiàn)接口的對象提供一個統(tǒng) 一的屬性。通俗的講,你認為是要變化的東西,就放在你自己的實現(xiàn)中,不能放在接口中去,接口只是對一類事物的屬性和行為更高層次的抽象。對修改關(guān)閉,對擴展(不同的實現(xiàn) implement

48、s)開放,接口是對開閉原則的一種體現(xiàn)。所以:接口的方法默認是public abstract;接口中不可以定義變量即只能定義常量(加上final修飾就會變成常量)。所以接口的屬性默認是public static final 常量,且必須賦初值。注意:final和abstract不能同時出現(xiàn)。15. 不通過構(gòu)造函數(shù)也能創(chuàng)建對象嗎()A 是 B 否答案:A解析:Java創(chuàng)建對象的幾種方式(重要):(1) 用new語句創(chuàng)建對象,這是最常見的創(chuàng)建對象的方法。(2) 運用反射手段,調(diào)用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()

49、實例方法。(3) 調(diào)用對象的clone()方法。(4) 運用反序列化手段,調(diào)用java.io.ObjectInputStream對象的 readObject()方法。(1)和(2)都會明確的顯式的調(diào)用構(gòu)造函數(shù) ;(3)是在內(nèi)存上對已有對象的影印,所以不會調(diào)用構(gòu)造函數(shù) ;(4)是從文件中還原類的對象,也不會調(diào)用構(gòu)造函數(shù)。16. ArrayList list = new ArrayList(20);中的list擴充幾次()A 0 B 1 C 2 D 3答案:A解析:這里有點迷惑人,大家都知道默認ArrayList的長度是10個,所以如果你要往list里添加20個元素肯定要擴充一次(擴充為原來的1.

50、5倍),但是這里顯示指明了需要多少空間,所以就一次性為你分配這么多空間,也就是不需要擴充了。17. 下面哪些是對稱加密算法()A DES B AES C DSA D RSA答案:AB解析:常用的對稱加密算法有:DES、3DES、RC2、RC4、AES常用的非對稱加密算法有:RSA、DSA、ECC使用單向散列函數(shù)的加密算法:MD5、SHA18.新建一個流對象,下面哪個選項的代碼是錯誤的?()A)new BufferedWriter(new FileWriter("a.txt");B)new BufferedReader(new FileInputStream("a.dat");C)new GZIPOutputStream(new FileOutputStream("

溫馨提示

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

評論

0/150

提交評論