全国2010年1月高等教育自学考试
Java语言程序设计(一)试题
课程代码:04747
一、单项选择题(本大题共10小题,每小题1分,共10分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.在下述字符串中,不属于Java语言关键字的是(C)
A.float
B.new
C.java
D.return
2.Java语言中数值数据的类型能自动转换,按照从左到右的转换次序为(B )
A.byte→int→short→long→float→double
B.byte→short→int→long→float→double
C.byte→short→int→float→long→double
D.short→byte→int→long→float→double
3.在以下供选择的概念中,不属于面向对象语言概念的是(B )
A.消息
B.模块
C.继承
D.多态性
4.在下述Java语言语句中,错误的创建数组的方法是(D )
A.int intArray [ ];intArray=new int[5];
B.int intArray [ ]=new int[5];
C.int [ ] intArray ={1,2,3,4,5};
D.int intArray [5]={1,2,3,4.5};
5.在Swing中,它的子类能用来创建框架窗口的类是(B )
A.JWindow
B.JFrame
C.JDialog
D.JApplet
6.MouseListener接口不能处理的鼠标事件是(D)
A.按下鼠标左键
B.点击鼠标右键
C.鼠标进入
D.鼠标移动
7.以下不属于文字字型要素的是(A)
A.颜色
B.字体
C.风格
D.字号
8.在以下四个供选的整数中,能作为线程最高优先级的整数是(C )
A.0
B.1
C.10
D.11
9.Java语言可以用javax.swing包中的类JFileChooser来实现打开和保存文件对话框。用户通过文件对话框不可能获得的信息是(C )
A.文件名称
B.文件路径
C.文件内容
D.文件对象
10.在编写访问数据库的Java程序时,Connection对象的作用是(A )
A.用来表示与数据库的连接
B.存储查询结果
C.在指定的连接中处理SQL语句
D.建立新数据库连接
二、填空题(本大题共10小题,每空2分,共20分)
请在每小题的空格中填上正确答案。错填、不填均无分。
11.Java的编译程序先将Java源程序翻译成与机器无关的_____字节码_____。
12.表达式¨23 & 18’’的值是_____2318_____。
13.如果类A某个成员变量的类型是类B,则类A和类B之间是___Has-a_______关系。14.Java语言提供了两个用于处理字符串的类,它们是String\StringBuffer__________。15.某程序用代码“JTextField text=new JTextField();”创建了一个文本框,并对这个文本框注册了监视器,则在监视器处理方法actionPerformed(ActionEvent e)中,判定是在这个文本框上发生事件的条件表达式是_e.getSource()==text_________。
16.一个水平滚动条对象的初始值是50,滑块的宽是10个像素,表示的范围是[0,250]。
创建这样的滚动条对象时,提供的5个参数依次是_______ 17.要在JComponent 子类的组件中绘图,应重写_paintComponent()_________方法。18.当线程使用完临界段后,为了使等待的线程恢复工作,需要调用的方法是_Notify()____ 19.某程序想为一个long型整数文件构造随机读写对象,支持这个要求的类是RandomAccessFile_______ 20.设已知服务器的IP地址和端口号,要创建一个套接字对象,支持这个要求的类是____ __Socket____。
三、简答题(本大题共6小题,每小题3分,共18分)
21.请写出一段if语句,判断一个整数n是否为偶数。如果是偶数,输出“Yes.”;否则,输出“No.”。
22.请写出接口定义的一般形式。
23.请写出Java语言编写事件处理程序的两种主要方案。
24.设已经有Graphics2D对象g2d, 请用Java语句绘制一个矩形rect,其左上角坐标是(20,
30),宽是120,高是30。
25.打开文件对话框时,还可以设置筛选条件,即指定文件的类型。请写出FileFilter类预
设的两个方法。
26.请写出URLConnection类提供的三个常用方法
四、程序填空题(本大题共5小题,每空2分,共20分)
27.方法void moveOddForword(int a[ ])的功能是将数组中的所有奇数移到所有偶数之前。void moveOddForword(int a[]){
for(int i=0,odd=0;________;i++)
if(________){
int t=a[i];a[i]=a[odd];a[odd]=t;odd++;
}
}
28.以下程序创建了一个窗口,然后在窗口内显示″Hello,World! ″。
import javax.swing.*;import java.awt*;
public class HelloWorld {
public static void main(String[ ]ares) {
TextFrame frame=new TextFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame. setVisible(true)_____;
}
}
class TextFrame extends JFrame {
public TextFrame() { .
setTitle(″HelloWorld″);
setSize(WIDTH,HEIGHT);
TextPanel panel=new TextPanel();
Container contentPane=getContentPane();
contentPane.add(panel);
}
public static final int WIDTH=300;
public static final int HEIGHT= 200;
}
class TextPanel extends JPanel {
public void paintComponent(Graphics g) {
super. paintComponent(g)_____;
g.drawString(″Hello,World! ″,x,y);
}
public int x=100;public int y=100;
}
29.以下是子窗口中设置一个菜单条类的定义。类的构造方法根据指定的窗口名称和菜单表设置菜单条,菜单和菜单项,当选中某个菜单项时,在文本框中显示相应菜单项被选中的信息。
class MenuWindow extends JFrame implements ActionListener {
public static JTextField text;
public 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 JMenu menu=new JMenu(menuList[i][0]); for(int j=1;j JMenultem anltem=new JMenultem(menuList[i][j]); anltem.setActionCommand(menuList[i][j]); anltem._ActionListener(this)_______;menu.add(anltem); } menubar.__add(menu)________; } text=new JTextField();setJMenuBar(menubar); con.add(text,BorderLayout.SOUTH); } public void actionPerformed(ActionEvent e){ text.setText(e.getActionCommand()+″菜单项被选中! ″); } } public class Test29 extends Applet { MenuWindow window; String menuList[][]={{″体育″,″跑步″,″打蓝球″,″打乒乓″}, {″娱乐″,″唱歌″,″跳舞″}}; public void init() { window=new MenuWindow(″体育娱乐之窗″,menuList); window.setVisible(true); } } 30.以下是一个用鼠标自由作画的小应用程序。最简单的方法是根据鼠标所在位置画点,跟随鼠标的移动,不断画圆点,就能实现用鼠标作画。 import java.awt.*; import java.awt.event.*; public class Test30 extends java.applet.Applet implements MouseMotionListener { Color color;int lineSize=2: int x=-1,y=-l; public void init(){ setLocation(30,20);setSize(300,300); setBackground(Color.green);addMouseMotionListener(this); } public void paint(Graphics g){ if(x!=-1&&y!=-1) { g.setColor(color);g.fillOval(x,y,1ineSize,lineSize); } } public void mouseMoved(MouseEvent e){} public void mouseDragged(MouseEvent e){ x=e.getX();y=e.getY();__repaint()_______; } public void __update()______ (Graphics g){ paint(g);} } 31.以下定义的类ShareData用于管理多个线程共享数据data。一个线程生成data,另一个线程使用data。约定,新生成的data只有被另一个线程使用后,才能生成下一个data。反之,一个data被使用后,也不能再继续使用。所以,生成和使用data的线程之间需要互斥和同步。以下是管理上述使用方式的类,类内有要管理的共享数据,以及对共享数据的存操作p utData()和取操作getData()。 class ShareData{ int data;∥共享数据 boolean newData=false;∥有最近新生成data的标志 synchronized int getData(){ while(!newData){ try{ __wait()_______; } catch(InterruptedExceptipn e){ System.out.printl n(″因错误,而中断!″); } } newData=false;notify();return data; } synchronized void putData(int n){ while(newData){ try{wait(); }catch(InterruptedException e){ System.out.println(″因错误,而中断! ″); } } data=n;_newData=true_________; notify();return; } } 五、程序分析题(本大题共5小题,每小题4分,共20分) 32.阅读下列程序,请写出该程序的输出结果。 class Parent{ private void method 1 () { System.out.println(″Parent′s method 1()″);} public void method 2 () { System.out.println(″Parent′s method 2()″);method 1();} } class Child extends Parent { public void method l (){ System.out.println(″Child′s method 1 ()″);} public static void main(String args[]){ Parent p = new Child();p.method2();} } Parent′s method 2() Parent′s method 1() 33.阅读下列程序,请写出该程序的功能。 import java.util.*;import javax.swing.*; public class Test33{ public static void main(String args[]){ String str=(String)JOptionPane.showInputDialog(null,″请输入信息″, ″输入对话框″,JOptionPane.PLAIN_MESSAGE,null,null,null);StringTokenizer pas=new StringTokenizer(str, ″,″); int n=pas.countTokens(); System.out.println(″输入的信息有单词:″+n+″个,全部单词如下:″); while(pas.hasMoreTokens()){ String s=pas.nextToken(); System.out.println(s); } } ) 34.阅读下列程序,请用示意图画出程序运行时呈现的界面。 import java.applet.*;import java.awt.*;import javax.swing.*; class MyPanel extends JPanel{ JTextField textl,text2; MyPanel(String sl,String s2) { textl=new JTextFieId(s1);text2=new JTextField(s2); add(text 1);add(text2); } } class MySubPanel extends MyPanel { JTextField text; MySubPanel(String sl,String s2,String s3) { super(s1,s2);text = new JTextField(s3);add(text); } } public class Test34 { public static void main(String args[]) { JFrame mw=new JFrame(″一个示意窗口″); mw.setSize(350,150); Container con = mw.getContentPane(); con.setLayout(new BorderLayout()); MyPanel pl=new MyPanel(″文本框l″,″文本框2″); MySubPanel p2=new MySubPanel(″文本框3″,″文本框4″,″文本框5″);JTextArea text=new JTextArea(″这里是一个文本区″); con.add(pl,″North″);con.add(p2,″South″); con.add(text,″Center″);mw.setVisible(true); } } 35.阅读下列程序,请写出该程序的功能。 import java.applet.*:import java.awt.event.*;import javax.swing.* public class Class 1 extends Applet implements KeyListener{ JButton button=new JButton(″开始″); JTextArea text=new JTextArea(5,20); public void init() { button.addKeyListener(this);add(button);add(text); } public void keyPressed(KeyEvent e){ int t=e.getKeyCode(); if(t>=KeyEvent.VK_A&& t<=KeyEvent.VK_Z) { text.append(″ ″+(char)t); } } public void keyTyped(KeyEvent e){} public void keyReleased(KeyEvent e){} } 36.阅读下列程序,请写出该程序的功能。 import java.applet.*;import java.awt.*; public class Test36 extends java.applet.Applet implements Runnable{ Thread myThread = null; double seta=0.0; public void start() { setSize(500,400); if(myThread=null){ myThread=new Thread(this);myThread.start();} } public void run() { while(myThread!=null) { try {myThread.sleep(40); } catch(InterruptedException e){} seta+=3.0;if(seta>=360)seta=0;repaint(); } } public void paint(Graphics g) { final double pi=3.14159;final double r = 100.0; int x0=250+(int)(r*Math.cos(3.1415926/180.0*seta)); int y0=200+(int)(r*Math.sin(3.1415926/180.0*seta)); g.setColor(Color.red);g.drawOval(x0,y0,10,10); } } 六、程序设计题(本大题共2小题,每小题6分,共1 2分) 37.请编写方法void strReverse(String str),该方法的功能是输出一个新字符串,新字符串字符排列顺序与原字符串str的字符排列顺序相反。例如,strReverse(″ABCD″) 所输出的结果是″DCBA″。请使用字符串与字节数组的相互转换方法进行设计。 38.请设计实现如下用于输入学号和姓名的对话框界面,其中空白格是文本框,用于输入相应的内容。 这里给出的是程序的一部分,你要编写的是类InputNoNameDialog的构造方法InputNoName Dialog(JFrame f,String s,JTextField t)。其中参数f是对话框的依赖窗口,s是对话框标题,t是依赖窗口中显示对话框输入内容的文本框。 以下是类InputNoNameDialog的程序框架。 class InputNoNameDialog extends JDialog implements ActionListener{ JLabel title;JTextField textl,text2,mainText;JButton done; InputNoNameDialog(JFrame f String s,JTextField t) { super(f,s,true);mainText = t;Container con = getContentPane(); title=new JLabel(s);textl=new JTextField(10); text2=new JTextField(10);con.setLayout(new GridLayout(3,2)); con.setSize(200,100);setModal(false); //请在以下位置续写其余代码 } public void actionPerformed(ActionEvent e) { //输入结束按确定按钮后,将对话框中输入的学号和姓名在它依赖窗口的文本框中显示。mainText.setText(″学号:″+textl.getText()+″ 姓名:″+text2.getText()); setVisible(false);dispose(); } }