2014年4月自學(xué)考試試題:Java語言程序設(shè)計(jì)(一)

字號(hào):

全國2014年4月高等教育自學(xué)考試
    Java語言程序設(shè)計(jì)(一)試題
    課程代碼:04747
    請(qǐng)考生按規(guī)定用筆將所有試題的答案涂、寫在答題紙上。
    選擇題部分
    注意事項(xiàng):
    1. 答題前,考生務(wù)必將自己的考試課程名稱、姓名、準(zhǔn)考證號(hào)用黑色字跡的簽字筆或鋼筆填寫在答題紙規(guī)定的位置上。
    2. 每小題選出答案后,用2 B鉛筆把答題紙上對(duì)應(yīng)題目的答案標(biāo)號(hào)涂黑。如需改動(dòng),用橡皮擦干凈后,再選涂其他答案標(biāo)號(hào)。不能答在試題卷上。
    一、單項(xiàng)選擇題(本大題共1 0小題,每小題1分,共1 0分)
    在每小題列出的四個(gè)備選項(xiàng)中只有一個(gè)是符合題目要求的,請(qǐng)將其選出并將“答題紙”的相應(yīng)代碼涂黑。錯(cuò)涂、多涂或未涂均無分。
    1.以下標(biāo)識(shí)符中,不是Java語言關(guān)鍵字的是
    A.wait B.new
    C.long D.switch
    2.以下數(shù)據(jù)類型轉(zhuǎn)換中,必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換的是
    A.int→char B. short→long
    C.float→double D. byte→int
    3.以下供選擇的概念中,屬于面向?qū)ο笳Z言重要概念和機(jī)制之一的是
    A.函數(shù)調(diào)用 B.模塊
    C.繼承 D.結(jié)構(gòu)化
    4.以下Java程序代碼中,能正確創(chuàng)建數(shù)組的是
    A.int myArray[]; myArray[]=new int[5];
    B.int myArray[]=new my(5);
    C.int[]myArray={1,2,3,4,5};
    D.int myArray[5]={1,2,3,4,5};
    5.某Java程序的類A要利用Swing創(chuàng)建框架窗口,則A需要繼承的類是
    A.JWindow B.JFrame
    C.JDialog D.JApplet
    6.MouseMotionListener接口能處理的鼠標(biāo)事件是
    A.按下鼠標(biāo)鍵 B.鼠標(biāo)點(diǎn)擊
    C.鼠標(biāo)進(jìn)入 D.鼠標(biāo)移動(dòng)
    7.以下術(shù)語中,屬于文字字型風(fēng)格屬性的是
    A.顏色 B.微軟雅黑
    C.斜體 D.字號(hào)
    8.以下能作為表示線程優(yōu)先級(jí)的數(shù)值,并且級(jí)別低的是
    A.0 B.1
    C.1 5 D.1 6
    9.某Java程序用javax.swing包中的類JFileChooser來實(shí)現(xiàn)打開和保存文件對(duì)話框。該程序 通過文件對(duì)話框首先獲得的信息是
    A.文件長度 B.文件路徑
    C.文件內(nèi)容 D.文件對(duì)象
    1 0.在編寫訪問數(shù)據(jù)庫的Java程序時(shí),ResultSet對(duì)象的作用是
    A.用來表示與數(shù)據(jù)庫的連接 B.存儲(chǔ)查詢結(jié)果
    C.在指定的連接中處理SQL語句 D.建立新數(shù)據(jù)庫連接
    非選擇題部分
    注意事項(xiàng):
    用黑色字跡的簽字筆或鋼筆將答案寫在答題紙上,不能答在試題卷上。
    二、填空題(本大題共1 0小題,每空2分,共20分)
    11.類Testll經(jīng)Java編譯程序編譯后,產(chǎn)生的文件是 ______。
    12.表達(dá)式“45&20”的十進(jìn)制值是 ______。
    13.如果類A繼承和擴(kuò)展類B,則子類A和超類B之間的關(guān)系是 ______。
    14.Java語言提供的用于處理不可改變的字符串類是 ______。
    15.要使得已注冊(cè)的按鈕對(duì)象暫時(shí)不響應(yīng)事件,需使用的方法是______。
    1 6.一個(gè)水平滾動(dòng)條對(duì)象的初始值是1 50,滑塊的寬是8個(gè)像素,表示的范圍是[0,300]。 創(chuàng)建這樣的滾動(dòng)條對(duì)象時(shí),提供的后2個(gè)參數(shù)依次是______。
    17.某應(yīng)用程序定義的類C17是JPanel的子類,在類C17的對(duì)象中需要繪圖,則在類 C17中應(yīng)重寫的方法是 ______。
    18.當(dāng)線程進(jìn)入臨界段后,發(fā)現(xiàn)需要與別的線程進(jìn)行同步,則要調(diào)用的方法 是 ______。
    19.某程序想要隨機(jī)讀寫字符文件,能支持這個(gè)要求的類是______。
    20.某應(yīng)用程序已經(jīng)聲明了InetAddress對(duì)象addr,現(xiàn)要用域名www.baidu.com創(chuàng)建addr 對(duì)象,能實(shí)現(xiàn)這樣要求的代碼是addr =InetAddress.______;。
    三、簡(jiǎn)答題(本大題共6小題,每小題3分,共1 8分)
    22.請(qǐng)寫出接口體中可能包含的內(nèi)容。
    23.請(qǐng)寫出對(duì)事件對(duì)象作監(jiān)視器注冊(cè)的作用。
    24.已知Graphics對(duì)象g,獲得Graphics2D對(duì)象g2d,然后,用圓角長方形類創(chuàng)建對(duì)象 circle,該對(duì)象的左上角坐標(biāo)是(30,40),半徑是50。請(qǐng)寫出實(shí)現(xiàn)以上要求的Java代 碼。
    25.某程序希望用FileFilter類的子類為打開文件對(duì)話框設(shè)置文件篩選條件。請(qǐng)寫出設(shè)置 此篩選條件要使用的類及相應(yīng)的方法。
    26.JDBC是Java程序與數(shù)據(jù)庫連接的API。請(qǐng)寫出JDBC能做的三件事情。
    四、程序填空題(本大題共5小題,每空2分,共20分)
    27.方法void moveOddFront (int a[])的功能是將數(shù)組a中的所有奇數(shù)都移到數(shù)組的前端, 而把偶數(shù)放于所有奇數(shù)的后面,其方法是當(dāng)發(fā)現(xiàn)是偶數(shù)時(shí),就讓該數(shù)留在原來位置, 當(dāng)發(fā)現(xiàn)是奇數(shù)時(shí),就與前面的第一個(gè)偶數(shù)交換。程序引入變量odd表示移動(dòng)過程中 遇到的奇數(shù)個(gè)數(shù)。
    void moveOddFront(int a[]){
    for(int i=0, odd=0; ______;i++)
    if( a[i] %2 == 1){
    int t = a[odd]; a[odd]=a[i]; a[i]=t;______;
    }
    }
    28.以下程序的界面包含一個(gè)文本區(qū)text和一個(gè)允許多選的列表list,列表的條目存于字 符串?dāng)?shù)組sports[]中,當(dāng)列表發(fā)生選擇事件時(shí),事件處理程序?qū)⑦@次選中的所有條目 在文本區(qū)中輸出。這里給出的是其中處理列表事件的方法。
    public void valueChanged(________e){
    if (e.getSource()==list){
    text.setText(null);
    int tempList[]=list. getSelectedIndices();∥獲得選中索引表
    for (int i=0;i < tempList.length; i++)∥對(duì)索引表中的每個(gè)元素顯示被選中字樣
    text.append(sports[______]+":被選中\(zhòng)n");
    }
    }
    29.以下應(yīng)用程序創(chuàng)建一個(gè)窗口,窗口內(nèi)放置一個(gè)面板,在面板中顯示一張圖片和一段 文字。
    import javax.swing.*;import java.awt.*;
    public class Test29 {
    public static void main(String[] args) {
    MyFrame frame = new MyFrame();
    }
    }
    class MyFrame extends JFrame {
    public MyFrame(){
    setTitle("Test29"); setSize(300, 200);
    Toolkit tool=______;
    Image img = tool.getImage("myPic2.jpg");
    getContentPane().add(new MyPanel (img));
    setVisible(true);
    }
    }
    class MyPanel extends JPanel{
    Image myImg;
    MyPanel(Image img){ myImg=img;}
    public void paintComponent(Graphics g) {
    if(myImg!=null)g.______ (myImg, 100,30,this);
    g.drawString("我是一名自考生!",100, 140);
    }
    }
    30.類ShareDataManager用于管理多個(gè)線程共享數(shù)據(jù)data,其中定義了一個(gè)供線程修改 data的方法modiData()。為了對(duì)data的修改操作保持完整,多線程在data上的操作 有互斥要求;另外,限制線程對(duì)data的修改不能讓data為負(fù)數(shù),所以多線程在data 上的操作還有同步要求。以下是類ShareDataManager的定義。
    class ShareDataManager{
    int data;
    ShareDataManager(int init){data=init;}
    synchronized void modiData(int delta){
    if (data+delta>=0){ data+=delta;
    } else {
    while (data+delta<0){
    try{______}
    catch (InterruptedException e){}
    }
    data+=delta;
    }
    ______;
    }
    }
    31.某個(gè)緩沖式輸出的示意程序的界面有一個(gè)文本框fileOut和一個(gè)文本區(qū)text,程序運(yùn) 行時(shí),先在文本區(qū)中輸入要存入文件的內(nèi)容,接著在文本框中輸入文件名并回車, 則程序?qū)⑽谋緟^(qū)中的內(nèi)容保存到指定的文件中。以下是該程序中相應(yīng)文本框文件名 的輸入事件的方法。
    public void actionPerformed(ActionEvent e){
    if (e.getSource()==fileOut){
    try{
    out = new BufferedWriter(new ______ );
    out.______ ;
    out.flush(); out.close(); text.setText(null);
    } catch (FileNotFoundException el){
    System.out.print("文件沒有找到!\n");
    }catch (IOException exp){
    System.out.print("文件讀寫出錯(cuò)?。躰");
    }
    }
    }
    五、程序分析題(本大題共5小題,每小題4分,共20分)
    32.閱讀下列程序,請(qǐng)寫出該程序的輸出結(jié)果。
    class Mother{
    public voicl methodl(){
    System.out.println("Call Mother's methodl()");
    }
    public void method2(){
    System.out.println("Call Mother's method2()"); methodl();
    }
    }
    class Girl extends Mother{
    public void methodl(){
    System.out.println("Call Girl's methodl()");
    }
    public static void main(String args[]){
    Girl g= new Girl(); g.method2();
    }
    }
    33.閱讀下列程序,請(qǐng)寫出調(diào)用Test33(4)的輸出結(jié)果。
    public static void Test33(int n){
    int i,j,a[][]=new int[n][n];
    for(i=0;i    if(i%2==0)
    for(j=0;j    a[i][j]=j+1;
    else for (j=n-l;j>=0;j--)
    a[i][j]=n-j;
    }
    for(i=0;i    for(j=0;j    System.out.print("t"+ a[i][j]);
    System.out.println();
    }
    }
    34.閱讀下列程序,請(qǐng)回答以下問題:
    (1)在文本框中輸入1 7,在文本區(qū)中會(huì)顯示多少行整數(shù),各行有幾個(gè)數(shù)?
    (2)如果將程序的第一行刪除,程序中標(biāo)號(hào)①~⑨語句中哪些會(huì)出現(xiàn)錯(cuò)誤?
    import java.awt.*;∥問題(2)所指要?jiǎng)h除的行
    import javax.swing.*;
    import java.awt.event.*;
    public class Test34 extends JFrame implements ActionListener{
    JTextField textF; JTextArea textA;
    Test34(){
    Container con = getContentPane(); ∥①
    con.setLayout(new BorderLayout()); ∥②
    textF = new JTextField(10); ∥③
    textF.addActionListener(this); ∥④
    textA = new JTextArea(6, 10); ∥⑤
    setSize(240, 200); ∥⑥
    con.add(textF, "North"); ∥⑦
    con.add(textA, "Center"); ∥⑧
    setVisible(true); ∥⑨
    }
    public static void main(String[] args){
    new Test34();
    }
    public voicl actionPerformed(ActionEvent e){
    int n,d;
    if(e.getSource()==textF){
    n = Integer.parseInt(textF.getText());
    for (int k=1;k<=n; k++){
    d= (int) (Math.ranclom()*1000 % 1000);
    textA.append(" "+d);
    if(k%5==0)textA.append("");
    }
    }
    }
    }
    35.閱讀下列程序,請(qǐng)回答以下問題:
    (1)程序運(yùn)行時(shí),呈現(xiàn)的界面中菜單條有哪些菜單?
    (2)程序中帶注釋/*1*/的代碼行的作用是什么?
    import javax.swing.*;import java.a(chǎn)wt.*;import java.awt.event.*;
    class MenuWindow extends JFrame implements ActionListener{
    JTextField text;
    MenuWindow (String s,String menuList[][]){
    setTitle(s);
    Container con = this.getContentPane();
    con.setLayout(new BorderLayout());
    this.setLocation(100, 100); this.setSize(300, 100);
    JMenuBar menubar=new JMenuBar();
    for(int i=0;i< menuList.length; i++){
    JMenu menu = new JMenu(menuList[i][0]);
    for(int j=1;j    JMenuItem anItem=new JMlenuItem(menuList[i][j]);
    /*1*/ anItem.setActionCommand(menuList[i][j]);
    anItem.addActionListener(this); menu.add(anItem);
    }
    menubar.add(menu);
    }
    text = new JTextField(); setjMenuBar(menubar);
    con.add(text,BorderLayout.SOUTH);
    }
    public void actionPerformed(ActionEvent e){
    text.setText("<"+e.getActionCommand()+">菜單項(xiàng)被選中!");
    }
    }
    public class Test35{
    public static void main(String[] args){
    MenuWindow window;
    String menuList[][]={{"體育","跑步","打籃球","打乒乓"},
    {"娛樂","唱歌","跳舞"},
    {"學(xué)習(xí)","數(shù)學(xué)","語文"}};
    window=new MenuWindow("菜單示例程序",menuList);
    window.setVisible(true);
    }
    }
    36.閱讀下列程序,請(qǐng)回答以下問題:
    (1)程序要求在文本框text中輸入的內(nèi)容是什么?
    (2)程序采用什么輸入方式下載網(wǎng)絡(luò)文件?
    import java.net.*; import java.awt.*;
    import java.awt.event.*; import java.io.*; import javax.swing.*;
    public class Test36{
    public static void main(String args[]){
    new ConnectNet("讀取網(wǎng)絡(luò)文本文件示意程序");
    }
    }
    class ConnectNet extends JFrame implements ActionListener{
    JTextField text = new JTextField(30);
    JTextArea showArea=new JTextArea();
    JButton b= new JButton("下載"); JPanel p= new JPanel();
    ConnectNet(String s){
    super(s);Container con = this.getContentPane();
    p.add(text); p.add(b);
    JScrollPane jsp = new JScrollPane(showArea);
    b.addActionListener(this);
    con.add(p,"North"); con.add(jsp, "Center");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(500, 400); setVisible(true);
    }
    public void actionPerformed(ActionEvent e){
    String urlName=text.getText();
    try{ URL url: new URL(urlName);∥由網(wǎng)址創(chuàng)建URL對(duì)象
    URLConnection tc =url.openConnection();∥獲得URLConnection對(duì)象
    tc.connect();∥設(shè)置網(wǎng)絡(luò)連接
    InputStreamReader in =
    new InputStreamReader(tc.getInputStream());
    BufferedReader dis = new BufferedReader(in);
    String inLine;
    while((inLine=dis.readLine())!=null){
    showArea.append(inLine+"");
    }
    dis.close();
    } catch (MalformedURLException e2){e2.printStackTrace();}
    catch(IOException e3){ e3.printStackTrace();}
    }
    }
    六、程序設(shè)計(jì)題(本大題共2小題,每小題6分,共1 2分)
    37.編寫方法int[] arrayReverse(int[]a),該方法的功能是返回一個(gè)新的數(shù)組b,新數(shù)組的 元素排列順序與參數(shù)數(shù)組的元素排列順序相反。
    38.類InputData是用于輸入考生考號(hào)、課程和成績的窗口,窗口的界面如右圖所示,其中三個(gè)文本框用來輸入考號(hào)、課程和成績。
    
    注:這里是給定程序的部分代碼,你要編寫的是完成該類的構(gòu)造方法。
    import java.awt.*;import javax.swing.*;
    import java.awt.event.*;
    public class InputData extends JFrame implements ActionListener{
    JTextField noText, markText, courseText;
    JButton ok=new JButton("確 定");
    public static int no, mark;∥讓創(chuàng)建者直接獲取考號(hào)和成績
    public static String course;∥讓創(chuàng)建者直接獲取課程名稱
    InputData(){
    super("成績輸入窗");
    Container con = getContentPane();
    con.setLayout(new GridLayout(4, 1));
    noText = new JTextField(12);
    courseText = new JTextField(12);
    markText = new JTextField(12);
    ∥請(qǐng)?jiān)诖痤}紙相應(yīng)位置編寫代碼
    con.add(ok); ok.addActionListener(this);
    con.setSize(250, 70); setVisible(true); pack();
    }
    public void actionPerformed(ActionEvent e) {
    if (e.getSource() = ok) { ∥讀取考號(hào)和成績
    no = Integer.parseInt(noText.getText());
    course = courseText.getText();
    mark = Integer.parseInt(markText.getText());
    setVisible(false); dispose();
    }
    }
    public static void main(String[] args) {
    new InputData();
    }
    }