全國高等教育自學考試
Java 語言程序設計(一)試題
課程代碼:04747
一、單項選擇題(本大題共10小題,每小題1分,共10分)
在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內。錯選、多選或未選均無分。
1.下述字符組合不能作為Java程序標識符的是( )
A.Aa12 C.y小
B.大x D.5x
2.以下程序代碼的輸出的結果是( )
int x=53;
System. out. println(1.0+x/2);
A.27.0 C.1.026
B.27.5 D.1.026.5
3.參照以下Java代碼,以下四個敘述中最確切的是( )
class A{
int x; static int y;
void fac(String s){Syatem. out. println("字符串:"+s);} }
A.x、y和s都是成員變量
B.x是實例變量、y是類變量、s是局部變量
C.x和y是實例變量、s是參數
D.x、y和s都是實例變量
4.需要分析字符串,并將字符串分解成可被獨立使用的單詞,可使用java. util包中的類是( )
A.String C.StringTokenizer
B.StringBuffer D.stringTokenizer
5.要為程序的子窗口設定一個由字符串s指定的名字,可以采用的代碼是( ) A.JFrame(s) C.new JFrame(s)
B.window(s) D.super(s)
6.以下關于菜單的敘述中,正確的是( )
A.菜單分三級定義,最高一級的是菜單條,菜單條中放菜單,菜單中放菜單項 B.菜單分三級定義,最高一級的是菜單,菜單中放菜單條,菜單條中放菜單項 C.菜單分兩級定義,最高一級的是菜單,菜單中放菜單項 D.菜單分兩級定義,最高一級的是菜單條,菜單條中放菜單項
7.以下所述內容全部是字型要素的是( )
A.字體、字形和大小 C.字形、風格和字號
B.字體、風格和字號 D.字形、顏色和字號
8.用Thread子類實現多線程的步驟順序是( )
A.聲明Thread類的子類,創建Thread子類的實例,讓線程調用start()方法
B.聲明Thread類的子類,在子類中重新定義run()方法,創建Thread子類的實例
C.創建Thread子類的實例,讓線程調用start()方法
D.聲明Thread類的子類,在子類中重新定義run()方法,創建Thread子類的實例,讓線程
調用start()方法
9.為16位Unicode字符流提供讀和寫操作支持的類分別是( )
A.FileInputStream類和FileOutputStream類
B.InputStream類和OutputStream類
C.FileReader類和FileWriter類
D.File_Reader類和File_Writer類
10.能利用對象提供的方法獲得流對象和實現網絡連接的是( )
A.URLConnection對象 C.InetAddress對象
B.URL對象 D.TCP/IP對象
二、填空題(本大題共10小題,每小題2分,共20分)
請在每小題的空格中填上正確答案。錯填、不填均無分。
11.一個小應用程序必須定義成一個_________。
12.用條件運算符構造一個表達式:goal等于10時,表達式的值為“對了!”,否則,表達式的值為“錯了!”。這個表達式是_________。
13.類是對一組相同對象的描述,類概括了同類對象的共有性質:_________。 14.設有數組a和b的定義如下: int[]a={1,2,3};int[]b={4,5,6}
執行以下代碼“a=b;”,除了完成賦值操作之外,引起系統額外要做的工作是_________。 15. _________布局使容器的多個組件擁有同一個顯示空間,某一時刻只能顯示一個組件。 16.Java語言為處理鼠標事件提供兩個接口:_________接口和MouseMotionListener接口。 17.某個繪圖方法設置成“異或模式”繪圖,并用黃色作為異或模式設定的繪圖顏色。如果當時背景色為紅色,并用紅色繪制線段,則線段的實際顏色是_________。
18.程序員用Java語言編寫多線程應用程序,程序員能控制的關鍵性工作有兩個方面:一是編寫線程的_________方法;二是建立線程實例。
19.BufferedWriter類是提供緩沖式輸出的類。程序需要先創建_________對象,再利用這個
對象創建BufferedWriter對象。
20.在Java語言中,客戶端使用的套接字類是_________。 三、簡答題(本大題共6小題,每小題3分,共18分)
21.請寫出表示條件“x=2與y=3有且只有一個成立”的Java表達式”。
22.如果類Student是類Person的子類,類Undergraduate是類Student的子類,請指出以下代碼行中哪些是不合法的。 Person p1=new Student(); Person p2=new Undergraduate(); Student s1=new Person(); Student s2=new Undergraduate(); Undergraduate ug1=new Person(); Undergraduate ug2=new Student(); Object ob=new Student();
23.請寫出程序處理文本框輸入結束事件(回車)添加監視器的方法,以及監視器類必須實現的接口方法。
24.請寫出一條語句,能夠繪制一條從點(20,30)開始,長為100像素的水平線段。設調用的對象是類型為Graphics的g。
25.某Java程序要使用文件輸入輸出流,請寫出該程序所需要的import語句。 26.JDBC是Java程序與數據庫連接的API,請寫出JDBC能做的三件事情。 四、程序填空題(本大題共5小題,每空2分,共20分)
27.方法int maxDigit(int n)的功能是找出十進制整數n各位中最大的一位數字。例如,n=23765,該方法的返回值是7。 static int maxDigit(int n){ int c=0,d; while(n>0){
d=_______; if(d>c) c=d; n/=10; } ________; }
28.某程序的界面包含一個文本區text1、一個文本框text2和一個按鈕button。實現在文本區中輸入整數序列后,點擊按鈕,程序響應按鈕事件,累計文本區輸入的整數序列,并將總和輸出在文本框中。這里給出的是其中相應按鈕事件的方法。
public void actionPerformed(ActionEvent e){
int sum;
if(e.getSource()==button){
String s=text1.________;//獲取text1中的信息 StringTokenizer fenxi=new StringTokenizer(s,",,,\n"); int n=fenxi.countTokens(); double a[]=new double[n]; for(int i=0;i<n;i++){
String temp=fenxi.nextToken();
a[i]=Double.valueOf(temp).doubleValue(); } sum=0;
for(int i=0;i<n;i++){
__________; }
text2.setText(""+sum);//刷新顯示。 } }
29.以下是生成菜單項對象,以及菜單項選擇事件處理方法的部分代碼。要求當菜單項singingItem被選中時,在文本框text中輸出“唱歌菜單項被選中!”的字樣。
singingItem=new________("唱歌");//生成菜單項對象
public void actionPerformed(ActionEvent e){
if(e.getSource()==singingItem)
text.setText(e.________()+ "菜單項被選中!"); }
30.某小應用程序實現幻燈片放映。小應用程序的init()方法將幻燈片讀入數組中存儲和注冊鼠標監視器。程序運行時,單擊鼠標,就順序變換放映幻燈片的序號。這里給出的是其中的paint()方法和mousePressed()方法。
final int number=30;//假定幻燈片有30張 int count=0;
Image[]pic=new Image[number]; public void paint(______gc){
if((pic[count])!=null)
gc.drawImage(pic[count],10,10,pic[count].getWidth(this),
pic[count].getHeight(this),this);
}
public void mousePressed(MouseEvent e){
count=(count+1)% number;//循環逐張顯示 __________; }
31.以下定義的類shareDataManager用于管理多個線程共享數據data。一些線程要減少data,另一些線程要增加data。由于data不可以是負值,修改data的方法對這些線程來說不僅要互斥,還要同步。類提供一個方法modiData()供修改data的線程調用,該方法在data修改結束后,應通知其它等待進入這個方法的線程。 class ShareDataManager{ int data=0;
________void modiData(int delta){
if(delta>=0){
data+=delta; }else {
while(data <delta){
try{System.out.println("發生等待!");
wait();
}catch(InterruptedException e){ } }
data-=delta; }
_________; }
ShareDataManager(int ititData){data=initData;} }
五、程序分析題(本大題共5小題,每小題4分,共20分) 32.閱讀下列程序,請寫出該程序的輸出結果。 import java.applet.*;import java.awt.*; class Point{
int x,y;
Point(int xx,int yy){ x=xx;y=yy;} Point(Point p){x=p.x;y=p.y; } void m(int dx,int dy){x+=dx;y+=dy;} }
class Circle extends Point{
int r;
Circle(Point p, int rr){ super(p); r=rr; } float c(){ return 3.14f*2.0f*r; } float a(){ return 3.14f*r*r;} }
public class sample extends Applet{
Circle yuan; Point d;
public void init() {d=new Point(2,5);yuan=new Circle(d,10);} public void paint(Graphics g){
g.drawString("yuan Circle"+(int)(yuan.c()*100.0)/100.0,5,20); g.drawString("yuan Area"+(int)(yuan.a()*100.0)/100.0,5,40); } }
33.閱讀下列程序,請寫出該程序的功能。
import java. util.*; public class Class1{
public static void main(Srting args[]){
Date date1=new Date(); System. out. println (datel); String t=datel.toString(); int endPos=t.indexOf(`C'); t=t.substring(11,endPos); System. out println(t); } }
34.閱讀下列程序,請寫出該程序的功能。
import java.applet.*;import javax.swing.*;import java.awt.event.*; public class Class l extends Applet implements ActionListener{
JTextField text1,text2;
public void init(){
text1=new JTextField(10); text2=new JTextField(10); setSize(200,100); add(text1); add(text2); text1.addActionListener(this); }
public void actionPerformed(Action Event e){
long n;
if(e.getSource()==text1){
n=Long.parseLong(text1.getText()); text2.setText(String.valueOf(n*n)); } } }
35.閱讀以下程序,請寫出該程序的功能。
import javax.swing.*; import java.awt.*;import java.awt.event.*; class MyScrollBar extends JscrollBar{
public MyScrollBar(int init, int len, int low, int high){
super(JScrollBar. HORIZONTAL, init,len,low,high); } }
class MyWindow extends JFrame implements AdjustmentListener{
private JTextField text; MyWindow(String s){
super(s);
MyScrollBar myBar=new MyScrollBar(10,10,0,255); Container con=this. getContentPane(); con. setLayout(new GridLayout(2,1)); this. setSize(200,100); this. setLocation(100,100); myBar.addAdjustmentListener(this); text=new JTextField("",20); con. add(text);con.add(myBar); this.setVisible(true); }
public void adjustmentValueChanged(AdjustmentEvent e){
MyScrollBar myBar=(MyScrollBar)e.getAdjustable(); text.setText(""+myBar.getValue()); } }
public class Class1{
public static void main(String[]args){
MyWindow myWindow=new MyWindow("text5_4"); } }
36.小應用程序創建一個線程。例子使用容器類方法getGraphics()獲得Graphics對象,給線程作為畫筆使用。請寫出該程序中這個線程的工作內容。 import java.applet.*;import java.awt.*;
public class Class1 extends java.applet.Applet implements Runnable{
Thread redBall;Graphics redPen; int rx=0,ry=0; public void init(){
setSize(250,200); redBall =new Thread(this); redPen=getGraphics(); redPen. setColor(Color.red); setBackground(Color.gray); }
public void start(){ redBall.start(); } public void run(){
while(true){
if(Thread.currentThread()==redBall){
rx=(int)(80*Math.random()); ry=(int)(80*Math.random()); red Pen.setColor(Color.red);
red Pen.fillOval(100+rx,100+ry,10,10); try{redBall.sleep(500);} catch(InterruptedException e){} redPen.setColor(Color.gray);
redPen.fillOval(100+rx,100+ry,10,10); } } } }
六、程序設計題(本大題共2小題,每小題6分,共12分)
37.編寫一個方法halfArray(),要求該方法有一個元素類型為int的數組參數,方法返回一
個新數組,新數組的長度與參數數組的長度相同,而新數組元素的值是參數數組各元素的一半。
38.一個Java小應用程序,界面有三個文本框和兩個按鈕,前兩個文本框用于輸入整數,
第三個文本框用于輸出結果。兩個按鈕分別表示加和減運算。當前兩個文本框輸入整數后,點擊相應按鈕,程序就將計算結果輸出在第三個文本框中。以下是程序的大部分,其中監視按鈕事件的方法未給出,試編寫處理按鈕事件的方法。
注:這里是給定部分的程序,你要編寫的是actionPerformed(ActionEvent e)方法。 import java.applet.*;import javax.swing.*; import java.awt.*; import java.awt.event.*; class Panel1 extends JPanel{
JTextField text1, text2, text3;JButton addButton,subButton; Panel1(){
text1=new JTextField(10);text2=new JTextField(10); text3=new JTextField(10);setLayout(new GridLayout(5,1));
addButton=new JButton("加");subButton=new JButton("減"); add(text1); add(text2);
add(text3); add(addButton); add(subButton); } }
public class Classl extends Applet implements ActionListener{
Pane1 panel; public void init(){
setSize(100,200); panel=new Panel1();add(panel); (panel.addButton).addActionListener(this); (panel.subButton). addActionListener(this); }
public void actionPerformed(ActionEvent e){