計算機(jī)等級考試二級Java練習(xí)題及解析(8)

字號:

1 下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進(jìn)行查找的是__A____。
    A、順序存儲的有序線性表 B、線性鏈表 C、二叉鏈表 D、有序線性鏈表
    解析:二分法查找只適用于順序存儲的有序表。在此所說的有序表是指線性表中的元素按值非遞減排列(即從小到大,但允許相鄰元素值相等)。
    2 在軟件設(shè)計中,不屬于過程設(shè)計工具的是__D____。
    A、PDL(過程設(shè)計語言) B、PAD圖 C、N-S圖 D、DFD圖
    解析:軟件設(shè)計工具包括:程序流程圖、N-S、PAD、HIPO,判定表,PDL(偽碼)。而DFD(數(shù)據(jù)流圖)屬于結(jié)構(gòu)化分析工具。
    3 在switch(expression)語句中,expression的數(shù)據(jù)類型不能是__A____。
    A、double B、char C、byte D、short
    解析:表達(dá)式expression只能返回這個幾種類型的值:int、byte、short和char。多分支語句把表達(dá)式返回的值依次與每個case子句中的值相比較,如果遇到匹配的值,則執(zhí)行該case子句后的語句序列。
    4 下列敘述中,錯誤的是__D____。
    A、父類不能替代子類 B、子類能夠替代父類 C、子類繼承父類 D、父類包含子類
    5 通過繼承實現(xiàn)代碼復(fù)用:
     Java中所有的類都是通過直接或間接地繼承java.lang.Object類得到的。繼承而得到的類稱為子類,被繼承的類稱為父類。子類不能繼承父類中訪問權(quán)限為private的成員變量和方法,子類可以重寫父類的方法,及命名與父類同名的成員變量。
     子類通過隱藏父類的成員變量和重寫父類的方法,把父類的狀態(tài)和行為改變?yōu)樽陨淼臓顟B(tài)和行為。注意:子類中重寫的方法和父類中被重寫的方法要具有相同的名字,相同的參數(shù)表和相同的返回類型,只是函數(shù)體不同。
     由于子類繼承了父類所有的屬性(私有的除外),所以子類對象可以作為父類對象使用。程序中凡是使用父類對象的地方,都可以用子類對象來代替。一個對象可以通過引用子類的實例來調(diào)用子類的方法。
     java運(yùn)行時系統(tǒng)根據(jù)調(diào)用該方法的實例,來決定調(diào)用哪個方法。對子類的一個實例,如果子類重寫了父類的方法,則運(yùn)行時系統(tǒng)調(diào)用子類的方法;如果子類繼承了父類的方法(未重寫),則運(yùn)行時系統(tǒng)調(diào)用父類的方法。
    6 自定義表格類中的model部分應(yīng)實現(xiàn)的接口是___A___。
    A、AbstractTableModel B、JTable C、TableModel D、TableModelable
    7 下列代碼中,將引起編譯錯誤的行是__B____。
    1)public class Exercise{
    2) public static void main(String args[]){
    3) float f=0.0;
    4) f+=1.0;
    5) }
    6) }
    A、第2行 B、第3行 C、第4行 D、第6行
    解析:float定義變量賦值時,需要在數(shù)值后面加f以標(biāo)識它為浮點(diǎn)型,讓系統(tǒng)知道該給它精確到多少位。
    8 下列關(guān)于Java多線程并發(fā)控制機(jī)制的敘述中,錯誤的是___B___。
    A、Java中對共享數(shù)據(jù)操作的并發(fā)控制是采用加鎖技術(shù)
    B、線程之間的交互,提倡采用suspend()/resume()方法
    C、共享數(shù)據(jù)的訪問權(quán)限都必須定義為private
    D、Java中沒有提供檢測與避免死鎖的專門機(jī)制,但應(yīng)用程序員可以采用某些策略防止死鎖的發(fā)生
    解析:
    1)Java中對共享數(shù)據(jù)操作的并發(fā)控制是采用傳統(tǒng)的封鎖技術(shù)。一個程序中單獨(dú)的、并發(fā)的線程對同一個對象進(jìn)行訪問的代碼段,稱為臨界區(qū)。在Java語言中,臨界區(qū)可以是一個語句塊或是一個方法,并且用"synchronized"關(guān)鍵字標(biāo)識。Java平臺將每個由synchronized(Object)語句指定的對象設(shè)置一個鎖,稱為對象鎖。
     2)共享數(shù)據(jù)的所有訪問都必須作為臨界區(qū),使用"synchronized"進(jìn)行加鎖控制。用"synchronized"保護(hù)的數(shù)據(jù)也必須是私有的,使線程不能直接訪問這些數(shù)據(jù),必須通過對象的方法。
     3)Java中沒有檢測與避免死鎖的專門機(jī)制,因此完全由程序進(jìn)行控制,防止死鎖的發(fā)生。
     4)有時,某個線程進(jìn)入"synchronized"塊后,共享數(shù)據(jù)的狀態(tài)并不一定滿足線程的需要,它要等待其他線程將共享數(shù)據(jù)改變?yōu)樗枰臓顟B(tài)后才能繼續(xù)執(zhí)行,但由于此時它占有了該對象的鎖,其他線程無法對共享數(shù)據(jù)進(jìn)行操作,為此Java引入wait()和notify(),這兩個方法使java.lang.object類的方法,使實現(xiàn)線程通信的兩個方法。
    9 下列操作中,不屬于Applet安全限制的是___D___。
    A、加載本 B、讀寫本地文件系統(tǒng) C、運(yùn)行本地可執(zhí)行程序 D、與同一個頁面中的Applet通信
    10 在進(jìn)行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊(樁模塊)。其中,驅(qū)動模塊相當(dāng)于被測試模塊的主程序,它接收測試數(shù)據(jù),并傳給被測試模塊,輸出實際測試結(jié)果。承接模塊通常用于代替被測試模塊調(diào)用的其他模塊,其作用僅做少量的數(shù)據(jù)操作,是一個模擬子程序,不必將子模塊的所有功能帶入。
    11 Java語言具有可移植性、高性能、健壯性、安全性和獨(dú)立于體系結(jié)構(gòu)的__跨平臺____特點(diǎn)。
    解析:Java語言是一種跨平臺,適合于分布式計算環(huán)境的面向?qū)ο蟮木幊陶Z言。具體來說,它具有如下特性:簡單性、面向?qū)ο?、分布式、解釋型、可靠、安全、平臺無關(guān)、可移植、高性能、多線程、動態(tài)性等。
    12 在運(yùn)行時,由Java解釋器自動導(dǎo)入,而不用import語句引入的包是__java.lang____。
    解析:因為包java.lang所包含的類和接口對所有實際的Java程序都是必要的,所以,它被自動導(dǎo)入所有的程序且它是Java最廣泛使用的包。
    13 下列程序的功能是創(chuàng)建了一個顯示5個"Hello!"的線程并啟動運(yùn)行,請將程序補(bǔ)充完整。
    public class ThreadTest extends Thread{
     public static void main(String args[]){
     ThreadTest t=new __ThreadTest()____;
     t.start();}
     public void run(){int i=0;
     while(true){System.out.println("Hello!");
     if (i++==4) break;
     }
     }
    解析:ThreadTest繼承java.lang.Thread類,重寫了run()方法,實現(xiàn)了Java中的線程。ThreadTest t定義了空的線程對象,下面t.start()啟動了這個線程,因此ThreadTest t=new ______;就應(yīng)該是實例化該線程對象,所以空格中應(yīng)填ThreadTest()。
    Swing的頂層容器有:JApplet、JWindow、JDialog和__JFrame____。
    頂層容器:JFrame、JApplet、JDialog和JWindow共4個。
     中間容器:JPanel、JScrollPane、JSplitPane、JToolBar。
     特殊容器:JInternalFrame、JLayeredPane、JRootPane。
     基本控件:JButton、JComboBox、JList、JMenu、JSlider、JTextField。
     不可編輯信息的構(gòu)件:JLabel、JProgressBar、ToolTip、
     可編輯信息的構(gòu)件:JColorChooser、JFileChooser、JFileChooser、JTable、JTextArea
    所有的這些構(gòu)件的分類都是按功能來劃分的。
    14 下列敘述中正確的是___D___。
    A、一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)
    B、數(shù)據(jù)的邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)
    C、一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理的效率
    D、一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理的效率
    解析:一般來說,一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲結(jié)構(gòu),常用的存儲結(jié)構(gòu)有順序、鏈接、索引等存儲結(jié)構(gòu)。而采用不同的存儲結(jié)構(gòu),其數(shù)據(jù)處理的效率是不同的。
    15 Java的圖形用戶界面的最基本的組成部分就是構(gòu)件(Component),構(gòu)件是一個可以以圖形化的方式顯示在屏幕上并能與用戶交互的對象,但構(gòu)件不能獨(dú)立地顯示出來,必須將構(gòu)件放在一定的容器中才可以顯示出來。解析:容器Container是一個類,因為容器本身也是一個構(gòu)件,具有構(gòu)件的所有性質(zhì),因此繼承之Component類。
    16 下列敘述中,錯誤的是__A____。
    A、File類能夠存儲文件 B、File類能夠讀寫文件C、File類能夠建立文件D、File類能夠獲取文件目錄信息
    解析:文件類File是java.io包中的一個重要的非流類,它以一種與系統(tǒng)無關(guān)的方式表示一個文件對象的屬性。而目錄在Java中作為一種特殊文件,即文件名的列表,通過類File所提供的方法,可得到文件或目錄的描述信息(包括名字、路徑、長度、可讀、可寫等),也可以生成新文件、目錄、修改文件和目錄,查詢文件屬性,重命名文件或者刪除文件。
    17 下列敘述中,正確的是___C___。
    A、Reader是一個讀取字符文件的接口 B、Reader是一個讀取數(shù)據(jù)文件的抽象類
    C、Reader是一個讀取字符文件的抽象類 D、Reader是一個讀取字節(jié)文件的一般類
    解析:Java中的流分為兩種,一種是字節(jié)流,另一種是字符流,分別由四個抽象類來表示(每種流包括輸入和輸出兩種,所以一共四個):InputStream,OutputStream,Reader,Writer。Java中其他多種多樣變化的流均是由它們派生出來的。
     在這其中InputStream和OutputStream在早期的Java版本中就已經(jīng)存在了,它們是基于字節(jié)流的,而基于字符流的Reader和Writer是后來加入作為補(bǔ)充的。在這四個抽象類中,InputStream和Reader定義了完全相同的接口:
     int read()
     int read(char cbuf[])
     int read(char cbuf[], int offset, int length)
     而OutputStream和Writer也是如此:
     int write(int c)
     int write(char cbuf[])
     int write(char cbuf[], int offset, int length)
    18 用于輸入壓縮文件格式的ZipInputStream類所屬包是___D___。
    A、java.util B、java.io C、java.nio D、java.util.zip
    解析:ZipInputStream該對象用于從ZIP壓縮文件中創(chuàng)建輸入流對象。
     對象定義結(jié)構(gòu):java.util.zip.ZipInputStream
     靜態(tài)成員變量:CENATT、CENATX、CENCRC……,這些靜態(tài)成員變量用于定義在壓縮過程中采用的壓縮算法。
     構(gòu)造方法:ZipInputStream(InputStream in)應(yīng)用輸入流對象創(chuàng)建從ZIP文件中讀取數(shù)據(jù)的輸入流對象。
     成員方法:
     int available() 判斷當(dāng)前入口指定的壓縮原始文件中是否還有未讀數(shù)據(jù)。
     void close() 關(guān)閉ZIP輸入流對象。
     void closeEntry() 關(guān)閉被讀取的ZIP入口,并移動到下一壓縮原始文件入口。
     protectedZipEntry createZipEntry(String name) 利用指定的名稱創(chuàng)建ZipEntry對象實例。
     ZipEntry getNextEntry() 將輸入流對象移動到下一入口對象。
     int read(byte[] b, int off, int len) 從當(dāng)前ZipEntry中讀取字節(jié)數(shù)組。
     long skip(long n) 將輸入流指定的讀取數(shù)據(jù)位置移動n個字節(jié)。
    在Swing中用輕量級的構(gòu)件替代了AWT中的重量級的構(gòu)件,而且Swing的替代構(gòu)件中都包含有一些其他的特性。與AWT構(gòu)件不同,Swing構(gòu)件不能直接添加到頂層容器中,它必須添加到一個與Swing頂層容器相關(guān)聯(lián)的內(nèi)容面板(contentPane)上。
    19 查找隨機(jī)文件的記錄時,應(yīng)使用的方法是___C___。
    A、readInt() B、readBytes(int n) C、seek(long l) D、readDouble()
    文件操作中經(jīng)常需要的是隨機(jī)訪問,Java中的RandomAccessFile類提供隨機(jī)訪問文件的功能,其中的seek方法實現(xiàn)了查找隨機(jī)文件記錄的功能,格式如下:
     void seek( long pos ); //用于移動文件指針到指定的位置