2012年1月自學考試Java語言程序設計(一)試題
課程代碼:04747
一、單項選擇題(本大題共10小題,每小題1分,共l0分)
在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內。錯選、多選或未選均無分。
1.下面供選字符序列中,不屬于...Java語言關鍵字的是( A )
A.inner
C.false
2.表達式“-1>>>1”的十進制值是(B )
A.-2
C.-(231-1) B.231-1 D.232-1 B.throw D.throws
3.Java語言中,在類定義時用final關鍵字修飾,是指這個類( C )
A.子類必須實現父類未實現的方法
C.必須要有實例 B.沒有具體實現代碼 D.不能被繼承
4.表達式 "java程序設計".1ength() 的值是( C )
A. 0
C. 8 B.12 D.13
5.以下關于BorderLayout布局的敘述中,不正確的是( C ) ...
A.把容器內的空間劃分成5個區域
C.是框架窗口的默認布局 B.加入組件應該指明要放入的區域 D.一個位置可直接放多個組件
6.利用文件對話框打開或保存文件,在打開文件對話框之前,可用FileFilter類設置篩選條件,其所用的兩個方法是(C )
A.accept()和getSelectedFile()
C.accept()和setDescription() B.accept()和getDescription() D.setDescription()和getDescription()
7.設已經有Graphics2D對象g2d,RoundRectangle2D對象rRect,繪制對象rRect的代碼是( B )
A.g2d.draw(rRect)
B.g2d.drawRoundRect(rRect) 1
C.rRect.draw() D.rRect.drawRoundRect()
8.以下關于線程互斥和同步的敘述中,正確的是( D )
A.臨界段是線程互斥使用資源的程序段
C.互斥和同步能很好地解決死鎖問題 B.臨界段能使線程使用其它線程的資源 D.可用notify()方法讓等待線程結束等待
9.在編寫訪問數據庫的Java程序時,Connection對象的作用是( C )
A.存儲查詢結果
C.用來表示與數據庫的連接 B.在指定的連接中處理SQL語句 D.用來創建數據庫的連接
10.獲取InetAddress對象的域名所用到的方法是( C )
A.getHostName()
C.getHostAddress() B.getLocalName() D.getLocalHost()
二、填空題(本大題共10小題,每空2分,共20分)
請在每小題的空格中填上正確答案。錯填、不填均無分。
11.能在瀏覽器上執行的Java程序被稱為____________。
12.如果子類A隱藏了超類B的成員變量x,而類A的某個方法f()要引用類B的x,則引用類B的x的引用代碼可以寫成____________。
13.接口有與類相似的基本形式,它有常量定義和方法定義,但沒有____________。
14.設u和v是類A的兩個對象,則邏輯表達式“u==v”的意義是____________。
15.要獲得對象的字符串表示,調用的方法是____________。
16.注冊鼠標點擊事件監視器的方法是__mouseListener_()_________。
17.在異或模式下繪圖時,實際繪制的顏色是由當前正要繪制的顏色、原先繪制的顏色,以及____________作特定的運算確定的。
18.多線程程序設計中,讓執行臨界段程序時等待的線程結束等待,通常使用的方法有resume()、notify()或者____________。
19.創建的流既可以隨機輸出,也可以隨機輸入的類是____________。
20.Java程序中使用套接字方法實現C/S模式時,在Client端支持網絡底層通訊的類是____________。
三、簡答題(本大題共6小題,每小題3分,共18分)
21.請寫出以下程序段的執行結果。
int c=0,d,n=3758;
while(n>0){ if((d=n%l0)>c) c=d;n/10;}
System.out.println("結果="+c);
22.什么是方法重載,如何正確區分重載?
23.請寫出定義一個包含2個子數組的二維整型數組對象aArr的代碼,其中第一個子數組有5個元素,第二個子數組有3個元素。
24.請寫出創建一個JPanel對象p,并為對象p設定GridLayout布局的代碼。
JPanel p=new JPanel();
setGridLayout(d);
25.由于創建輸出流對象時,可能會出現IOException異常,所以創建輸出流對象的代碼必須出現在try-catch語句結構中。請寫出為當前目錄下的myFile.dat文件創建緩沖輸出流對象outs的代碼。
26.請寫出已知數據庫url、用戶名uName和密碼pWord,通過驅動程序管理器(DriverManager)的方法getConnection()建立連接con的代碼,可能產生的異常是SQLException。
四、程序填空題(本大題共5小題,每空2分,共20分)
在每小題的空格中填上正確答案,完全代碼,使它能正確實現題意的功能。錯填、不填均無分。
27.方法int tenDigNumlnArray(int []a,int d)的功能是統計數組中十位數是d的整數的個數。 提示:對于一個整數n,運算n/10的作用是求得去掉n的個位數后的整數,運算n%10的作用是求得n的個位數。
static int tenDigNumlnArray(int []a,int d){
int c=0;
for(int i=0;__i>d________;i++){
if(__________)c++;
}
return c;
}
28.某小應用程序的類實現了接口ActionListener,在其窗口有一個文本區對象text和一個標上文字“輸入一個整數”的按鈕對象,并正確為該按鈕對象注冊了監視器。按鈕處理程序要實現的功能是當點擊這個按鈕時,程序彈出一個輸入信息的對話框,輸入一個整數n,程序接受n后,將2至n的所有偶數輸出在文本區text中。以下是其中處理按鈕事件的方法。
public void actionPerformed(ActionEvent e){
if(e. __________.equals("輸入一個整數")){
String res=(String) JOptionPane.showInputDialog(null, "輸入一個正整數",
"輸入對話框",JOptionPane.PLAIN_MESSAGE,null,null,null);
n=Integer.parseInt(res);
text.setText("");.
for(int k=2;k <= n;k+=2)
text._____________;
}
}
29.一個示意選擇框選擇的類CheckBoxWin,類的構造方法根據給定的選擇項目表構造一組選擇框,這組選擇框允許多選,當這組選擇框中的某個選擇項的選擇狀態有改變(從選中變成未選中,或從未選中變成選中)時,選擇框的監視程序在一個文本區中輸出那個狀態有改變的選擇項目。以下是類CheckBoxWin的定義。
class CheckBoxWin extends JFrame implements ItemListener{
JPanel p=new JPanel();
JTextArea text;
String[]nameList;
JCheckBox boxArray[];
CheckB oxWin(String[]sp){
Container con=getContentPane();
con.setBackground(Color.BLUE);
con.setLayout(new FlowLayout());
p.setSize(90,(sp.1ength)*20);
p.setLayout(new GridLayout(sp.1ength,1));
nameList=sp;
boxArray=new JCheckB ox[sp.1ength];
for(int i=0;i
JCheckBox box=new JCheckBox(sp[i]);
box._________________;
p.add(box);
boxArray[i]=box;
}
con.add(p);
text=new JTextArea(3,13);
text.setText("");
JScrollPane jsp=new JScrollPane(text);
jsp.setSize(100,60);
con.add(jsp);
setSize(100,(sp.1ength)*20+120);
setLocation(100,100);
setVisible(true);
}
public void itemStateChanged(ItemEvent e){
for(int i=0;i
if(e.getItemSelectable()==_______________________ ){
if(boxArray[i].isSelected())
text.append(nameList[i]+".從未選中變成被選中\n");
else
text.append(nameList[i]+":從選中變成未被選中\n");
return;
}
}
}
}
30.以下是一個JPanel的子類的paintComponent方法,該方法利用Graphics2D繪制一個正方形,正方形的位置、邊長和顏色分別存于該類的成員變量lTop、edge和c中。
int edge; Point 1Top; Color c;
public void paintComponent(Graphics g){
Graphics2D g2=(Graphics2D)g;
g2.setColor(c);
Rectangle2D rec=new Rectangle2D.____________(1Top.x,lTop.y,edge,edge);
_____________;
}
31.以下小應用程序的界面有一個文本區,文本區同時作為發生鍵盤事件的事件源,并對鍵盤事件實施監視。程序運行時,先點擊文本區,讓它激活,以便能響應鍵盤事件。以后輸入英文字母時,在文本區中順序顯示輸入的字母。
import java.applet.*;import javax.swing.*;
import java.awt.*;import java.awt.event.*;
public class Test31 extends Applet implements____________{
JTextArea text=new JTextArea(5,10);
public void init(){setSize(200,200);
__________________________;
text.setBackground(Color.gray); add(text);
}
public void keyPressed(KeyEvent e){}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){
int t=e.getKeyCode();
if(t>=KeyEvent.VK_A&&t<=KeyEvent.VK_Z){
text.append(""+(char)t);
}
}
}
五、程序分析題(本大題共5小題,每小題4分,共20分)
32.閱讀下列程序,請寫出該程序的功能。
public class Test32
{ public static void main(String args[])
{ double sum=0.0;
For (int i=1; i<=500;i++)
sum+=1.0/(double)i;
System.out.println( "sum="+sum);
}
}
33.閱讀下列程序,請回答以下問題:
(1)界面中有哪些組件?
(2)點擊每一個按鈕分別會顯示什么內容?
import java.applet.*; import java.awt.*;
import java.awt,event.*;import javax.swing.*;
public class Test33 extends Applet implements ActionListener{
String msg="";
String buttonCom[]={"Yes","No","Undecided"};
JButton bList[]=new JButton[buttonCom.length];
JTeXtField t;
public void init(){
setLayout(new GridLayout(4,1));
for(int i=0;i
bList[i]=new JButton("按鈕"+(i+1));
add(bList[i]);
bList[i].addActionListener(this);
}
t=new JTeXtField();
add(t);
}
public void actionPerformed(ActionEvent e){
for(int i=0;i<3;i++){
if(e.getSource()一bList[i]){
t.setTeXt("You pressed"+buttonCom[i]);
break;
}
}
}
}
34.閱讀下列程序,請寫出該程序的功能。
import java.io.*; import java.awt.*; import javax.swing.*;
import java.awt.event.*;
class MyWindow extends JFrame implements ActionListener{
JTextArea text;BufieredReader in;JTextField fileName;
FileReader file;
MyWindow(){
Contaiher con=this.getContentPane();//獲得內容面板
con.setLayout(new BorderLayout());
fileName=new JTextField("輸入文件名");
fileName.addActionListener(this);
text=new JTextArea(20,30);
JScrollPane jsp:new JScrollPane(text);
con.add(jsp,BorderLayout.CENTER);
con.add(fileName,"South");setVisible(true);
}
public void actionPerformed(ActionEvent e)
{ String s;
try{File f=new File(fileName.getText());
file=new FileReader(f);
in=new BufferedReader(file);
} catch(FileNotFoundException el){}
try{ while((s=in.readLine())!=null)
text.append(s+'\n');
}catch(IOException exp){}
}
}
public class Test34{
public static void main(String args[ ]) {new MyWindow();}
}
35.閱讀下列程序,請回答以下問題:
(1)該程序中的類MyPanel的成員變量twoClick的作用是什么,該成員變量的值是如何改變的?
(2)程序運行時,用戶在界面的不同位置,用鼠標點擊兩次,界面中會出現什么? import java.awt.*;import javax.swing.*;import java.awt.event.*;
class MyPanel extends JPanel implements MouseListener{
int leftx,lefly,rightx,righty;
boolean twoClick;
MyPanel() {
twoClick=false;addMouseListener(this);
}
public void mousePressed(MouseEvent e){
if(!twoClick){
leftx=e.getX();lefty=e.getY();
}else{
rightx=e.getX();righty=e.getY();repaint();
}
twoClick=!twoClick:
}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void paintComponent(Graphics g){
g.clearRect(0,0,this.getWidth(),this.getHeight());
g.fillRect(1efix,lefty,Math.abs(rightx-leftx),
Math.abs(righty-lefty));
}
}
class MyWin extends JFrame{
MyPanel p=new MyPanel();
MyWin(){
getContentPane().add(p);
setSize(400,400);setLocation(100,100);setVisible(true);
}
}
public class Test35 extends JFrame{
public static void main(String[]args){new MyWin();}
}
36.閱讀下列程序,請回答以下問題:
(1)程序執行時創建的線程個數。
(2)各線程的名稱。
(3)舉例給出程序可能的輸出結果。
class SeltManaged extends Thread{
int countDown;
public SelfManaged(String name,int c){
countDown=c;
setName(name);start();
}
public void run(){
while(true){
System.out.println(getName()+" ("+countDown+")");
try{
sleep(50);
}catch(InterruptedException e){};
if(--countDown== 0)
return;
}
}
}
public class Test36{
public static void main(String[]args){
for(int i=0;i<2;i++)
new SelfManaged("線程"+String.valueOf(i),2);
}
}
六、程序設計題(本大題共2小題,每小題6分,共12分)
37.編寫方法int[] delete(int []a,int d),方法將創建一個新數組b,新數組b中只包含原數組中所有值不等于d的元素,并返回該新數組b。
38.以下程序的界面有一個按鈕ave、一個文本區text和一個標簽label。程序運行時,在文本區中輸入數字序列,單擊ave按鈕,則在標簽label中顯示這個數字序列中正實數的平均值。
注:這里是給定程序的部分代碼,你要編寫的是actionPerformed(ActionEvent e)方法。 import javax.swing.*;
class Ave extends JFrame implements ActionListener{
JLabel label 1,label; JTextArea text; JButton ave; Ave() {
Container con=getContentPane();
con.setLayout(new GridLayout(2,2));
labell=new JLabel("輸入整數序列");
text=new JTextArea(5,10);
ave=new JButton("求正實數平均值");
label=new JLabel();
con.add(1abel 1);con.add(text);con.add(ave); ave.addActionListener(this);
con.add(1abel);
}
public void actionPerformed(ActionEvent e){
∥請在以下位置編寫代碼
}
}
class Test38{
public static void main(String args[]){new Ave(); } }