全国2009年10月高等教育自学考试
Java语言程序设计(一)试题
课程代码:04747
一、单项选择题(本大题共10小题,每小题1分,共10分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.下面供选字符序列中,不属于Java语言关键字的是( )
A.goto B.null C.false D.native
2.以下程序代码的输出结果是( )
int x=73;System.out.println(x>>1);
A.36 B.36.5 C.37 D.true
3.Java语言中,在类定义时用final关键字修饰,是指这个类( )
A.不能被继承 B.在子类的方法中不能被调用
C.能被别的程序自由调用 D.不能被子类的方法覆盖
4.以下是关于字符串运算的代码,执行该代码段的输出结果是( )
String s=″0123456789″,sl,s2;
sl=s.substring(2);s2=s.substring(2,5);System.out.println(s1+s2);
A.0122345 B.234567892345 C.012234 D.23456789234
5.以下是关于FlowLayout布局组件排列顺序的叙述,正确的是( )
A.从上到下排列 B.从左到右排列 C.从下到上排列 D.从右到左排列
6.程序执行方法showOpenDialog(),能打开“打开文件对话框”,如果该方法的返回值是JFileChooser.APPROVE_OPTION,则用户执行的动作是( )
A.对话框非正常关闭 B.按下“打开/保存”按钮
C.按下“撤销”按钮 D.重新输入了一个文件名
7.设已经有Graphics2D对象g2d,Rectangle2D对象r,绘制对象r的代码是( )
A.g2d.draw(r) B.g2d.drawRect(r) C.r.draw() D.r.drawRect()
8.在以下供选择的方法中,能让线程从阻塞状态恢复到就绪状态的方法是( )
A.start() B.init() C.resume() D.run()
9.在以下供选择的方法中,不能用于文件随机访问的方法是( )
A.readChar() B.readLong() C.readInteger() D.writeChars()
10.某程序利用网址参数创建URL对象url,接着希望利用对象url获得URLConnection对象,则这个url对象要调用的方法是( )
A.connection() B.URLConnection() C.getConnection() D.openConnection()
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案。错填、不填均无分。
11.一个应用程序必须在某个类中定义的方法是______。
12.import语句的格式是______。
13.在面向对象语言中,对象之间的交互通过______实现。
14.设有两个字符串对象str1和str2,则表达式“strl==str2”的意义是判别字符串strl和str2______。
15.一个基于Swing的应用程序可能在任何平台上都会有相同的______。
16.处理键盘事件的Java程序,要实现的接口是______。
17.Java语言约定,坐标原点位于绘图区域的______。
18.Java程序中,在临界段中使用______方法,使执行该方法的线程等待。
19.BufferedWriter类对象能按行输入文件的内容,按行输入的方法是______。
20.在java.net包中有InetAddress类的定义,Java程序中的InetAddress类对象存储的内容是______。
三、简答题(本大题共6小题,每小题3分,共1 8分)
21.请写出实现计算y=|x|的if语句。
22.以下代码定义了一个类,请指出其中三条不合法的代码行(行号参见注释)。
class Test22{ //1
float u;static float v; //2
static void setUV(boolean f){ //3
u=fac1(f); //4
v=fac2(!f);} //5
static float facl(boolean f){return f?u:v;} //6
float fac2(boolean f){return f?v:u;} //7
} //8
23.在java.awt.event中,用来检测并对事件做出反应的模型涉及三种对象。请写出这三种对象。
24.写出设置Font对象fn的Java语句,要求Courier字体,BOLD风格,18磅字号,设调用对象的类型为Graphics的g。
25.通过流的构造方法建立文件流对象,请写出创建输入输出文件流对象的两种常用构造方法。
26.当Client程序和Server程序需要通信时,可以用Socket类建立套接字连接,请写出双方实现通信的两种方式。
四、程序填空题(本大题共5小题,每空2分,共20分)
27.方法int sigmaEvenNum(int[]a)的功能是求已知数组中偶数的个数。
static int sigmaEvenNum(int []a){
int s =0;
for ( int i=0;______;i++ ) {
if(______) s++;
}
return s;
}
28.某小应用程序窗口包含有文本区dispArea,以及一个带文字“追加”的按钮。当点击这个按钮时,程序弹出一个输入信息的对话框,并将对话框中输入的内容追加到文本区中。以下是其中相应“追加”按钮事件的方法。
public void actionPerformed(ActionEvent e){
if(e.______.equals("追加")){
String result=(String)JOptionPane.showInputDialog(null,"请输入信息",
"输入对话框",JOptionPane.PLAIN_MESSAGE, null, null,null);
dispArea.______(result + " ");
}
}
29.以下程序段是选择项目事件处理程序的样例,一个由3个单选按钮组成的选择组被定义为一个面板子类Panel,当某个按钮被选中时,按钮监视程序在类MyWindow的一个文本框中输出某个按钮被选中的字样。以下是类Panel的定义。
class Panel extends JPanel implements ItemListener{
static JRadioButton box[];
ButtonGroup g;
Panel(String radioNameList[]) {
box=new JRadioButton[radioNameList.length];
setLayout(new GridLayout(1, radioNameList.length));
g=new ButtonGroup();
for(int i=0;i<radioNameList.length; i++){
box[i] = new JRadioButton(______,false);
g.add(box[i]);add(box[i]);box[i].addItemListener(this);
}
}
public void itemStateChanged(ItemEvent e){
for(int i = 0; i < box.length; i++){
if(box[i]._______) {
MyWindow.text.setText(box[i].getLabel()+"被选中!");
}
}
}
}
30.用getImage()方法和drawImage()方法能加载和显示图像。以下程序加载的是seattle.jpg文件,并假定该文件与包含这个小应用程序的HTML文件在同一个目录下。
import java.awt.*; import java.applet.*;
public class SimpleImageLoad extends Applet{
Image img;
public void init() {
img = getImage(______,"seattle.jpg");
}
public void paint(Graphics g) {
g.drawImage(img, 0, 0, ______);
}
}
31.以下程序段定义的类ShareDataManager用于管理多个线程共享数据data。为了对data的取、存和修改操作保持完整,多线程在data上的操作有互斥要求;另外,限制线程对data的修改不能让data为负数,所以多线程在data上的操作还有同步要求。为此,程序为管理data上的操作定义成类,以下是管理共享数据data的类ShareDataManager的代码。
class ShareDataManager {
int data;
ShareDataManager(int init){data = init; }
public int getData(){ return data;}
private void putData(int newValue){ data = newValue;}
synchronized void modiData(int delta){
if (delta >= 0) {putData(getData()+ delta);
} else {
while (______<0) {
try {wait(); } catch (InterruptedException e) { }
}
putData(getData()+ delta);
}
______;
}
}
五、程序分析题(本大题共5小题,每小题4分,共20分)
32.阅读下列程序,请写出该程序的输出结果。
class Tree {
private String name;public boolean flower;
public int birthYear;
Tree(String n, boolean f, int y){ name = n; flower = f; birthYear = y; }
public void setName(String n){name = n;}
public String getName(){return name; }
public void printTree(String str){
System.out.println(str); System.out.println("Name:"+name);
System.out.println("Birth Year:"+birthYear);
System.out.println("Flower:"+flower);
}
}
class PineTree extends Tree {
public boolean coniferous = true;
PineTree(String n, boolean f, int y, boolean c){super(n, f, y);coniferous = c; }
public void printTree(String str){
super, printTree(str);
System.out.println("Coniferous:" + coniferous);
}
}
class Test32 {
public static void main(String []args){
Tree fOb = new Tree("May Flower", true, 1980);
PineTree sOb = new PineTree("Pine", false, 2000, true);
fOb.printTree(" fOb:"); sOb.printTree("sOb:");
}
}
33.阅读下列程序,请写出该程序的输出结果。
class Test33 {
static void s (int b[ ], int k) {
int i, j, t;
for(i = 1;i< k; i++) {
for(t = b[i], j = i-1; j >= 0 && t < b[j]; j--)
b[j+l] = b[j];
b[j+ 1 ] = t;
}
}
public static void main(String []args){
int i, a[] = {6, 12, 7, 11, 5 };
s(a, 5);
for(i = 0;i< a.length; i++) System.out.print(a[i]+" ");
System. out. Println();
}
}
34.阅读下列程序,请写出该程序的功能。
import java.applet.*; import javax.swing.*;
import java.awt.*; import java.awt.event.*;
public class Test34 extends Applet implements ActionListener {
JTextField text;int r; JPanel panel;
public void paint(Graphics g){
Graphics gc = panel.getGraphics();
gc.clearRect(0,0, panel.getWidth(), panel.getHeight());
gc.setColor(Color.red); gc.fillOval(10, 10, r, r);
}
public void init() {
text = new JTextField(10); panel = new JPanel();
setSize(200, 100); setLayout(new GridLayout(2,1));
add(text); add(panel); text.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == text) {
r = Integer.parseInt(text.getText());
repaint();
}
}
}
35.阅读下列程序,请回答以下问题:
(1)该程序的菜单条中共有几个菜单项?
(2)单击哪个菜单项,可以打开一个对话框?
(3)该对话框是强制型还是非强制型?
(4)该对话框中显示的是什么内容?
Import javax.swing.*;import java.awt.*;
import java.awt.event.*; import java.util.*;
class MyDialog extends JDialog {
MyDialog(JFrame F, String s) {
super(F, s, false); Date date = new Date();
String t = date.toString(); JLabel text = new JLabel(t);
add(text); setSize(200,100); setVisible(true);
}
}
public class MenuDemo extends JFrame implements ActionListener {
JMenuBar menubar; JMenu action;
JMenuItem show, set, quit;
public MenuDemo() {
menubar = new JMenuBar(); setJMenuBar(menubar);
action = new JMenu(''操作''); menubar.add(action);
show= new JMenuItem(''显示''), action.add(show);
set = new JMenuItem("设置"); action.add(set);
action.addSeparator(); quit = new JMenuItem("退出");
action.add(quit); show.addActionListener(this);
set.addActionListener(this); quit.addActionListener(this);
setSize(300,300); setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == show) {MyDialog diag = new MyDialog(this, "信息");}
else if(e.getSource()== set) { this.setTitle("菜单演示");}
else if(e.getSource() == quit){ System.exit(0); }
}
public static void main(String[] args) {new MenuDemo();}
}
36.阅读以下程序,请写出该程序的输出结果。
class CurrentThreadDemo {
public static void main(String args[]) {
Thread t = new Thread(); System.out.println("Current thread");
t.setName("My Thread"); System.out.println("After name change");
try {for(int n = 3; n > 0; n--) {
System.out.println(n); Thread.sleep(1000);
}
} catch (InterruptedException e) {
System.out.println("Main thread interrupted");
}
}
}
六、程序设计题(本大题共2小题,每小题6分,共12分)
37.编写方法int searchMaxNumIndex(int[]a),寻找已知数组中最大数的下标并返回。
38.以下程序的界面有一个按钮button、一个文本区textA和一个文本框textF。程序运行时,在文本区中输入数字序列,单击按钮,则在文本框中显示数字序列的和。以下是要求你编写的actionPerformed(ActionEvent e)方法的部分代码。
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button) {
String s = textA.getText(); double sum =0;
StringTokenizer fenxi = new StringTokenizer(s, " ,\n");
//请在以下位置编写代码
下载自考试题word文档: