资源描述
Java全国自考历年试卷参考答案
资料仅供参考
全国 1月Java语言程序设计试题
一、单项选择题(本大题共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程序的字节码文件的扩展名是__.class__。
12.构造一个Java表示式:y/x>5,而且x!=0。这个表示式是___y/x>5&&x!=0______。
13.在类声明之前用____final_____修饰,声明类是不能被再继承的类,即它不能再有子类。
14.设有字符串定义:
String s="ABCDABCD";
则表示式s.indexOf("B")的值是____1_____。
15.在实现接口ActionListener的方法actionPerformed()中,常见的有两个获得事件源的方法,它们是getActionCommand()和_____getSource()____。
16.使用单选按钮的方法是将一些单选按钮用_____ButtonGroup____对象分组,使同一组内的单选按钮只允许一个被选中。
17.在Java语言中,用类Font对象设置字型。如果要设置的字型是:细明体、正常风格(Font.PLAIN),12磅字号,构造这样要求的Font对象fnA的代码是__Font f=new Font(“Font.PLAIN”,细明体,12);_______。
18.线程从阻塞状态恢复到就绪状态,有三种途径:自动恢复、用resume()方法恢复和用__notify()或notifyAll()___方法恢复。
19.为普通的8位字节流文件读和写操作提供支持的类是_FileInputStream和FileOutputStream_。
20.Connection类是java.sql包中用于处理与数据库连接的类。Connection对象是用来表示__数据库连接___的对象,Java程序对数据库的操作都在这种对象上进行。
三、简答题(本大题共6小题,每小题3分,共18分)
21.请写出表示year年是闰年的Java表示式。闰年的条件是:每4年一个闰年,但每1 少一个闰年,每4 又增加一个闰年。
(year%4==0 && year%100!=0 || (year%400==0)
22.请写出在类的方法的定义之前,加上修饰字public、private的区别。
public 修饰的方法是共有的,其它类的方法都能够访问;而private修饰的方法是私有的,其它类都不能访问。
23.请写出将文本区text放置于滚动面板jsp,并将滚动面板jsp添加到JFrame窗口myFrame的Java语句。
JTextArea text=new JTextArea();
JScrollPane jsp=new JScrollPane(text); myFrame.getContentPane().add(jsp);
24.要用Graphics2D类的方法画一个图形,首先要把参数对象g强制转换成Graphics2D对象;然后,用图形类提供的静态方法Double()创立一个图形对象;最后,以图形对象为参数调用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位;字节流数据每次读写的单位是一个字节,即8位。
26.请写出URLConnection类在编写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.以下小应用程序能响应鼠标按动的事件,当鼠标在正文区的某个位置被点击时,就在该位置显示一个记号“×”,程序限制最多保留最新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);
panel.addMouseListener(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++) {
panel.print (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) {
super(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( ItemEvent e){
if(e.getItemSelectable() == box1) {
text. setText("A公司生产");
} else if(e.getItemSelectable() == box2) {
text. setText("B公司生产");
}
}
}
30.这是一个播放幻灯片的小应用程序中的paint()方法。设幻灯片已由小应用程序的init()方法装入内存,并存放于myImage数组中,幻灯片的张数放于变量num中,paint()方法要播放的幻灯片号是int currentImage = 0;
final int num = 30;
Image [ ] myImage = new Iamge [num];
……
public void paint(Graphics g) {
if ((mylmage[currentImage]) != null)
g. drawImage (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]. isAlive ())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;}
synchronized 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);
}
}
p1.x=13
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();
}
}
1
1 1
1 2 1
1 3 3 1
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 .*; 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);
}
}
在400*300的矩形区域中,随机绘制直径为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){
//这个方法是你要编写的
super(s);
Container con=this.getContentPane();//获得内容面板
con.setLayout(new GridLayout(2,4));//布局2行4列
con.add(new JLabel(“学 号”,JLabel.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 Applet{
MyWindow myWindow;
public void init(){ myWindow=new MyWindow("一个小应用程序"); }
}
全国 10月Java语言程序设计试题
一、单项选择题(本大题共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=″″,sl,s2;
sl=s.substring(2);s2=s.substring(2,5);System.out.println(s1+s2);
A.0122345 B. C.012234 D.
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.一个应用程序必须在某个类中定义的方法是__主方法/public static void main(Stringa rgs[])____。
12.import语句的格式是__import 包名.类名____。
13.在面向对象语言中,对象之间的交互经过___消息___实现。
14.设有两个字符串对象str1和str2,则表示式“strl==str2”的意义是判别字符串strl和str2___是否有相同的引用(或者说“是否是同一个字符串”)___。
15.一个基于Swing的应用程序可能在任何平台上都会有相同的___外观和风格___。
16.处理键盘事件的Java程序,要实现的接口是__KeyListener____。
17.Java语言约定,坐标原点位于绘图区域的___左上角___。
18.Java程序中,在临界段中使用___wait()___方法,使执行该方法的线程等待。
19.BufferedWriter类对象能按行输入文件的内容,按行输入的方法是__readLine()____。
20.在包中有InetAddress类的定义,Java程序中的InetAddress类对象存储的内容是___IP地址和域名___。
三、简答题(本大题共6小题,每小题3分,共1 8分)
21.请写出实现计算y=|x|的if语句。
if(x>=0) y=x; else y=x*(-1);
22.以下代码定义了一个类,请指出其中三条不合法的代码行(行号参见注释)。
class Test22{ //
展开阅读全文