2008年1月
一、单项选择题(本大题共10小题,每小题1分,共10分) 1.下述字符组合不能作为Java程序标识符的是( ) A.Aa12 B.大x C.y小 D.5x
2.以下程序代码的输出的结果是( ) int x=53;
System. out. println(1.0+x/2);
A.27.0 B.27.5 C.1.026 D.1.026.5
3.参照以下Java代码,以下四个叙述中最确切的是( ) class A{
int x; static int y;
void fac(String s){Syatem. out. println("字符串:"+s);}}
A.x、y和s都是成员变量 B.x是实例变量、y是类变量、s是局部变量 C.x和y是实例变量、s是参数 D.x、y和s都是实例变量
4.需要分析字符串,并将字符串分解成可被独立使用的单词,可使用java. util包中的类是( ) A.String B.StringBuffer C.StringTokenizer D.stringTokenizer
5.要为程序的子窗口设定一个由字符串s指定的名字,可以采用的代码是( ) A.JFrame(s) B.window(s) C.new JFrame(s) D.super(s) 6.以下关于菜单的叙述中,正确的是( )
A.菜单分三级定义,最高一级的是菜单条,菜单条中放菜单,菜单中放菜单项 B.菜单分三级定义,最高一级的是菜单,菜单中放菜单条,菜单条中放菜单项 C.菜单分两级定义,最高一级的是菜单,菜单中放菜单项
D.菜单分两级定义,最高一级的是菜单条,菜单条中放菜单项 7.以下所述内容全部是字型要素的是( )
A.字体、字形和大小 B.字体、风格和字号 C.字形、风格和字号 D.字形、颜色和字号 8.用Thread子类实现多线程的步骤顺序是( )
A.声明Thread类的子类,创建Thread子类的实例,让线程调用start()方法
B.声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例 C.创建Thread子类的实例,让线程调用start()方法
D.声明Thread类的子类,在子类中重新定义run()方法,创建Thread子类的实例,让线程调用start()方法 9.为16位Unicode字符流提供读和写操作支持的类分别是( )
A.FileInputStream类和FileOutputStream类 B.InputStream类和OutputStream类 C.FileReader类和FileWriter类 D.File_Reader类和File_Writer类 10.能利用对象提供的方法获得流对象和实现网络连接的是( )
A.URLConnection对象 B.URL对象 C.InetAddress对象 D.TCP/IP对象 二、填空题(本大题共10小题,每小题2分,共20分) 11.一个小应用程序必须定义成一个_________。 12.用条件运算符构造一个表达式:goal等于10时,表达式的值为“对了!”,否则,表达式的值为“错了!”。这个表达式是_________。
13.类是对一组相同对象的描述,类概括了同类对象的共有性质:_________。 14.设有数组a和b的定义如下: int[]a={1,2,3};int[]b={4,5,6} ??
执行以下代码“a=b;”,除了完成赋值操作之外,引起系统额外要做的工作是_________。 15. _________布局使容器的多个组件拥有同一个显示空间,某一时刻只能显示一个组件。 16.Java语言为处理鼠标事件提供两个接口:_________接口和MouseMotionListener接口。
17.某个绘图方法设置成“异或模式”绘图,并用黄色作为异或模式设定的绘图颜色。如果当时背景色为红色,并用红色绘制线段,则线段的实际颜色是_________。
第 1 页 共 44 页
18.程序员用Java语言编写多线程应用程序,程序员能控制的关键性工作有两个方面:一是编写线程的_________方法;二是建立线程实例。
19.BufferedWriter类是提供缓冲式输出的类。程序需要先创建_________对象,再利用这个对象创建BufferedWriter对象。
20.在Java语言中,客户端使用的套接字类是_________。 三、简答题(本大题共6小题,每小题3分,共18分)
21.请写出表示条件“x=2与y=3有且只有一个成立”的Java表达式”。
22.如果类Student是类Person的子类,类Undergraduate是类Student的子类,请指出以下代码行中哪些是不合法的。
Person p1=new Student();
Person p2=new Undergraduate(); Student s1=new Person();
Student s2=new Undergraduate(); Undergraduate ug1=new Person();
Undergraduate ug2=new Student(); Object ob=new Student();
23.请写出程序处理文本框输入结束事件(回车)添加监视器的方法,以及监视器类必须实现的接口方法。 24.请写出一条语句,能够绘制一条从点(20,30)开始,长为100像素的水平线段。设调用的对象是类型为Graphics的g。
25.某Java程序要使用文件输入输出流,请写出该程序所需要的import语句。 26.JDBC是Java程序与数据库连接的API,请写出JDBC能做的三件事情。 四、程序填空题(本大题共5小题,每空2分,共20分)
27.方法int maxDigit(int n)的功能是找出十进制整数n各位中最大的一位数字。例如,n=23765,该方法的返回值是7。
static int maxDigit(int n){ int c=0,d; while(n>0){ d=_______; if(d>c) c=d;
n/=10; }
________; }
28.某程序的界面包含一个文本区text1、一个文本框text2和一个按钮button。实现在文本区中输入整数序列后,点击按钮,程序响应按钮事件,累计文本区输入的整数序列,并将总和输出在文本框中。这里给出的是其中相应按钮事件的方法。
public void actionPerformed(ActionEvent e){ int sum;
if(e.getSource()==button){
String s=text1.________;//获取text1中的信息
StringTokenizer fenxi=new StringTokenizer(s,",,,\\n"); int n=fenxi.countTokens(); double a[]=new double[n]; for(int i=0;i<n;i++){
String temp=fenxi.nextToken(); a[i]=Double.valueOf(temp).doubleValue(); }
sum=0;
第 2 页 共 44 页
for(int i=0;i<n;i++){
__________; }
text2.setText(""+sum);//刷新显示。
} }
29.以下是生成菜单项对象,以及菜单项选择事件处理方法的部分代码。要求当菜单项singingItem被选中时,在文本框text中输出“唱歌菜单项被选中!”的字样。 ??
singingItem=new________("唱歌");//生成菜单项对象 ??
public void actionPerformed(ActionEvent e){ if(e.getSource()==singingItem)
text.setText(e.________()+ "菜单项被选中!");
}
30.某小应用程序实现幻灯片放映。小应用程序的init()方法将幻灯片读入数组中存储和注册鼠标监视器。程序运行时,单击鼠标,就顺序变换放映幻灯片的序号。这里给出的是其中的paint()方法和mousePressed()方法。
final int number=30;//假定幻灯片有30张
int count=0;
Image[]pic=new Image[number]; public void paint(______gc){ if((pic[count])!=null)
gc.drawImage(pic[count],10,10,pic[count].getWidth(this), pic[count].getHeight(this),this); }
public void mousePressed(MouseEvent e){ count=(count+1)% number;//循环逐张显示 __________;
}
31.以下定义的类shareDataManager用于管理多个线程共享数据data。一些线程要减少data,另一些线程要增加data。由于data不可以是负值,修改data的方法对这些线程来说不仅要互斥,还要同步。类提供一个方法modiData()供修改data的线程调用,该方法在data修改结束后,应通知其它等待进入这个方法的线程。 class ShareDataManager{ int data=0;
________void modiData(int delta){ if(delta>=0){ data+=delta; }else {
while(data <delta){
try{System.out.println("发生等待!"); wait();
}catch(InterruptedException e){ } }
data-=delta; }
_________; }
第 3 页 共 44 页
ShareDataManager(int ititData){data=initData;} }
五、程序分析题(本大题共5小题,每小题4分,共20分) 32.阅读下列程序,请写出该程序的输出结果。 import java.applet.*;import java.awt.*; class Point{ int x,y;
Point(int xx,int yy){ x=xx;y=yy;} Point(Point p){x=p.x;y=p.y; }
void m(int dx,int dy){x+=dx;y+=dy;} }
class Circle extends Point{ int r;
Circle(Point p, int rr){ super(p); r=rr; }
float c(){ return 3.14f*2.0f*r; } float a(){ return 3.14f*r*r;} }
public class sample extends Applet{ Circle yuan; Point d;
public void init() {d=new Point(2,5);yuan=new Circle(d,10);} public void paint(Graphics g){
g.drawString("yuan Circle"+(int)(yuan.c()*100.0)/100.0,5,20); g.drawString("yuan Area"+(int)(yuan.a()*100.0)/100.0,5,40); } }
33.阅读下列程序,请写出该程序的功能。 import java. util.*; public class Class1{
public static void main(Srting args[]){ Date date1=new Date(); System. out. println (datel); String t=datel.toString();
int endPos=t.indexOf(`C'); t=t.substring(11,endPos); System. out println(t); } }
34.阅读下列程序,请写出该程序的功能。
import java.applet.*;import javax.swing.*;import java.awt.event.*; public class Class l extends Applet implements ActionListener{ JTextField text1,text2; public void init(){
text1=new JTextField(10); text2=new JTextField(10); setSize(200,100); add(text1); add(text2); text1.addActionListener(this); }
public void actionPerformed(Action Event e){ long n;
第 4 页 共 44 页
if(e.getSource()==text1){
n=Long.parseLong(text1.getText()); text2.setText(String.valueOf(n*n)); } } }
35.阅读以下程序,请写出该程序的功能。
import javax.swing.*; import java.awt.*;import java.awt.event.*; class MyScrollBar extends JscrollBar{
public MyScrollBar(int init, int len, int low, int high){ super(JScrollBar. HORIZONTAL, init,len,low,high); } }
class MyWindow extends JFrame implements AdjustmentListener{ private JTextField text; MyWindow(String s){ super(s);
MyScrollBar myBar=new MyScrollBar(10,10,0,255); Container con=this. getContentPane(); con. setLayout(new GridLayout(2,1)); this. setSize(200,100); this. setLocation(100,100);
myBar.addAdjustmentListener(this); text=new JTextField("",20); con. add(text);con.add(myBar); this.setVisible(true); }
public void adjustmentValueChanged(AdjustmentEvent e){ MyScrollBar myBar=(MyScrollBar)e.getAdjustable(); text.setText(""+myBar.getValue());
} }
public class Class1{
public static void main(String[]args){
MyWindow myWindow=new MyWindow("text5_4"); } }
36.小应用程序创建一个线程。例子使用容器类方法getGraphics()获得Graphics对象,给线程作为画笔使用。请写出该程序中这个线程的工作内容。 import java.applet.*;import java.awt.*;
public class Class1 extends java.applet.Applet implements Runnable{ Thread redBall;Graphics redPen; int rx=0,ry=0; public void init(){ setSize(250,200);
redBall =new Thread(this); redPen=getGraphics();
redPen. setColor(Color.red);
第 5 页 共 44 页
setBackground(Color.gray); }
public void start(){ redBall.start(); } public void run(){ while(true){
if(Thread.currentThread()==redBall){ rx=(int)(80*Math.random()); ry=(int)(80*Math.random()); red Pen.setColor(Color.red);
red Pen.fillOval(100+rx,100+ry,10,10); try{redBall.sleep(500);}
catch(InterruptedException e){} redPen.setColor(Color.gray);
redPen.fillOval(100+rx,100+ry,10,10);}}}}
六、程序设计题(本大题共2小题,每小题6分,共12分)
37.编写一个方法halfArray(),要求该方法有一个元素类型为int的数组参数,方法返回一个新数组,新数组的长度与参数数组的长度相同,而新数组元素的值是参数数组各元素的一半。
38.一个Java小应用程序,界面有三个文本框和两个按钮,前两个文本框用于输入整数,第三个文本框用于输出结果。两个按钮分别表示加和减运算。当前两个文本框输入整数后,点击相应按钮,程序就将计算结果输出在第三个文本框中。以下是程序的大部分,其中监视按钮事件的方法未给出,试编写处理按钮事件的方法。
注:这里是给定部分的程序,你要编写的是actionPerformed(ActionEvent e)方法。 import java.applet.*;import javax.swing.*; import java.awt.*; import java.awt.event.*; class Panel1 extends JPanel{
JTextField text1, text2, text3;JButton addButton,subButton; Panel1(){
text1=new JTextField(10);text2=new JTextField(10);
text3=new JTextField(10);setLayout(new GridLayout(5,1));
addButton=new JButton("加");subButton=new JButton("减"); add(text1); add(text2);
add(text3); add(addButton); add(subButton);}}
public class Classl extends Applet implements ActionListener{ Pane1 panel;
public void init(){
setSize(100,200); panel=new Panel1();add(panel); (panel.addButton).addActionListener(this); (panel.subButton). addActionListener(this);} public void actionPerformed(ActionEvent e){ //这里是你要编写的代码
2010年全国自考Java语言程序设计 模拟试卷(一)
一、单项选择题(本大题共10小题,每小题1分,共10分) 1. 下列正确的句子是()
A. float 3.14; B. byte i=225; C. int k=33L; D. int p[][];
2. 当使用FileInputStream类中的read()方法时,如果没有读入一个字节数据时,返回值为() A. 0 B. -1 C. true D. false
3. 能够支持 javadoc 命令的文档注释形式是()
第 6 页 共 44 页
A. /**...// B. /*...*/ C. // D. /**...*/ 4. 以下程序代码的输出结果是()
int x=100; System.out.println(5.5+x/8); A. 18 B. 17.5 C. 9.5 D. 5.512
5. 当用户在文件对话框中选择了文件并按下了“打开/保存”按钮后,程序可利用一个方法取得文件对象,并针对这个对象使用getName()取得文件名,使用getPath()取得文件的路径,则这个方法是()
A. getFile() B. getSelectFile() C. getSelectedFile() D. getDescription()
6. 在 Java 中,表示换行符的转义字符是(). ‘\\n’ B.’n’ C. ‘\\f’ D. ‘\\dd’ 7. 一个实现Runnabel接口的类必须要实现的方法是() A. start() B. run() C. sleep() D. init() 8. 下列有关Java的叙述错误的是()
A. 强类型语言 B. 与平台无关 C. 可以使用汉字变量名 D. 不检查数组下标越界 9. 下列有关数组的叙述错误的是()
A. 数组是将一组相同类型的数据顺序存储,组成一种复合数据类型 B. 在Java语言中,数组是一种引用类型,数组名如同对象名一样,是一种引用 C. 对于多维数组,从最高维开始,可以对每一维分配不等长的空间
D. 在Java语言中,数组元素可以互相赋值,而数组名不能直接赋值
10. 当线程A使用某个对象,而此对象又需要线程B修改后才能符合A线程的需要,这时线程A就要等待线程B完成修改工作,这种现象称为()
A. 线程的同步 B. 线程的互斥 C. 线程的调度 D. 线程的就绪 二、填空题(本大题共10小题,每小题2分,共20分)
1. 在switch 语句中,通过___语句退出 switch 语句,使程序从整个 switch 语句后面的第一条语句处开始执行。
2. 在 Java 中所有实现的多维数组,实际上是由一维数组构成的___。
3. 为实现线程同步,Java语言提供了notify()、notifyAll()和___三个方法供线程在临界段中使用。 4. Java语言使用Unicode字符集,共有___个字符。
5. 闰年的条件是:每4年一个闰年,但每100年少一个闰年,每400年又增加一个闰年。如果年份用整数类型变量y表示,则y年是闰年的条件用逻辑表达式可描述为___。 6. Java语言中,逻辑类型用关键字___标识,也称布尔类型。
7. Java程序能实现多线程并行执行,为了让一个线程暂停执行,其他线程有机会被执行,可对要暂停的线程执行___方法。
8. Java应用程序和小应用程序都由一个或多个扩展名为___的文件组成。
9. ___将显示区域按行、列划分成一个个大小相等的格子,组件依次放入这些格子中。 10. 键盘事件的接口是___。
三、简答题(本大题共6小题,每小题3分,共18分)
1. 请写出:提供缓冲式输出的类、采用缓冲输出时如果想立即写入文件就调用的方法。 2. 在以下类的声明中,指出哪些是错误的以及错误的原因? ①class Class22 extends Class2201,Class2202{......} ②public abstract class Class22{......} ③abstract final class Class22{......} ④abstract public class Class22{......} ⑤public abstract class String{......}
⑥public final class Class22 extends implement interface1{......}
3. 文件随机访问应该利用什么类来实现?创建此类对象的代码应该能捕获什么类型的异常? 4. 用一个Java语句完成下面的要求:
先将整型变量a的值加1,再把它加到变量b中。 5. 用一个Java语句完成下面的要求:
先把变量a与b的差赋值给变量c,再把变量b的值减1。
第 7 页 共 44 页
6. 请写一条语句,实现用预定的颜色填充一个突出显示的矩形色块,其中矩形左上角坐标为 (200,100),右下角坐标为(400,500),调用的是类型为Graphics的g对象。 四、程序填空题(本大题共5小题,每空2分,共20分)
1. 下面小应用程序启动后自动播放一个声音文件“1.wav”。 import java.applet.*;
public class Class3001 extends Applet{
public void start(){
___=getAudioClip(getCodeBase(),\clip.___;}}
2. 下列程序的功能是每隔一秒钟输出一个字符串“Hello!”。 public class C3101 implements Runnable{
public static void main(String args[]){
C3101 t=new C3101(); Thread tt=new Thread(t);
tt.start();}
public void run(){
for(;;){
try{ ___ ;} catch(___){}
System.out.println(\
3. 设计一个JFrame窗口,窗口中心有一个文本区。另有4个菜单,每个菜单都有菜单项,每个菜单项都对应有快捷键,选择某个菜单项时,窗口中心的文本区显示相应信息。 import java.awt.*;
import java.awt.event.*; import javax.swing.*;
public class C2902 implements ActionListener{ _ __ JTextField text=new JTextField(20);
String t[]={\文件\编辑\格式\帮助\
Menu menu[]=new Menu[4];
String s[]={\打开\保存\复制\粘贴\字体\段落\小助手\关于\MenuItem jmi[]=new MenuItem[8];
C2902(){
JFrame myWin=new JFrame(\
myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container con=myWin.getContentPane(); con.add(text,\text.setEditable(false); myWin.setMenuBar(jmb); int i;
for(i=0;i<4;i++)//生成四个菜单{
menu[i]=new Menu(t[i]); jmb.add(menu[i]);}
for(i=0;i<8;i++)//每个菜单中放两个菜单项{
jmi[i]=new MenuItem(s[i]); menu[i/2].add(jmi[i]);
jmi[i].addActionListener(this);
jmi[i].___(new MenuShortcut(65+i));//设快捷键}
第 8 页 共 44 页
myWin.setBounds(300,200,400,200); myWin.setVisible(true);}
public void actionPerformed(ActionEvent e){
text.setText(\你选择了:\菜单项.\public static void main(String[] args){
new C2902();}}
4. 下面应用程序,绘制一个红色五角星。请完成程序。 import java.awt.*; import javax.swing.*;
class MyPanel extends JPanel{
public void___{
int r=100; int x1=100,
x2=(int)(r*(1-Math.cos((18*Math.PI)/180))), x3=(int)(r*(1+Math.cos((18*Math.PI)/180))), x4=(int)(r*(1-Math.cos((54*Math.PI)/180))), x5=(int)(r*(1+Math.cos((54*Math.PI)/180))), y1=0,
y2=(int)(r*(1-Math.sin((18*Math.PI)/180))), y3=(int)(r*(1-Math.sin((18*Math.PI)/180))), y4=(int)(r*(1+Math.sin((54*Math.PI)/180))), y5=(int)(r*(1+Math.sin((54*Math.PI)/180))); ___
g.drawOval(0,0,200,200);
g.drawLine(x4,y4,x1,y1);g.drawLine(x1,y1,x5,y5); g.drawLine(x5,y5,x2,y2);g.drawLine(x2,y2,x3,y3); g.drawLine(x3,y3,x4,y4);}}
public class C3002 extends JFrame{
C3002(){ super(\
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().add(new MyPanel()); setSize(210,242); setVisible(true);}
public static void main(String[] args){
new C3002();}}
5. 下面程序运行后,连续输出20个相同的单词。请完成程序。 public class C3102{
public static void main(String args[]){
___
t.start();}}
class Hello implements Runnable{
int i=0;
public void run(){
while(___){
System.out.print(i+\
五、程序分析题(本大题共5小题,每小题4分,共20分) 1. 写出下面程序的运行结果。
第 9 页 共 44 页
public class Test extends TT{
public static void main(String args[]){
Test t=new Test(\public Test(String s){
super(s);
System.out.print(\
public Test(){
this(\
class TT{
public TT(){
System.out.print(\
public TT(String s){
this();
System.out.print(\ }
2. 阅读下面程序,写出程序功能。
import java.applet.*;import java.awt.*;
public class Class3602 extends Applet implements Runnable{
Thread redBall,blueBall;Graphics redPen,bluePen; int blueSeta=0,redSeta=0; public void init(){ setSize(250,200);
redBall=new Thread(this);blueBall=new Thread(this); redPen=getGraphics();bluePen=getGraphics();
redPen.setColor(Color.red);bluePen.setColor(Color.blue); setBackground(Color.gray);} public void start(){
redBall.start();blueBall.start();} public void run(){ int x,y;
while(true){
if(Thread.currentThread()==redBall){
x=(int)(80.0*Math.cos(3.1415926/180.0*redSeta)); y=(int)(80.0*Math.sin(3.1415926/180.0*redSeta)); redPen.setColor(Color.gray);
redPen.fillOval(100+x,100+y,10,10); redSeta +=3;
if(redSeta>=360) redSeta=0;
x=(int)(80.0*Math.cos(3.1415926/180.0*redSeta)); y=(int)(80.0*Math.sin(3.1415926/180.0*redSeta)); redPen.setColor(Color.red);
redPen.fillOval(100+x,100+y,10,10); try {redBall.sleep(20);}
catch(InterruptedException e){}}
else if (Thread.currentThread()==blueBall){
x=(int)(80.0*Math.cos(3.1415926/180.0*blueSeta)); y=(int)(80.0*Math.sin(3.1415926/180.0*blueSeta)); bluePen.setColor(Color.gray);
bluePen.fillOval(150+x,100+y,10,10);
第 10 页 共 44 页
blueSeta-=3;
if(blueSeta<=-360) blueSeta=0;
x=(int)(80.0*Math.cos(3.1415926/180.0*blueSeta)); y=(int)(80.0*Math.sin(3.1415926/180.0*blueSeta)); bluePen.setColor(Color.blue);
bluePen.fillOval(150+x,100+y,10,10); try {blueBall.sleep(40);}
catch(InterruptedException e){} }}}}
3. 阅读下列程序,写出运行结果。 public class Class3205{
public static void main(String[] args){ String str1=\
String str3=\System.out.println(str1==str2);
System.out.println(str1.equals(str2)); System.out.println(str1==str3);
System.out.println(str1.equals(str3)); System.out.println(str1==str4);
System.out.println(str1.equals(str4));}} 4. 阅读下列程序,写出程序功能。
import java.awt.*;import java.awt.event.*;import javax.swing.*; public class Class3505 implements AdjustmentListener{ JScrollBar js; JLabel label; int size=20;
public Class3505(){
JFrame myWin=new JFrame(\
myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); myWin.setBounds(200,200,400,400);
Container con=myWin.getContentPane();
js=new JScrollBar(JScrollBar.HORIZONTAL,20,10,1,210); js.setSize(new Dimension(395,50)); js.addAdjustmentListener(this); con.add(js);
label=new JLabel(\con.add(label);
myWin.setVisible(true);}
public void adjustmentValueChanged(AdjustmentEvent e){ size=e.getValue();
Font f=new Font(label.getFont().getName(), label.getFont().getStyle(),size); label.setFont(f);}
public static void main(String[]args){ new Class3505();}}
5. 阅读下面程序,写出程序运行结果。 class printer{
synchronized void printchar(char ch) {
第 11 页 共 44 页
for (int i=1;i<=3;i++)System.out.print(ch); System.out.println();}}
class printerThread extends Thread{ printer ptr; char ch;
printerThread(printer ptr,char ch) {
this.ptr=ptr; this.ch=ch; }
public void run() {
for (int i=1; i<=3;i++)ptr.printchar(ch); }} public class Class3605{
public static void main(String[] args){
printer ptr=new printer();
printerThread pt1=new printerThread(ptr,A); printerThread pt2=new printerThread(ptr,B); pt1.start(); pt2.start();}}
六、程序设计题(本大题共2小题,每小题6分,共12分)
1. 编写一个小应用程序,在小应用程序中有两个线程,一个负责模仿圆转运动,另一个模仿椭圆运动。已给出部分代码,请完成程序。
import java.awt.*; import java.applet.*;
public class Class3804 extends Applet implements Runnable{ Thread thread1,thread2; Graphics g;
public void init()
{
setSize(500,500);
setBackground(Color.gray); g=getGraphics();
g.setColor(Color.red);
g.setXORMode(Color.blue); thread1=new Thread(this); thread2=new Thread(this); }
public void start()
{thread1.start(); thread2.start(); } public void run() {
int x=0,y=0; while(true) {
//这里是你要编写的代码 }}}
2. 编写一个方法hex3705(),要求将一个以字符串(如有字母用大写)形式表示的十六进制数 转换十进制正整数,其中字符串为方法参数,正整数为返回值。
第 12 页 共 44 页
2010年全国自考Java语言程序设计 模拟试卷(二)
一、单项选择题(本大题共10小题,每小题1分,共10分) 1. 按运算符操作数的数目划分,运算符 ? :的类型是() A. 三目 B. 双目 C. 四目 D. 单目
2. Java代码g.drawLine(100,100,100,100)的功能是()
A. 画一个圆 B. 画一条线段 C. 画一个点 D. 代码是错误的 3. Java中对数据库查询结果集进行操作的对象是()
A. Connection对象 B. Statement对象 C. DriverManager对象 D. ResultSet对象 4. 有关在Java中定义实例方法和类方法的叙述正确的是()
A. 前者有public修饰,后者没有public修饰 B. 前者没有public修饰,后者有public修饰 C. 前者有static修饰,后者没有static修饰 D. 前者没有static修饰,后者有static修饰
5. 在Java语言中,一般不作为容器使用的是()A. JDialog B. JFrame C. JTextArea D. JPanel 6. Java语言支持网络通信的软件都在()包中。
A. java.lang.net B. java.net C. java.net.ftp D. java.net.www 7. 有Java语句如下,则说法正确的是() int []a,b=new int[3];
A. 此语句是错误的 B. a.length的值为3 C. b.length的值为3 D. a.length和b.length的值都为3 8. 能处理鼠标拖动和移动两种事件的接口是()
A. ActionListener B. ItemListener C. MouseListener D. MouseMotionListener 9. Java语言的图像处理功能所在的类是() A. Picture B. Image C. picture D. image
10. 在Java语言中,支持网络通信的软件所在的包是() A. java.util B. java.net C. java.io D. java.internet 二、填空题(本大题共10小题,每小题2分,共20分)
1. 在Java的某个组件中绘图,一般应该为这个组件所属的子类重写___方法,在该重写的方法中进行绘图。 2. Java语言提供两个用于处理字符串的类:String类用于处理不可改变的字符串,___类用于处理可改变的字符串。
3. 在Java程序中,设置文本区对象textA能自动换行的方法是:___。
4. Java程序要采用缓冲式输入,需要先创建___对象,再利用这个对象创建BufferedReader对象。 5. 以下代码的输出结果是___。System.out.println(5>4==3<4); 6. 在Java程序中有如下代码,则输出结果为___。 Integer x=23456;
System.out.println(x.toString().substring(2,4)); 7. Date类在Java语言的___包中。
8. Java语言提供一个Graphics2D类,这个类定义了几种方法用于添加或改变图形的状态属性,其中___属性用来控制线条的宽度、笔形样式、线段连接方式或短划线图案。 9. 设定文本框对象text使其不可编辑对应的代码是___。
10. 由于sleep()方法可能产生___异常,应将sleep()方法写在try块中,并用catch块处理异常。 三、简答题(本大题共6小题,每小题3分,共18分)
1. 请解释clipRect(int x,int y,int w,int h)方法的功能及参数含义。 2. 请写出表示条件“x=2与y=3最多只有一个成立”的Java表达式。
3. 一个网络关系数据库应用系统是一个三层次结构,请写出这三个层次结构。 4. 标签(JLabel)是最简单的Swing组件,程序关于标签的基本内容有哪三个方面? 5. JDBC是Java程序与数据库连接的API,请写出它能做哪三件事?
6. 程序中要使用文件对话框打开和保存文件,应该用哪个包中的哪个类来实现? 四、程序填空题(本大题共5小题,每空2分,共20分)
第 13 页 共 44 页
1. 下面小应用程序启动后自动播放一个声音文件。
import java.applet.*;
public class Class3001___{
public void start(){
AudioClip clip=___(getCodeBase(),\clip.play();}}
2. 以下程序产生一个依赖myWin,标题为“我的对话框”的,布局管理器为FlowLayout的强制 型对话框。
import java.awt.*; import javax.swing.*; public class Class29041 {
public static void main(String[] args) {
JFrame myWin=new JFrame(); ___ ___
JButton button=new JButton(\myDialog.add(button);
myDialog.setBounds(300,300,200,200); myDialog.setVisible(true); } }
3. 以下程序产生一个确认对话框。 import javax.swing.*; public class Class2905 {
public static void main(String[] args)
{
JFrame myWin=new JFrame();
myWin.setBounds(100,100,200,300); myWin.setVisible(true);
myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); int resule=___.___(myWin, \确实要退出吗?\退出确认\System.out.println(resule); } }
4. 下面程序段是用Thread子类实现多线程(其中ThreadB与ThreadA非常相似,未给出)。 import java.util.Date; public class Class3105 {
class ThreadA extends Thread {
public void run() {
Date timeNow;
第 14 页 共 44 页
for(int i=0;i<=5;i++) {
timeNow=new Date();
System.out.println(\try{sleep(2000);}
catch(InterruptedException e){}}}} class ThreadB extends Thread {????????}
public Class3105() {
ThreadA threadA=___
ThreadB threadB=new ThreadB(); threadA.start();___ }
public static void main(String[] args)
{
new Class3105(); } }
5. 设计一个面板,该面板中有四个运动项目单选按钮和一个文本框。当某个选择项目被选中 时,在文本框中显示该选择项目。请完成程序。
import java.applet.*;import java.awt.*;import javax.swing.*; import java.awt.event.*;
public class C2901 extends Applet implements ItemListener{ _ __; String s[]={\足球\排球\篮球\乒乓球\JRadioButton box[]=new JRadioButton[4];
JTextField text=new JTextField(20);
public void init() {
setSize(400,70);
ButtonGroup group=new ButtonGroup(); for(int i=0;i<4;i++) {
box[i]=new JRadioButton(s[i]); group.add(box[i]); pan.add(box[i]);
box[i].addItemListener(this); }
add(pan);
add(text);text.setBackground(Color.cyan); }
public void___(ItemEvent e) {
text.setText(\你选择了:\
+((JRadioButton)e.getItemSelectable()).getText()); }
第 15 页 共 44 页
}
五、程序分析题(本大题共
5小题,每小题4分,共20分)
1. 阅读下面程序,写出程序功能及当输入6和9时的运行情况。 import java.awt.*; import javax.swing.*; import java.awt.event.*;
public class Class3402 implements ActionListener {
JButton butt=new JButton(\JTextField text1=new JTextField(10); JTextField text2=new JTextField(10); JTextField text3=new JTextField(10); public Class3402() {
JFrame myWin=new JFrame(\
myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container con=myWin.getContentPane();
con.setLayout(new GridLayout(4,1)); con.add(text1);con.add(text2); con.add(butt);con.add(text3); butt.addActionListener(this); myWin.pack();
myWin.setVisible(true); }
public void actionPerformed(ActionEvent e) {
int a=Integer.parseInt(text1.getText()); int b=Integer.parseInt(text2.getText()); int i;
for(i=1;i<=a*b;i++) {
if(i%a==0&&i%b==0)break; }
text3.setText(String.valueOf(i)); }
public static void main(String[]args) {
new Class3402(); } }
2. 阅读下列程序,写出程序功能。
import java.applet.*;import java.awt.*; import java.awt.event.*;
public class Class36004 extends Applet implements KeyListener {
int count=0;
TextArea text=new TextArea(5,20);
第 16 页 共 44 页
public void init() {
add(text);
text.addKeyListener(this); }
public void keyPressed(KeyEvent e) {
int t =e.getKeyCode();
if(t>=KeyEvent.VK_0 && t<=KeyEvent.VK_9) {
text.append(\
if(count ==0) text.append(\\n\}
else
text.setEditable(false); }
public void keyTyped(KeyEvent e){} public void keyReleased(KeyEvent e){} }
3. 阅读下列程序,写出程序功能。 import java.awt.*; import javax.swing.*; import java.awt.event.*;
public class C3401 implements ActionListener {
JFrame frmFrame;
JButton btnUp, btnDown;
public C3401() {
frmFrame = new JFrame(\按钮应用\frmFrame.setLayout(new GridLayout(2,1)); btnUp = new JButton(\上\
btnUp.setActionCommand(\btnUp.addActionListener(this); btnDown = new JButton(\下\
btnDown.setActionCommand(\btnDown.addActionListener(this); frmFrame.add(btnUp); frmFrame.add(btnDown); frmFrame.pack();
frmFrame.setVisible(true); }
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand(); if ( cmd.equals(\
第 17 页 共 44 页
if (btnUp.getBackground()==Color.BLUE) btnUp.setBackground(Color.red); else
btnUp.setBackground(Color.blue); else
if (btnDown.getBackground()==Color.BLUE) btnDown.setBackground(Color.red); else
btnDown.setBackground(Color.blue); }
public static void main(String[] args) {
new C3401(); }
}
4. 阅读下列程序,写出程序运行结果。
class A {
int x,y;
A(int xx,int yy){x=xx;y=yy;} }
interface A3202{int f3202(A a);} interface B3202{int g3202();}
public class C3202 extends A implements A3202,B3202 {
A a=new A(x,y); C3202(int x,int y) {
super(x,y);
this.x=x*x; this.y=y*y; }
public int f3202(A a){return x*a.x+x*a.y;} public int g3202(){return x*a.x+x*a.y;} public static void main(String[] args) {
int x=10,y=20;
A a=new C3202(x,y); C3202 c=new C3202(x,y);
System.out.println(a.x+\System.out.println(c.f3202(a)); System.out.println(c.g3202()); } }
5. 阅读下列程序,写出程序功能。 import java.awt.*; import java.applet.*; import javax.swing.*;
第 18 页 共 44 页
import java.awt.event.*;
public class C3402 extends Applet {
static JFrame myWin;
static SetBG setbg=new SetBG(); static JButton button; public void init() {
myWin=new JFrame(\
myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); myWin.setBounds(100,200,300,400); myWin.setLayout(new FlowLayout()); Container con=myWin.getContentPane(); con.setBackground(Color.red);
button=new JButton(\button.addActionListener(setbg); myWin.add(button); myWin.setVisible(true); } }
class SetBG implements ActionListener {
public void actionPerformed(ActionEvent e) {
Container con=C3402.myWin.getContentPane(); if (con.getBackground()==Color.red) con.setBackground(Color.green); else
con.setBackground(Color.red);
} }
六、程序设计题(本大题共2小题,每小题6分,共12分)
1. 编写一个方法array3702(),要求该方法有一个元素类型为int的数组参数,方法返回一个新数组,新数组的长度与参数数组的长度相同,而新数组元素的值是参数数组各元素的一半。
2. 编写一个方法string3703,要求在一个字符串数组中找出长度最短的一个元素。其中字符串数组是方法的参数,最短的一个元素是方法的返回值。
2010年全国自考Java语言程序设计 模拟试卷(三)
一、单项选择题(本大题共10小题,每小题1分,共10分) 在每小题列出的四个备选项 中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均 无分。
1. Java中实现输入/输出操作的类库在()
A. java.io包中 B. java.input包中 C. java.output包中 D. java.lang.io包中 2. 以下程序代码的输出结果是()
System.out.println(100/8);
A. 12.5 B. 12 C. 4 D. 0
3. 在Java程序中声明一个数组,错误的是()
第 19 页 共 44 页
A. int a[]; B. int a[][]; C. float a[10]; D. float [ ]a[ ];
4. 在Java程序中有定义:int x[][]=new int[4][5];则x.length和x[3].length的 值分别是()
A. 4和5 B. 5和4 C. 4和3 D. 5和3 5. 下列关于线程的说法正确的是()
A. 一个线程被创建,它就立即开始运行 B. 使用start()方法可以使一个线程立即开始运行 C. 当一个线程因为抢先机制而停止运行时,它被放在可运行队列的前面 D. 一个正在运行的线程可能因为某些情况而进入阻塞状态 6. 下列属于合法的Java标识符是()
A. _cat B. 5books C. +static D. -3.14159
7. 在Java语言中,把按钮button的标题文字设置为“第一个按钮”的方法是() A. button.SetText(\第一个按钮\ B. button.GetText(\第一个按钮\C. button.SetLabel(\第一个按钮\ D. button.GetLabel(\第一个按钮\
8. Java组件可以使用Toolkit提供的静态方法获得一个缺省的Toolkit对象,并用它加载图像,这个静态方法是()
A. getImage(String name) B. getImage(URL url) C. getDefaultToolkit() D. getToolkit() 9. 定义一个使用接口Java.lang.Runnable的类,必须要实现的方法是() A. start() B. run() C. init() D. paint()
10. 以下是创建File对象的代码,错误的是()
A. File f1=new File(\ B. File f2=new File(\
C. File f3=new File(\\\mydir\\myfile.txt\ D. File f4=new File(\\mydir\myfile.txt\二、填空题(本大题共10小题,每小题2分,共20分)
1. 如果有一个类MyFrame是JFrame的子类,能够被不同包中的类所使用,请写出该类的声明头部:___ 。 2. 在Java程序中,要创建一个10行20列的文本区,可以采用的构造方法是___。
3. ___布局是把容器划分成若干行和列的网格状,行数和列数由程序控制,组件放在网格的小格子中。 4. 在Java语言中,位异或运算的运算符为___。 5. 端口号与IP地址的组合称为___。
6. Java小程序要播放一个与程序文件在一起的名为mymusic.au的音乐文件,小程序中应用先创建AudioClip对象,若对象名为myClip,则创建对象myClip的代码为___。
7. 在Java语言中,定义一个接口,在接口名前面需要___关键字。
8. Java程序实现多线程应用的途径之一是:定义一个实现___接口的类,并在类中提供该接口的所有方法。 9. 以下程序代码的输出结果为:___。
String s1=\s3=s2.concat(\c\
System.out.println(s1==s3);
10. 采用缓冲式输入时,可以对BufferedReader对象使用___方法按行读取文件中的内容。 三、简答题(本大题共6小题,每小题3分,共18分)
1. Java.awt.event包中用来检测并对事件做出反应的模型包括哪三个组成元素?
2. 接口有与类相似的基本形式,接口有常量定义和方法定义,但没有方法的实现代码,接口 中给出某种特定功能的一组方法的规范,方法的规范主要包括哪些? 3. 请写出为8位字节流数据和16位字符流数据分别提供读和写操作的类。 4. 某Java程序要使用文件输入输出流,请写出该程序所需要的import语句。
5. 阅读下面程序,如果在横线上分别填写①i=m②i=b③i=p.a④i=p.change(100)四个赋值语句,有哪些不合法?请写出原因。
class Class2201 {
private int a;
public int change(int m){return m;}
第 20 页 共 44 页
第 40 页 共 44 页
4. 在Java语言中,整型常量有十进制、八进制和十六进制三种写法,其中八进制是以数字字符0开头,十六进制是以___开头。
5. ___是带有滚动条的面板,它是一种容器,但是只能添加一个组件。
6. 在Java语言中,一个对象通过调用___方法可以获得该对象的字符串表示。 7. 在Java程序中如果需要使用打开文件对话框和保存文件对话框,则可以用javax.swing包中的___类来实现。 8. Java程序与数据库连接方法有两种。一种是使用___与数据库连接,另一种是用纯Java的JDBC驱动程序实现与数据库连接。
9. Java小应用程序中,为了在Java页面上显示动态效果,需要使用___方法,该方法先清除paint()方法以前所画的内容,然后再调用paint()方法。
10. 三次曲线(CubicCurve2D)的方法double()中的8个参数分别是三次曲线的始点、两个控制点和___。 三、简答题(本大题共6小题,每小题3分,共18分)
1. Connection类在哪个包中?Connection对象的作用是什么?
2. 请写出表示条件“x=2与y=3至少有一个成立”的Java表达式。 3. 用一个Java语句完成下面的要求:
将变量A.b和c中最大的数值赋值给变量d。
4. java.awt.event包中用来检测并对事件做出反应的模型包括哪三个组成元素? 5. 写出下面方法的功能和方法参数的含义。
fillRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight) 6. 控制声音的播放有哪3个方法?
四、程序填空题(本大题共5小题,每空2分,共20分)
1. 定义JFrame派生的子类MyWindowDemo创建JFrame窗口。类MyWindowDemo的构造方法有五个 参数:窗口的标题名,加入窗口的组件,窗口的背景颜色以及窗口的高度和宽度。在主方法中 ,利用类MyWindowDemo创建两个类似的窗口并显示出来。 import java.awt.*; import javax.swing.*; import java.awt.event.*;
class MyWindowDemo extends JFrame{
public MyWindowDemo(String name,JButton but,Color c,int w,int h){ super();setTitle(name);setSize(w,h);
setLayout(new FlowLayout()); Container___;
contenPane.add(but);
contenPane.setBackground(c);}} public class Class2802 {
public static MyWindowDemo mw[]; public static void main(String[] args){ JButton butt1=new JButton(\我是一个按钮\JButton butt2=new JButton(\我是另一个按钮\String name1=\我的第一个窗口\String name2=\我的第二个窗口\mw=new MyWindowDemo[2];
mw[0]=new MyWindowDemo(name1,butt1,Color.blue,350,450); mw[1]=new MyWindowDemo(name2,butt2,Color.red,300,400);
for(int i=0;i<2;i++)___;}}
2. 以下是生成单选按钮对象,以及单选按钮选择事件处理方法的代码。要求当选中computer单选按钮时,在标签label中显示“计算机性能和价格介绍:”的字样。 ????
第 41 页 共 44 页
computer=new___(\计算机\生成单选按钮对象
computer.addItemListener(this); ????
public void___(ItemEvent e) {
if(e.getItemSelectable()==computer) {
label.setText(computer.getLabel()+\性能和价格介绍:\
3. 下面是一个求:1/1+1/2+2/3+3/5+5/8+8/13+13/21+21/32?前20项的和的程序段 float a=1,b=1,s=0;
for(int k=1;k<=10;k++){
s=s+a/b; a=___ s=s+b/a; b=___ } System.out.println(s);
4. 下面程序产生一个窗口,1秒后自动关闭。
public class Class3104 implements Runnable{
___
{ try{
Thread.sleep(1000); }
catch(InterruptedException e){} System.exit(0);
}
public Class3104(){
JFrame my=new JFrame();
my.setBounds(100,100,600,300); my.setVisible(true);}
public static void main(String[] args){
Class3104 t=new Class3104(); Thread tt=___; tt.start();}}
5. 小应用程序启动后自动播放一个“2.wav”声音文件。请完成程序。 import java.applet.*;
public class C3001 extends Applet{
public void start(){
___clip=getAudioClip(getCodeBase(),\___.play();}}
五、程序分析题(本大题共5小题,每小题4分,共20分) 1. 阅读下面程序,画出程序运行后的布局设计。 import java.awt.*;import javax.swing.*; public class Class3501{
public static void main(String[] args){
JFrame myWin=new JFrame(\
myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container con=myWin.getContentPane(); con.setLayout(new GridLayout(1,3));
JTextArea textA=new JTextArea(\JScrollPane jsp=new JScrollPane(textA); con.add(jsp);
JPanel jp=new JPanel();
第 42 页 共 44 页
jp.setLayout(new GridLayout(2,1)); JLabel label=new JLabel(\JTextField text=new JTextField(\jp.add(label);jp.add(text); con.add(jp);
JButton button=new JButton(\con.add(button); myWin.pack();
myWin.setVisible(true);}}
2. 阅读下面程序,写出程序运行结果。 public class Class3302{
static public void main(String args[]){
int firstArray[]={1,2,3,4};
int secondArray[]={5,6,7,8,9,10};
int myArray[];
myArray=firstArray;
System.out.println(\
for(int index=0;index {System.out.println(myArray[index]);} myArray=secondArray; System.out.println(\ for(int index=0;index import javax.swing.*;import java.awt.event.*; public class Class3502 implements ActionListener{ JMenuItem item1; JMenuItem item2; JTextField text; public Class3502(){ JFrame myWin=new JFrame(); JMenuBar menubar=new JMenuBar(); JMenu menu=new JMenu(\item1=new JMenuItem(\item2=new JMenuItem(\text=new JTextField(20); myWin.add(text); myWin.setJMenuBar(menubar); menubar.add(menu); menu.add(item1);menu.add(item2);item1.addActionListener(this); item2.addActionListener(this); myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); myWin.setBounds(100,100,200,200); myWin.setVisible(true);} public void actionPerformed(ActionEvent e){ text.setText(e.getActionCommand());} public static void main(String[]args){ new Class3502();}} 第 43 页 共 44 页 4. 阅读下列程序,写出程序功能。 import javax.swing.*;import java.awt.event.*; public class Class3405 extends JFrame implements ActionListener{ public JFrame mw1,mw2; public Class3405(){ JButton butt1=new JButton(\我是一个按钮\butt1.setActionCommand(\ JButton butt2=new JButton(\我是另一个按钮\butt2.setActionCommand(\butt1.addActionListener(this); butt2.addActionListener(this); String name1=\我的第一个窗口\String name2=\我的第二个窗口\ mw1=new JFrame(name1);mw1.setSize(500,500); mw2=new JFrame(name2);mw2.setSize(300,300); mw1.getContentPane().add(butt1); mw2.getContentPane().add(butt2); mw1.setVisible(true);mw2.setVisible(true); } public void actionPerformed(ActionEvent e){ boolean yesNo; if(e.getActionCommand().equals(\yesNo=!mw2.isVisible(); mw2.setVisible(yesNo);} else{ yesNo=!mw1.isVisible(); mw1.setVisible(yesNo);}} public static void main(String[] args){ new Class3405();}} 5. 阅读下列程序,写出程序运行结果。 class A1{ public void f(int aa,int bb){ System.out.println(aa+bb);}} class A2 extends A1{ public void f(int aa,int bb){ System.out.println(aa-bb);}} public class C3201 extends A2{ public void f(int aa,int bb){ System.out.println(aa*bb);} public static void main(String[] args){ A1 a=new A1(); A1 a1=new A2(); A2 a2=new C3201(); a.f(20,10); a1.f(20,10); a2.f(20,10);}} 六、程序设计题(本大题共2小题,每小题6分,共12分) 1. 设计一个应用程序的界面如下,功能是:拖动水平滑块,在上面的标签左边显示滑块的当 前值,范围为100~200,起始点为140,滑块宽度为10。 2. 编写一个方法hex3704(),要求将一个十进制正整数n转换成十六进制数,其中n为方法参数 ,十六进制数以字符串(如有字母用大写)的形式返回。 第 44 页 共 44 页