全国2009年1月高等教育自学考试Java语言程序设计(一)试题
课程代码:04747
一、单项选择题(本大题共10小题,每小题1分,共10分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.下列字符组合不能作为Java整型常量的是( )
A.078 B.0x3ACB C.5000 D.0x3ABC
2.以下程序代码的输出结果是( )
int x = 10;
while (x > 7)
{ System.out.print("*"); x--;}
A.** B.*** C.* D.****
3.设类U声明,及对象u和v的定义如下:
class U{
int x, int y;
U(int a, int b){x= a; y = b;}
void copy(U a){ x = a.x; y = a.y;}
}
U u = new U(1, 2), v = new U(2, 3);
在以下供选择的代码中,可能引起系统回收内存的是( )
A.u.x=v.y;u.y=v.x; B.u=v; C.u.copy(v); D.v.copy(u);
4.设有以下代码:
String s l="123";
String s2="123";
String s3=new String("123");
则表达式s1==s2和s1==s3的值分别是( )
A.true,true B.false,false C.true,false D.false,true
5.以下关于AWT与Swing之间关系的叙述,正确的是( )
A.Swing是AWT的提高和扩展
B.在写GUI程序时,AWT和Swing不能同时使用
C.AWT和Swing在不同的平台上都有相同的表示
D.AWT中的类是从Swing继承的
6.在以下Swing组件中,能为它指定布局管理器的是( )
A.JScrollBar对象 B.JMenuBar对象 C.JComboBox对象 D.JDialog对象
7.一般的绘图程序要定义一个JPanel子类。在JPanel子类中还要重定义一个方法,在这个方法中调用绘图方法,绘制各种图形。要重定义的方法是( )
A.paint() B.paintComponent() C.repaint() D.update()
8.用Runnable接口实现多线程的主要工作是( )
A.声明实现Runnable接口的类,在类内实现run()方法,让线程调用start()方法。
B.声明实现Runnable接口的类,在类内实现run()方法,在类内声明线程对象,在init()方法中创建新线程,启动新线程。
C.声明实现Runnable接口的类,在类内实现run()方法,在类内声明线程对象,在Init()方法或start()方法中创建新线程,在start()方法中启动新线程。
D.声明实现Runnable接口的类,在类内实现run()方法,在init()方法中创建新线程,在start()方法中启动新线程。
9.程序如果要按行输入输出文件的字符流,最合理的方法是采用( )
A.BufferedReader类和BufferedWriter类 B.InputStream类和OutputStream类
C.FileReader类和FileWriter类 D.File_Reader类和File_Writer类
10.在编写访问数据库的Java程序中,要用到DriverManager类。该类的作用是( )
A.存储查询结果 B.处理与数据库的连接
C.在指定的连接中处理SQL语句 D.处理驱动程序的加载和建立数据库连接
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案。错填、不填均无分。
11.Java程序的字节码文件的扩展名是_________。
12.构造一个Java表达式:y/x>5,并且x!=0。这个表达式是_________。
13.在类声明之前用_________修饰,声明类是不能被再继承的类,即它不能再有子类。
14.设有字符串定义:
String s="ABCDABCD";
则表达式s.indexOf("B")的值是_________。
15.在实现接口ActionListener的方法actionPerformed()中,常用的有两个获得事件源的方法,它们是getActionCommand()和_________。
16.使用单选按钮的方法是将一些单选按钮用________对象分组,使同一组内的单选按钮只允许一个被选中。
17.在Java语言中,用类Font对象设置字型。如果要设置的字型是:细明体、正常风格(Font.PLAIN),12磅字号,构造这样要求的Font对象fnA的代码是_________。
18.线程从阻塞状态恢复到就绪状态,有三种途径:自动恢复、用resume()方法恢复和用_________方法恢复。
19.为普通的8位字节流文件读和写操作提供支持的类是_________。
20.Connection类是java.sql包中用于处理与数据库连接的类。Connection对象是用来表示_________的对象,Java程序对数据库的操作都在这种对象上进行。
三、简答题(本大题共6小题,每小题3分,共18分)
21.请写出表示year年是闰年的Java表达式。闰年的条件是:每4年一个闰年,但每100年少一个闰年,每400年又增加一个闰年。
22.请写出在类的方法的定义之前,加上修饰字public、private的区别。
23.请写出将文本区text放置于滚动面板jsp,并将滚动面板jsp添加到JFrame窗口myFrame的Java语句。
24.要用Graphics2D类的方法画一个图形,首先要把参数对象g强制转换成Graphics2D对象;然后,用图形类提供的静态方法Double()创建一个图形对象;最后,以图形对象为参数调用Graphics2D对象的draw()方法绘制这个图形。请写出用这样的方法绘制一条线段的程序段,线段的两个端点分别是(10.0,10.0)和(30.0,30.0)。
25.请写出字符流数据与字节流数据的区别。
26.请写出URLConnection类在编写Java网络应用程序中的作用。
四、程序填空题(本大题共5小题,每小题4分,共20分)
27.方法int sigmaDigit(int n)的功能是求出十进制整数n的各位数字之和。例如,n=1234,该方法的返回值是10。
static int sigmaDigit( int n )
{ int sum = 0, d;
while( n > 0 ){
d=n% 10;
_________;
n/= 10;
}
_________;
}
28.以下小应用程序能响应鼠标按动的事件,当鼠标在正文区的某个位置被点击时,就在该位置显示一个记号“×”,程序限制最多保留最新20个位置。
import java.applet.*; import java.awt.*;
import javax.swing.*; import java.awt.event.*;
class MyPanel extends JPanel {
public void print(Graphics g, int x, int y)(
g.setColor(Color.red);
g.drawLine(x-5, y-5, x+5, y+5);
g.drawLine(x+5, y-5, x-5, y+5);
}
}
class MyWindow extends JFrame implements MouseListener{
final int MaxMarks = 20;
int currentMarks = 0, markCount = 0;
Point marks[] = new Point[MaxMarks];
MyPanel panel;
MyWindow(){
this.setLocation(100, 100);
this.setSize(300, 300);
Container con = this.getContentPane();
panel = new MyPanel(); con.add(panel);
_________(this);
this.setVisible(true);
}
public void paint(Graphics g){
int i;
g.clearRect(0,0, this.getWidth(), this.getHeight());
for(i =0;i < markCount; i++) {
_________(g, marks[i].x, marks[i].y);
}
}
public void mousePressed(MouseEvent e){ }
public void mouseReleased(MouseEvent e){ }
public void mouseEntered(MouseEvent e){ }
public void mouseExited(MouseEvent e){ }
public void mouseClicked(MouseEvent e){
marks[currentMarks] = new Point(e.getX(), e.getY());
if(markCount < MaxMarks)markCount++;
currentMarks = (currentMarks+ 1)%MaxMarks;
repaint();
}
}
public class Class1 extends Applet {
public void init(){
MyWindow myWndow = new MyWindow();
}
}
29.这是一个处理选择项目事件的子窗口类。窗口中有2个选择框,当选中某个选择框时,文本框将显示选择框对应的信息。
class MyWindow extends JFrame implements ItemListener {
JTextField text;
JCheckBox boxl, box2;
MyWindow(String s) {
_________;
Container con = this.getContentPane();
this.setLocation(100, 100); this.setSize(400, 200);
text = new JTextField(10);
box1 = new JCheckBox("A计算机", false);
box2 = new JCheckBox("B计算机", false);
con.setLayout(new GridLayout(3, 2));
con.add( new JLabel("计算机产品介绍", JLabel.CENTER));
add(new JLabel("计算机2选1", JLabel.CENTER));
con.add(box1); con.add(box2); con.add(text);
box1 .addItemListener(this);
box2.addItemListener(this);
this.setVisible(true); this.pack();
}
public void itemStateChanged( _________e){
if(e.getItemSelectable() == box1) {
text. setText("A公司生产");
} else if(e.getItemSelectable() == box2) {
text. setText("B公司生产");
}
}
}
30.这是一个播放幻灯片的小应用程序中的paint()方法。设幻灯片已由小应用程序的init()方法装入内存,并存放于myImage数组中,幻灯片的张数放于变量num中,paint()方法要播放的幻灯片号是currentImage。
int currentImage = 0;
final int num = 30;
Image [ ] myImage = new _________ [num];
……
public void paint(Graphics g) {
if ((mylmage[currentImage]) != null)
g. _________ (myImage[currentImage], 10, 10,
myImage [currentImage].getWidth(this),
myImage [currentImage].getHeight(this), this);
}
31.以下定义的类ShareData用于管理多个线程共享数据val。为了保证对共享数据val修改的完整性,线程对val的操作需要互斥,类ShareData中定义的方法modiData()就是供共享val的线程修改val的方法。程序共有20个线程共享val,有些减少val,有些增加val。
public class Class1 {
public static void main(String args[]){
ShareData mrc = new ShareData(50);
Thread[] aThreadArray = new Thread[20];
System.out.println("\t刚开始的值是:"+mrc.getVal());
System.out.println("\t多个线程正在工作,请稍等!");
for(int i = 0; i < 20; i++) {
int d = i % 2 == 0 ? 50 : -30;
aThreadArray[i] = new Thread(new MyMultiThreadClass(mrc, d));
aThreadArray[i].start();
}
WhileLoop ://等待所有线程结束
while(true){
for(int i = 0; i < 20; i++)
if(aThreadArray[i]. _________ ())continue WhileLoop;
break;
}
System.out.println("\t最后的结果是: "+mrc.getVal());
}
}
class MyMultiThreadClass implements Runnable {
ShareData UseInteger; int delta;
MyMultiThreadClass(ShareData mrc, int d) {
UseInteger = mrc; delta = d;
}
public void run() {
for(int i = 0; i < 1000; i++) {
UseInteger.modiData(delta);
try {Thread.sleep(10) ;//做一些其他的处理
}catch(InterruptedException e){ }
}
}
}
class ShareData {
int val;
ShareData(int initValue){val = initValue; }
int getVal(){return val;}
private void putVal(int v){val = v;}
_________ void modiData(int d){
putVal(getVal() + d);
}
}
五、程序分析题(本大题共5小题,每小题4分,共20分)
32.阅读下列程序,请写出该程序的输出结果。
class A {
int x, y;
A(int a, int b) {
x= a; y= b;
}
}
public class sample {
public static void main(String args[]) {
A pl, p2;
p2 = new A(12, 15);
p1 = p2; p2.x++;
System.out.println("p1.x=" + p1 .x);
}
}
33.阅读下列程序,请写出调用pascal(4)的输出结果。
static void pascal(int n) {
int pas[];
pas = new int[n];
pas[0] = 1;
System.out.println(pas[0]);
for (int i = 2; i <= n; i++) {
/* 由存储在pas中的原来内容生成新内容*/
pas[i - l] =1;
for (int j = i- 2;j > 0; j--)
pas[j] = pas[j] + pas[j - 1 ];
for (int j = 0; j < i; j++)
System.out.print(pas[j] +" ");
System.out.println();
}
}
34.阅读下列程序,请用示意图画出程序运行时呈现的界面。
import java.applet.*;
import java.awt *;
import javax.swing.*;
class MyPanel extends JPanel {
JButton button; JLabel label;
MyPanel(String s1, String s2) {
this.setLayout(new GridLayout(2, 2));
button = new JButton(s1);
label = new JLabel(s2, JLabel.CENTER);
add(button); add(label); add(new JLabel());
}
}
public class Class1 {
public static void main(String args[]) {
JFrame mw = new JFrame("一个示意窗口");
mw.setSize(400, 250);
Container con = mw.getContentPane();
con.setLayout(new BorderLayout());
MyPanel panel1, panel2;
panel1 = new MyPanel("按钮1" ,"标签1");
panel2 = new MyPanel("按钮2", "标签2");
JButton button = new JButton("开始按钮");
con.add(panel1, "North");con.add(panel2, "South");
con.add(button, "Center");
mw.setVisible(true);
}
}
35.阅读下列程序,请回答以下问题:
(1)程序要求在文本框text中输入的内容是什么?
(2)辅助文本区showArea组件的作用是什么?
(3)如何使程序开始下载网络文本文件?
(4)程序采用什么输入方式下载网络文件?
import java.net.*; import java.awt.*;
import java.awt.event.*; import,java.io.*; import javax.swing.*;
public class Class1{
public static void main(String args[]) .
{ new ConnectNet("读取网络文本文件示意程序");}
}
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);//由网址创建URL对象
URLConnection tc=url.openConnection();//获得URLConnection对象
tc.connect();//设置网络连接
InputStreamReader in=new InputStreamReader(tc.getInputStream());
BufferedReader dis=new BufferedReader(in); String inLine;
while((inLine=dis.readLine())!=null){showArea.append(inLine+"\n");}
dis.close();
}catch(MalformedURLException e2){e2.printStackTrace();}
catch(IOException e3){ e3.printStackTrace();}
}
}
36..阅读下列程序,请写出该程序的功能。
import java.applet.*; import java.awt.*;
public class Class1 extends java.applet.Applet implements Runnable {
Thread myThread = null;
public void start() {
setSize(500, 400);
if (myThread == null) {
myThread = new Thread(this); myThread.start();
}
}
public void run() {
while (myThread != null) {
try { myThread.sleep(500);
} catch (InterruptedException e) { }
repaint();
}
}
public void paint(Graphics g) {
int x = (int)(400*Math.random());
int y = (int)(300*Math.random());
g.setColor(Color.red); g.fillOval(x,y, 10, 10);
}
}
六、程序设计题(本大题共2小题,每小题6分,共12分)
37.编写数组复制方法。该方法从已知平衡的两维数组的左下角复制出一个非平衡的三角二维数组。设复制数组方法的模型为:
public static double[][] leftDownConer(double[][]anArray)
38.设计实现以下形式布局的Java小应用程序。
注1:其中空白格是文本框,用于输入对应的内容。
注2:这里给出的是程序的一部分,你要编写的是方法
MyWindow(String s)。
import java.applet.*; import javax.swing.*; import java.awt.*;
class MyWindow extends JFrame{
JTextField textl,text2,text3,text4;
public MyWindow(String s){//这个方法是你要编写的
}
}
public class Class1 extends Applet{
MyWindow myWindow;
public void init(){ myWindow=new MyWindow("一个小应用程序"); }
}
下载自考试题word文档: