1、1全国 2009 年 1 月 Java 语言程序设计试题一、单项选择题(本大题共 10 小题,每小题 1 分,共 10 分)1.下列字符组合不能作为 Java 整型常量的是( )A.078 B.0x3ACB C.5000 D.0x3ABC2.以下程序代码的输出结果是( )int x = 10;while (x 7) System.out.print(“*“); x-;A.* B.* C.* D.*3.设类 U 声明,及对象 u 和 v 的定义如下:class Uint x, int y;U(int a, int b)x= a; y = b;void copy(U a) x = a.x; y =
2、 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,true5.以下关于 AWT 与 Swing 之间关系的叙述,正确的是 (
3、)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.re
4、paint() D.update()8.用 Runnable 接口实现多线程的主要工作是( )A.声明实现 Runnable 接口的类,在类内实现 run()方法,让线程调用 start()方法。B.声明实现 Runnable 接口的类,在类内实现 run()方法,在类内声明线程对象,在 init()方法中创建新线程,启动新线程。C.声明实现 Runnable 接口的类,在类内实现 run()方法,在类内声明线程对象,在 init()方法或 start()方法中创建新线程,在 start()方法中启动新线程。D.声明实现 Runnable 接口的类,在类内实现 run()方法,在 init()
5、方法中创建新线程,在start()方法中启动新线程。9.程序如果要按行输入输出文件的字符流,最合理的方法是采用( )A.BufferedReader 类和 BufferedWriter 类 B.InputStream 类和 OutputStream 类C.FileReader 类和 FileWriter 类 D.File_Reader 类和 File_Writer 类210.在编写访问数据库的 Java 程序中,要用到 DriverManager 类。该类的作用是( )A.存储查询结果 B.处理与数据库的连接C.在指定的连接中处理 SQL 语句 D.处理驱动程序的加载和建立数据库连接二、填空题
6、(本大题共 10 小题,每小题 2 分,共 20 分)11.Java 程序的字节码文件的扩展名是_.class_。 12.构造一个 Java 表达式:yx5,并且 x!=0。这个表达式是_y/x5_。18.线程从阻塞状态恢复到就绪状态,有三种途径:自动恢复、用 resume()方法恢复和用_notify()或 notifyAll()_方法恢复。19.为普通的 8 位字节流文件读和写操作提供支持的类是_FileInputStream 和FileOutputStream_。20.Connection 类是 java.sql 包中用于处理与数据库连接的类。Connection 对象是用来表示_数据库
7、连接_的对象,Java 程序对数据库的操作都在这种对象上进行。三、简答题(本大题共 6 小题,每小题 3 分,共 18 分)21.请写出表示 year 年是闰年的 Java 表达式。闰年的条件是:每 4 年一个闰年,但每 100年少一个闰年,每 400 年又增加一个闰年。(year%4=0 JScrollPane jsp=new JScrollPane(text); myFrame.getContentPane().add(jsp);24.要用 Graphics2D 类的方法画一个图形,首先要把参数对象 g 强制转换成 Graphics2D 对象;然后,用图形类提供的静态方法 Double()
8、创建一个图形对象;最后,以图形对象为参数调用 Graphics2D 对象的 draw()方法绘制这个图形。请写出用这样的方法绘制一条线段的程序段,线段的两个端点分别是(10.0,10.0) 和(30.0,30.0)。Graphics2D g2d=(Graphics2D)g;Line2D line=new Line2D.Double(10.0,10.0,30.0,30.0);g2d.draw(line);25.请写出字符流数据与字节流数据的区别。字符流数据每次读写的单位是一个字符,即 16 位;字节流数据每次读写的单位是一个字节,3即 8 位。26.请写出 URLConnection 类在编写
9、Java 网络应用程序中的作用。URLConnection 的作用是建立网络资源的连接,用于发送和接收信息。四、程序填空题(本大题共 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;sum=sum+d ; n/= 10;return sum ; 28.以下小应用程序能响应鼠标按动的事件,当鼠标在正文区的某个位置被点击时,就在该位置显
10、示一个记号“”,程序限制最多保留最新 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 i
11、mplements MouseListenerfinal int MaxMarks = 20;int currentMarks = 0, markCount = 0;Point marks = new PointMaxMarks;MyPanel panel;MyWindow()this.setLocation(100, 100); this.setSize(300, 300);Container con = this.getContentPane();panel = new MyPanel(); con.add(panel);panel.addMouseListener(this); this
12、.setVisible(true);public void paint(Graphics g)int i;g.clearRect(0,0, this.getWidth(), this.getHeight();for(i =0;i 0; j-) pasj = pasj + pasj - 1 ;for (int j = 0; j i; j+) System.out.print(pasj +“ “);System.out.println();11 1 1 2 1 1 3 3 134.阅读下列程序,请用示意图画出程序运行时呈现的界面。import java.applet.*;import java.a
13、wt *;7import 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(
14、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.a
15、dd(panel2, “South“);con.add(button, “Center“);mw.setVisible(true);35.阅读下列程序,请回答以下问题:(1)程序要求在文本框 text 中输入的内容是什么? 网址(2)辅助文本区 showArea 组件的作用是什么? 显示下载的文件内容(3)如何使程序开始下载网络文本文件? 在文本框中输入网址后点击“ 下载”按钮(4)程序采用什么输入方式下载网络文件? 缓冲式import .*; import java.awt.*;import java.awt.event.*; import,java.io.*; import javax.s
16、wing.*;public class Class1 public static void main(String args) . new ConnectNet(“读取网络文本文件示意程序“);8class ConnectNet extends JFrame implements ActionListenerJTextField text=new JTextField(30);JTextArea showArea=new JTextArea();JButton b=new JButton(“下载“);JPanel p=new JPanel();ConnectNet(String s)super
17、(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)Stri
18、ng 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)
19、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 s
20、tart() 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();9int y = (int)(300*Math.random();g.s
21、etColor(Color.red); g.fillOval(x,y, 10, 10);在 400*300 的矩形区域中,随机绘制直径为 10 的红色圆。六、程序设计题(本大题共 2 小题,每小题 6 分,共 12 分)37.编写数组复制方法。该方法从已知平衡的两维数组的左下角复制出一个非平衡的三角二维数组。设复制数组方法的模型为:public static double leftDownConer(doubleanArray)38.设计实现以下形式布局的 Java 小应用程序。注 1:其中空白格是文本框,用于输入对应的内容。注 2:这里给出的是程序的一部分,你要编写的是方法 MyWindow
22、(String s)。import java.applet.*; import javax.swing.*; import java.awt.*;class MyWindow extends JFrameJTextField textl,text2,text3,text4 ;public MyWindow(String s)/这个方法是你要编写的 super(s);Container con=this.getContentPane();/获得内容面板con.setLayout(new GridLayout(2,4);/布局 2 行 4 列con.add(new JLabel(“学 号”,JLa
23、bel.CENTER);/加载标签text1=new JTextField(); con.add(text1);/创建并加载文本框con.add(new JLabel(“姓 名”,JLabel.CENTER);text2=new JTextField(); con.add(text2);con.add(new JLabel(“考试成绩”,JLabel.CENTER);text3=new JTextField(); con.add(text3);con.add(new JLabel(“平时成绩”,JLabel.CENTER);text4=new JTextField(); con.add(text4);this.pack(); public class Class1 extends AppletMyWindow myWindow;public void init() myWindow=new MyWindow(“一个小应用程序 “); 10