【計算機二級Java語言】卷015


選擇題

公共知識

【1】設有一個棧與一個隊列的初始狀態均為空。現有一個序列A, B, C, D, E, F, G, H, 先分別將序列中的前4個元素依次入棧, 后4個元素依次入隊; 然后分別將棧中的元素依次退棧, 再將隊列中的元素依次退隊。最后得到的序列為()。
〖A〗A, B, C, D, H, G, F, E
〖B〗D, C, B, A, H, G, F, E
〖C〗A, B, C, D, E, F, G, H
〖D〗D, C, B, A, E, F, G, H
棧的特點是先進后出, 而隊列是先進先出。
前4個元素依次進棧為ABCD, 出棧后為DCBA, 后4個元素入隊列為EFGH, 出隊也是EFGH, 最后得到的序列為DCBAEFGH。
故D項正確。
【2】設某棵樹的度為3, 其中度為2, 1, 0的結點個數分別為3, 4, 15。則該樹中總結點數為()。
〖A〗30
〖B〗22
〖C〗35
〖D〗不可能有這樣的樹
在樹結構中, 一個結點所擁有的后件個數稱為該結點的度, 所有結點中最大的度稱為樹的度, 樹中的結點數即為樹中所有結點的度數之和再加1。
假設度為3的結點數為n, 總結點數為m, m = 3×n + 2×3 + 1×4 + 1, 葉子結點數15 = m - (3 + 4 + n)。
得m = 3n + 11, 2n = 11, n無法得到整數, 說明不可能存在這樣的樹。
故答案為D。
【3】設二叉樹的前序序列為ABDEGHCFIJ, 中序序列為DBGEHACIFJ。則按層次輸出(從上到下, 同一層從左到右)的序列為()。
〖A〗ABCDEFGHIJ
〖B〗DGHEBIJFCA
〖C〗JIHGFEDCBA
〖D〗GHIJDEFBCA
二叉樹遍歷可以分為3種:前序遍歷(訪問根結點在訪問左子樹和訪問右子樹之前)、中序遍歷(訪問根結點在訪問左子樹和訪問右子樹兩者之間)、后序遍歷(訪問根結點在訪問左子樹和訪問右子樹之后)。
二叉樹的前序遍歷序列為ABDEGHCFIJ, 中序序列為DBGEHACIFJ, 可知該樹A為根結點, 右子樹結點為CFIJ, 左子樹結點為BDEGH。
從頂向下從左向右依次為ABCDEFGHIJ, A項正確。
【4】設順序表的長度為16, 對該表進行簡單插入排序。在最壞情況下需要的比較次數為()。
〖A〗15
〖B〗60
〖C〗30
〖D〗120
簡單插入排序在最壞情況下, 即初始排序序列是逆序的情況下, 比較次數為n(n - 1) / 2, 移動次數為n(n - 1) / 2。
本題中即16×(16 - 1)÷2 = 8×15 = 120。
故答案為D。
【5】軟件系統總體結構圖的作用是()。
〖A〗描述軟件系統結構的圖形工具
〖B〗描述軟件系統的控制流
〖C〗描述軟件系統的數據流
〖D〗描述軟件系統的數據結構
軟件系統總體結構圖是描述軟件系統結構的圖形工具, 它包括軟件系統的控制流、軟件系統的數據流、軟件系統的數據結構等的概括。
故答案為A。
【6】不屬於對象構成成份的是()。
〖A〗屬性
〖B〗規則
〖C〗方法(或操作)
〖D〗標識
一個對象通常可由對象名、屬性和操作三部分組成, 對象名唯一標識一個對象。
故答案為B。
【7】十進制整數設為整數類I, 則下面屬於類I的實例的是()。
〖A〗-518
〖B〗0.518
〖C〗518E - 2
〖D〗.518
類是具有共同屬性、共同方法的對象的集合。
-518是整數, 0.518是浮點數, 518E - 2是指數。
故答案為A。
【8】結構化程序設計原則強調的是()。
〖A〗自頂向下
〖B〗可封裝性
〖C〗可復用性
〖D〗可恢復性
結構化程序設計的原則強調自頂向下、逐步求精、模塊化、限制使用goto語句。
故答案為A。
【9】違背數據流圖(DFD)構造規則的是()。
〖A〗"加工"應既有輸入又有輸出
〖B〗"數據存儲"間有數據流
〖C〗"數據流"應標識數據流名
〖D〗圖子圖是指相鄰上下兩層的數據流圖
數據流圖應遵循以下構造規則和注意事項:①對加工處理建立唯一、層次性的編號, 且每個加工處理通常要求既有輸入又有輸出。

②數據存儲之間不應有數據流。

③數據流圖的一致性。
即輸入輸出、讀寫的對應。

④父圖、子圖關系與平衡規則。
相鄰兩層DFD之間具有父子關系, 子圖代表了父圖中某個加式的詳細描述, 父圖表示了子圖間的接口。
子圖個數不大於父圖中的處理個數。
所有子圖的輸入輸出數據流和父圖中相應處理的輸入輸出數據流必須一致。
故答案為B。

【10】規范化主要為克服數據庫邏輯結構中的插入異常, 刪除異常以及()。
〖A〗數據丟失的問題
〖B〗結構不合理的問題
〖C〗數據不一致的問題
〖D〗冗余度大的問題
關系數據庫進行規范化的目的是使結構更合理, 消除存儲異常, 使數據冗余盡量小, 便於插入、刪除和更新。
關系模式進行規范化的原則:遵從概念單一化"一事一地"原則, 即一個關系模式描述一個實體或實體間的一種聯系。
規范的實質就是概念的單一化。
故答案為D。

專業知識

【11】下列對Java語言的描述中, 正確的是
〖A〗Java類是對具有相同行為對象的一種抽象
〖B〗Java類的構造方法可以帶有返回值
〖C〗Java中構造方法不可以重載
〖D〗Java的垃圾回收機制是由用戶定義線程完成的
選項B:構造方法沒有返回值, 且不能寫void, 錯誤; 選項C:構造方法可以進行重載, 有參構造函數和無參構造函數就是重載, 錯誤; 選項D:垃圾回收機制是系統級的線程, 錯誤; 選項A正確, 本題答案為A。
【12】下列選項中, 屬於Java文檔注釋的是
〖A〗/The get method of the class Counter
〖B〗//The get method of the class Counter
〖C〗/*The get method of the class Counter*/
〖D〗/**The get method of the class Counter*/
選項A沒有這種注釋, 錯誤; 選項B屬於單行注釋, 錯誤; 選項C屬於多行注釋, 錯誤; 選項D正確, 本題答案為D。
【13】下列選項中, 不符合Java標識符規定的是
〖A〗1_name
〖B〗abc123
〖C〗total
〖D〗_width
java命名規則:1可以由字母, 數字, "_"或者"$"符組成, 但是不能以數字開頭; 2.中文可以作為變量名, 但是不提倡使用; 3.Java大小寫敏感, 嚴格區分大小寫, 命名時需要注意; 4.不能使用Java保留字; 選項A不符合命名規則, 本題答案為A。
【14】下列代碼段執行后, t的值為
int a = 6, b = 9, c = 3, t = 0;
t = a > b ? (a > c ? a : c) : (b > c ? b : c);
〖A〗0
〖B〗3
〖C〗6
〖D〗9
本題考查條件運算符的應用, 關系表達式?表達式1:表達式2; 關系表達式返回true, 結果為表達式1的值, 否則為表達式2的值。
將程序中的帶入可知結果為9, 選項D正確, 本題答案為D。
【15】使表達式 x > 0 && x <= 10 || x > 100的值為false的選項是
〖A〗x = 5
〖B〗x = 10
〖C〗x = 20
〖D〗x = 150
值為false首先需要滿足x < 100, 其次x < 0或者x > 10, 選項C正確, 本題答案為C。
【16】下列選項中, 不能正確表示無限循環的是
〖A〗while (true) { }
〖B〗while (1) { }
〖C〗while ( !false) { }
〖D〗for (; true; ) { }
while循環中的條件應為布爾表達式, 選項B無法判斷對錯, 寫法錯誤, 本題答案為B。
【17】switch語句的格式為 switch (表達式) { }, 其表達式的類型不允許是
〖A〗int
〖B〗char
〖C〗double
〖D〗byte
switch語句在數據類型上受到限制, 只能使用int、byte、short、char類型。
如果比較的數據類型是float型或者boolean類型, 就只能使用if - else if結構。
本題答案為C
【18】下列代碼段執行后, s的值為
int s = 0;
for (int i = 1; i <= 8; i++) {
    if (i % 2 == 0)
        continue;
    s = s + i;
}
〖A〗1
〖B〗16
〖C〗20
〖D〗36
本題考查continue, 當滿足條件時, 跳出本次循環, 執行下次循環。
所以計算的過程是1 + 3 + 5 + 7 = 16, 選項B正確。
本題答案為B。
【19】下列代碼段執行后, n的值為
int n = 0;
for (int i = 1; i <= 3; i++) {
    n = 0;
    for (int j = 1; j <= 2 * i - 1; j++)
        n++;
}
〖A〗3
〖B〗5
〖C〗9
〖D〗15
因為大循環中每次循環n都被初始化為0, 所以只需看最后一次執行i = 3結果。
執行結果為5, 選項B正確, 本題答案為B。
【20】下列代碼段執行后的結果是
int[] a = { 1, 2, 3, 4, 5 };
for (int i = 0; i < 5; i++)
    a[i] = a[(i + 1) % 5];
for (int i = 0; i < 5; i++)
    System.out.print(a[i] + " ");
〖A〗2 3 4 5 1
〖B〗2 3 4 5 2
〖C〗4 5 3 2 1
〖D〗1 2 3 4 5
i = 0時, (i + 1) % 5 = 1, a[0] = 2; i = 1時, (i + 1) % 5 = 2, a[1] = 3; …

i = 4時, (i + 1) % 5 = 0, a[0] = 2;
此時a[0]已經被改變為2

本題答案為B。

【21】Java中, 定義子類繼承父類用到的關鍵字是
〖A〗extends
〖B〗this
〖C〗inheritance
〖D〗final
B : this關鍵字主要有三個應用:(1)this調用本類中的屬性, 也就是類中的成員變量; (2)this調用本類中的其他方法; (3)this調用本類中的其他構造方法, 調用時要放在構造方法的首行

C:英文單詞繼承意思, 和Java無關

D:可以聲明成員變量、方法、類以及本地變量。
一旦你將引用聲明作final, 你將不能改變這個引用了, 編譯器會檢查代碼, 如果你試圖將變量再次初始化的話, 編譯器會報編譯錯誤。

選項A正確, 本題答案為A。

【22】定義接口的關鍵字是
〖A〗public
〖B〗private
〖C〗interface
〖D〗final
選項ABD主要用來修飾成員變量和類, 定義接口用關鍵字interface, 選項C正確, 本題答案為C。
【23】下列語句執行后, i的值為
String str = "rock-n-roll";
String str1 = "ro";
int i = str.indexOf(str1);
〖A〗0
〖B〗1
〖C〗7
〖D〗8
Java中字符串中子串的查找共有四種方法, 如下:1、int indexOf(String str):返回第一次出現的指定子字符串在此字符串中的索引。

2、int indexOf(String str, int startIndex):從指定的索引處開始, 返回第一次出現的指定子字符串在此字符串中的索引。

3、int lastIndexOf(String str):返回在此字符串中最右邊出現的指定子字符串的索引。

4、int lastIndexOf(String str, int startIndex):從指定的索引處開始向后搜索, 返回在此字符串中最后一次出現的指定子字符串的索引。

由此可知選項A正確, 本題答案為A。

【24】如果要判斷兩個字符串a 和b是否相等(不區分大小寫)應該選用的方法是
〖A〗a.equals(b)
〖B〗a = b
〖C〗a == b
〖D〗a.equalsIgnoreCase(b)
選項A : equals比較區分大小寫選項B:賦值語句 選項C:用於數值比較, 選項D比較字符串不區分大小寫, 符合題目要求, 本題答案為D。
【25】下列程序段的運行結果是
int[][] a = new int[4][4];
int i, j, s = 0;
for (i = 0; i < 4; i++)
    for (j = 0; j < 4; j++)
        a[i][j] = i * j;
for (i = 0; i < 4; i++)
    s = s + a[i][i];
System.out.print(s);
〖A〗30
〖B〗14
〖C〗55
〖D〗60
本題考查二維數組的運算, 雙層for循環中的執行結果為4行4列的矩陣, 帶入相關值, 可知a[0][0]為0, a[1][1]為1, a[2][2]為4, a[3][3]位9, 可知最終結果為14, 選項B正確, 本題答案為B。
【26】整數算術運算中, 當除數為0時產生的異常是
〖A〗ArrayIndexOutOfBoundsException
〖B〗DividedByZeroException
〖C〗NullPointerException
〖D〗ArithmeticException
A:數組下標越界, B:被除數為0, C:空指針異常, 本題答案為D。
【27】執行下列程序段時, 若文件"file.dat"不存在, 則輸出結果是
try {
    FileInputStream fis = new FileInputStream("file.dat");
} catch (FileNotFoundException e) {
    System.out.print("FileNotFoundException")
} catch (IOException e) {
    System.out.print("IOException")
}
〖A〗FileNotFoundException
〖B〗IOException
〖C〗FileNotFoundException IOException
〖D〗
在處理異常時遵循:先逮小的(先處理小范圍中的異常), 再逮大的(小范圍沒有處理異常的操作, 往其父類中查找解決異常), 本程序中文件找不到, 有FileNotFoundException這個處理異常, 則后面的異常不會被執行, 選項A正確, 本題答案為A。
【28】Map接口中, 插入<關鍵字, 值>條目的方法是
〖A〗get()
〖B〗put()
〖C〗add()
〖D〗insert()
選項A:通過key, 取得value值, 錯誤, 選項CD Map中無此方法, 選項B正確, 本題答案為B。
【29】壓縮流所在的包是
〖A〗java.util.zip
〖B〗java.sound.sampled
〖C〗javax.imageio
〖D〗javax.xml.stream
選項A:實現zip壓縮和解壓, 選項 B:音頻播放, 選項C:簡單的圖像操作, 選項D:解壓xml文件, 本題答案為A
【30】將一個字節數組作為輸出流寫入內存的類是
〖A〗StringBufferInputStream
〖B〗PipedInputStream
〖C〗ByteArrayOutputStream
〖D〗ObjectOutputStream
A:允許應用程序創建, 其中讀取的字節由字符串的內容提供的輸入流B:管道流可以實現兩個線程之間, 二進制數據的傳輸D:數據模型序列化

本題答案為C。

【31】創建文件目錄時, 所使用的方法是
〖A〗list()
〖B〗mkdirs()
〖C〗mkdir()
〖D〗isFile()
本題考查文件類提供的方法。
mkdir0是為目錄操作提供的方法, 用來創建目錄; mkdirs()也是為目錄操作提供的方法, 創建包含父目錄的目錄; list()是對文件名操作提供的方法, 返回一個字符串數組, 為該文件所在目錄下的所有文件名列表, isFile()判斷一個文件是否屬於標准的目錄。
本題答案為C。
【32】下列代碼實現了將一個文件的內容復制到另一個文件的功能。下划線處應填入的代碼是
import java.io.*;
public class test {
    public static void main(String[] args) {
        try {
            FileInputStream is = new FileInputStream("D:\\from.txt");
            FileOutputStream os = new _______________("D:\\to.txt");
            byte[] str = new ___________[1024];
            while (is.available() > 0) {
                is.read(str, 0, 1024);
                os.write(str);
            }
            is.close();
            os.close();
        } catch (ArrayIndexOutOfBoundsException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
〖A〗FileOutputStream, byte
〖B〗FileInputStream, byte
〖C〗FileOutputStream, str
〖D〗FileInputStream, str
文件輸出流, 是用於將數據寫入File或 FileDescriptor的輸出流, 使用給定的 charset 將此 String 編碼到 byte 序列, 並將結果存儲到新的 byte 數組 選項A正確, 本題答案為A。
【33】文本字段或文本區域發生改變時所產生的事件是
〖A〗MouseEvent
〖B〗WindowEvent
〖C〗FocusEvent
〖D〗TextEvent
A:鼠標點擊事件, B:窗口事件, C:當頁面中的元素獲得或失去焦點時觸發, 選項D正確, 本題答案為D。
【34】Swing組件的事件類所在的包是
〖A〗javax.swing.tree
〖B〗javax.swing.event
〖C〗javax.swing.table
〖D〗javax.swing.border
Swing組件的事件類所在的包是javax.swing.event
【35】有如下程序
<img border = "0" alt = "" src = "http://res.weilaijiaoyu.cn/CourseFile/JAVA/PC/Images/ja-15-1.png">
〖A〗JOptionPane.showMessageDialog(null, "錯誤", "運行結果", JOptionPane.ERROR_MESSAGE);
〖B〗JOptionPane.showMessageDialog(null, "錯誤", "運行結果", JOptionPane.PLAIN_MESSAGE);
〖C〗JOptionPane.showMessageDialog(null, "錯誤", "運行結果", JOptionPane.WARNING_MESSAGE);
〖D〗JOptionPane.showMessageDialog(null, "錯誤", "運行結果", JOptionPane.INFORMATION_MESSAGE);
A錯誤提示框 B:基本提示框C:警告D:選擇 本題答案為B。
【36】下列選項中, 不是Java線程組成部分的是
〖A〗代碼
〖B〗虛擬的CPU
〖C〗所屬的進程
〖D〗代碼所操作的數據
線程是程序中的一個執行流。
一個執行流是由CPU運行程序的代碼、操縱程序的數據所形成的。
Java中的線程模型包含3部分:一個虛擬的CPU, 該CPU執行的代碼, 代碼所操作的數據。
選項C不屬於組成部分, 本題答案為C。
【37】為了使下列程序正常運行並且輸出"(1,1) (2,2) (3,3) ", 在下划線處應填入的是
public class Test2 ___________ {
    private int x = 0;
    private int y = 0;
    boolean flag = true;
    public static void main(String[] args) {
        Thread t1 = new ________;
        t1.start();
    }
    public void run() {
        while (flag) {
            x++;
            y++;
            System.out.print("(" + x + "," + y + ") ");
            if (x >= 3)
                flag = false;
        }
    }
}
〖A〗implements Runnable, Test2()
〖B〗implements Runnable, Thread()
〖C〗extends Thread, Test2()
〖D〗extends Thread, Thread()
Thread類是多線程基類, 多線程啟動類必須繼承此類。
而實現Runnable接口的類能作為多線程的一個執行任務, 一般作為參數傳給新的Thread類。
選項C正確, 本題答案為C。
【38】在一個線程的生命周期中, 不能多次被調用的方法是
〖A〗wait()
〖B〗start()
〖C〗sleep()
〖D〗yield()
啟動線程start()只能調用一次, 選項B正確, 本題答案為B。
【39】下列選項中, 屬於Applet生命周期方法的是
〖A〗init(), start(), stop(), destroy()
〖B〗init(), start(), paint(), destroy()
〖C〗start(), stop(), paint(), main()
〖D〗main(), init(), stop(), start()
init:該方法用於初始化Applet, 當applet首先被加載時, 該方法會自動被調用一次。

start:該方法在Java調用init方法之后被調用, 當用戶從其他頁面返回到包含Applet的頁面中時, 該方法也會被調用, 它與init方法不同。
有鑒於此, 應該把調用一次的代碼放到init方法中, 而非start方法中。
start方法通常是為Applet重起一個線程的地方, 如果當用戶回到當前網頁的時候不需要做任何操作, 那么就不需要實現此方法。

stop:該方法在用戶離開Applet頁面時, 被自動調用。
因此, 其也能被多次重復調用。
主要作用是當用戶不再關注Applet時能夠停止一些沒用的動作。
典型作用是掛起一個線程。

destroy:當瀏覽器被正常關閉時, JVM會自動調用此方法。
該方法中放置的代碼主要是用來回收一些系統資源

本題答案為A。

【40】下列代碼包括一個HTML文件和一個定義Applet類的Java程序。為了使HTML文件在瀏覽器中運行時顯示一個帶有"Try!"的按鈕, 在下划線處應填入的代碼是
/*test.html*/
<HTML><HEAD><TITLE > Applet Test</TITLE></HEAD><BODY><_______ CODE = "AppletTest3.class" WIDTH = 150 HEIGHT = 25></_______></BODY></HTML>/*AppletTest3.java*/
import java.awt.*;
import __________;
public class AppletTest3 extends JApplet {
    JButton b;
    public void init() {
        Container contentPane = getContentPane();
        b = new JButton("Try!");
        contentPane.add(b);
    }
}
〖A〗FONT, FONT, javax.swing.*
〖B〗BR, BR, java.awt.event.*
〖C〗APPLET, APPLET, java.awt.event.*
〖D〗APPLET, APPLET, javax.swing.*
JApplet類屬於Applet的擴展類, java中擴展類都存放在javax包中, JApplet屬於swing窗口中的構件, 選項B, C錯誤, 在瀏覽器中通過 獲取java中的參數, 選項D正確, B錯誤, 本題答案為D。

編程題

【41】在考生文件夾中存有文件名為Java_1.java的文件, 該程序是不完整的, 請在注釋行"//**********Found**********"下一行語句的下划線地方填入正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
本題的要求是:
對 Java_1.java文件進行調試, 使程序輸出結果如下:
0 1 2 3 4 5 6 7 8 9
1.int 2.i++3.anArray[i]
本題考查考生對數組的應用
填空1 : anArray位int類型數組, 在確定大小時也必須為int類型
填空2:往數組中添加元素, 程序要求在前一個值的基礎上+1, 所以條件應為i++
填空3:將數組中的每一個元素輸出, 通過下標的方式進行
【42】在考生文件夾中存有文件名為Java_2.java的文件, 該程序是不完整的, 請在注釋行"//**********Found**********"下一行語句的下划線地方填入正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
本題的要求是:
構造一個5行5列的二維數組, 給數組賦值, 並將其按照行列對齊的方式輸出, 使程序輸出結果如下:
0 0 0 0 1
0 0 0 2 3
0 0 4 5 6
0 7 8 9 10
11 12 13 14 15
1.j < 5 2.4 3.a[i][j] = k++4.10
本題考查考生對象二維數組的賦值和輸出, 采用循環賦值輸出。
填空1:數組有5行5列就沒有賦值, 因此j的循環結束條件和i一樣<5
填空2:數組輸出結果為第一行, 第一列前4個數都是0, 所以a[i][j] = 0, 不能超出4個
填空3:對於對角線后的語句由於是從1遞增到15, 所以要借助k的自增
填空4:程序輸出的結果中對角線有10個非0的數, 所以a[i][j]應<10
【43】在考生文件夾中存有文件名為Java_3.java的文件, 該程序是不完整的, 請在注釋行"//**********Found**********"下一行語句的下划線地方填入正確內容, 然后刪除下划線, 請勿刪除注釋行或改動其他已有語句內容。存盤時文件必須存放在考生文件夾下, 不得改變原有文件的文件名。
本題的要求是:
運行程序時, 生成下面左邊圖形的界面, 第一次點擊圖中的"New"按鈕時, 彈出如下右圖
所示的對話框。之后再點擊"New"按鈕時, 彈出對話框標題中數字將發生改變。

1.panel 2.setVisible(false) 3.closeAllListener 4.counter
本題考查的考生對窗口構件及監聽器的掌握
填空1:創建好畫板對象之后需要將其加入到窗口容器中, 此處將panel添加到容器中去
填空2 : JFrame窗口隱藏或消除的方法是setVisible(false).需將其布爾參數設置為false
填空3:點擊colseAll按鈕觸發事件, 將所有彈窗刪除, 需將監聽器添加到按鈕事件中去
填空4:每新建一個窗口, 窗口的編號在前面的基礎上+1, counter在此做計數操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM