当前位置:主页 > 论文百科 > 英文数据库 >

Java语言程序设计考试题及答案(四)

发布时间:2017-03-11 19:44

  本文关键词:Java语言程序设计,由笔耕文化传播整理发布。


Java语言程序设计考试题及答案(四)

2015-11-11 10:13:57 来源:大学生联盟   

Java语言程序设计考试题及答案(四)
一、单项选择题(本大题共10小题,每小题1分,共10分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
 1. 下列正确的句子是() (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 命令的文档注释形式是() (1分)
 A:/**...//
 B:/*...*/
 C://
 D:/**...*/
 4. 以下程序代码的输出结果是()
 int x=100;
 System.out.println(5.5+x/8); (1分)
 A:18
 B:17.5
 C:9.5
 D:5.512
 5. 当用户在文件对话框中选择了文件并按下了“打开/保存”按钮后,程序可利用一个方法取得文件对象,并针对这个对象使用getName()取得文件名,使用getPath()取得文件的路径,则这个方法是() (1分)
 A:getFile()
 B:getSelectFile()
 C:getSelectedFile()
 D:getDescription()
 6. 在 Java 中,表示换行符的转义字符是() (1分)
 
 A:A
 B:B
 C:C
 D:D
 7. 一个实现Runnabel接口的类必须要实现的方法是() (1分)
 A:start()
 B:run()
 C:sleep()
 D:init()
 8. 下列有关Java的叙述错误的是() (1分)
 A:强类型语言
 B:与平台无关
 C:可以使用汉字变量名
 D:不检查数组下标越界
 9. 下列有关数组的叙述错误的是() (1分)
 A:数组是将一组相同类型的数据顺序存储,组成一种复合数据类型
 B:在Java语言中,数组是一种引用类型,数组名如同对象名一样,是一种引用
 C:对于多维数组,从最高维开始,可以对每一维分配不等长的空间
 D:在Java语言中,数组元素可以互相赋值,而数组名不能直接赋值
 10. 当线程A使用某个对象,而此对象又需要线程B修改后才能符合A线程的需要,这时线程A就要等待线程B完成修改工作,这种现象称为() (1分)
 A:线程的同步
 B:线程的互斥
 C:线程的调度
 D:线程的就绪
二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。
1. 在switch 语句中,通过语句退出 switch 语句,使程序从整个 switch 语句后面的第一条语句处开始执行。 (2分)break
2. 在 Java 中所有实现的多维数组,实际上是由一维数组构成的。 (2分)
3. 为实现线程同步,Java语言提供了notify()、notifyAll()和Sycgised()三个方法供线程在临界段中使用。 (2分)
4. Java语言使用Unicode字符集,共有65536个字符。 (2分)
5. 闰年的条件是:每4年一个闰年,但每100年少一个闰年,每400年又增加一个闰年。如果年份用整数类型变量y表示,则y年是闰年的条件用逻辑表达式可描述为。 (2分)
y%4&&y!%100||y%400
6. Java语言中,逻辑类型用boolean关键字标识,也称布尔类型。 (2分)
7. Java程序能实现多线程并行执行,为了让一个线程暂停执行,其他线程有机会被执行,可对要暂停的线程执行wait()方法。 (2分)
8. Java应用程序和小应用程序都由一个或多个扩展名为的class文件组成。 (2分)
9. 将显示区域按行、列划分成一个个大小相等的格子,组件依次放入这些格子中。GridLayout (2分)
10. 键盘事件的接口是。keyListener (2分)
三、程序填空题(本大题共5小题,每空2分,共20分)
1. 下面小应用程序启动后自动播放一个声音文件“1.wav”。
 import java.applet.*;
 public class Class3001 extends Applet
 {
 public void start()
 {
 =getAudioClip(getCodeBase(),"1.wav");
 clip.;
 }
 } (2分)
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(int i=0;i<10;i++)
 {
 try{sleep(1000);
 }catch(Exception e){e.printStackTrace();}
 System.out.println("Hello");
 }
 }
 } (2分)
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("Ex0606");
 myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 Container con=myWin.getContentPane();
 con.add(text,"Center");
 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));//设快捷键
 }
 myWin.setBounds(300,200,400,200);
 myWin.setVisible(true);
 }
 public void actionPerformed(ActionEvent e)
 {
 text.setText("你选择了:"+e.getActionCommand()+"菜单项.");
 }
 public static void main(String[] args)
 {
 new C2902();
 }
 } (2分)
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("C3002");
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 getContentPane().add(new MyPanel());
 setSize(210,242);
 setVisible(true);
 }
 public static void main(String[] args)
 {
 new C3002();
 }
 } (2分)
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+":Hello");
 }
 }
 } (2分)
四、程序分析题(本大题共5小题,每小题4分,共20分)
 1. 写出下面程序的运行结果。
 public class Test extends TT
 {
 public static void main(String args[])
 {
 Test t=new Test("Tom.");
 }
 public Test(String s)
 {
 super(s);
 System.out.print("How are you?");
 }
 public Test()
 {
 this("I am Jack.");
 }
 }
 class TT
 {
 public TT()
 {
 System.out.print("Hi!");
 }
 public TT(String s)
 {
 this();
 System.out.print("I am "+s);
 }
   } (4分)
 
 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);
 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){}
 }
 }
 }
 } (4分)
 
 3. 阅读下列程序,写出运行结果。
 public class Class3205
 {
 public static void main(String[] args)
 {
 String str1="abc";
 String str2="Abc";
 String str3="abc";
 String str4=new String("abc");
 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分)
 
 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("Class3505");
 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("Class3505");
 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();
 }
 } (4分)
 
 5. 阅读下面程序,写出程序运行结果。
 class printer
 {
 synchronized void printchar(char ch)
 {
 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();
 }
 } (4分)
 
五、程序设计题(本大题共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)
 {
 //这里是你要编写的代码
 }
 }
 } (6分)
 
 2. 编写一个方法hex3705(),要求将一个以字符串(如有字母用大写)形式表示的十六进制数转换十进制正整数,其中字符串为方法参数,正整数为返回值。 (6分)
 
六、简答题(本大题共6小题,每小题3分,共18分)
 1. 请写出:提供缓冲式输出的类、采用缓冲输出时如果想立即写入文件就调用的方法。 (3分)
 
 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分)
 
 3. 文件随机访问应该利用什么类来实现?创建此类对象的代码应该能捕获什么类型的异常? (3分)
 
 4. 用一个Java语句完成下面的要求:
 先将整型变量a的值加1,再把它加到变量b中。 (3分)
 
 5. 用一个Java语句完成下面的要求:
 先把变量a与b的差赋值给变量c,再把变量b的值减1。 (3分)
 
 6. 请写一条语句,实现用预定的颜色填充一个突出显示的矩形色块,其中矩形左上角坐标为(200,100),右下角坐标为(400,500),调用的是类型为Graphics的g对象。 (3分)
 
参考答案
一、单项选择题 (本大题共10小题,每小题1分,共10分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
 1:参考答案:D
参考解析:(P71)声明二维数组的一般形式有以下3种:
 ①类型  数组名 [][]
 ②类型  [][]  数组名
 ③类型  []  数组名 []
 考试题内容:
 下列正确的句子是()
 A:float 3.14;
 B:byte i=225;【-128,127】
 C:int k=33L;
 D:int p[][];
 2:参考答案:B
参考解析:(P176)read()方法的返回值类型为int型,用-1表示流在读之前已结束。
 考试题内容:
 当使用FileInputStream类中的read()方法时,如果没有读入一个字节数据时,返回值为()
 A:0
 B:-1
 C:true
 D:false
 3:参考答案:D
参考解析:(P6)/**……*/这种注释是文档注释,文档注释能被实用程序javadoc接受,由它能自动生成程序的HTML文档。
 考试题内容:
 能够支持 javadoc 命令的文档注释形式是()
 A:/**...//
 B:/*...*/
 C://
 D:/**...*/
 4:参考答案:B
参考解析:(P14)Java程序中的类只能继承一个类,这种继承称为单继承。Java语言虽不允许一个类继承多个类,但允许一个类实现多个接口。接口有与类相似的基本形式。
 考试题内容:
 以下程序代码的输出结果是()
int x=100;
System.out.println(5.5+x/8);
 A:18
 B:17.5
 C:9.5
 D:5.512
 5:参考答案:C
参考解析:(P182)
 考试题内容:
 当用户在文件对话框中选择了文件并按下了“打开/保存”按钮后,程序可利用一个方法取得文件对象,并针对这个对象使用getName()取得文件名,使用getPath()取得文件的路径,则这个方法是()
 A:getFile()
 B:getSelectFile()
 C:getSelectedFile()
 D:getDescription()
 6:参考答案:A
参考解析:(P9)
 考试题内容:
 在 Java 中,表示换行符的转义字符是()
 
 A:A
 B:B
 C:C
 D:D
 7:参考答案:B
参考解析:(P163)本题考核知识点是Runnable接口的使用。实现一个接口必须实现接口中的所有方法,而Runnable接口只有一个方法run()。
 考试题内容:
 一个实现Runnabel接口的类必须要实现的方法是()
 A:start()
 B:run()
 C:sleep()
 D:init()
 8:参考答案:D
参考解析:(P3)
 考试题内容:
 下列有关Java的叙述错误的是()
 A:强类型语言
 B:与平台无关
 C:可以使用汉字变量名
 D:不检查数组下标越界
 9:参考答案:D
参考解析:(P70)数组是一种引用类型,一个数组名在不同时间可引用不同的数组,数组名之间可以赋值。
 考试题内容:
 下列有关数组的叙述错误的是()
 A:数组是将一组相同类型的数据顺序存储,组成一种复合数据类型
 B:在Java语言中,数组是一种引用类型,数组名如同对象名一样,是一种引用
 C:对于多维数组,从最高维开始,可以对每一维分配不等长的空间
 D:在Java语言中,数组元素可以互相赋值,而数组名不能直接赋值
 10:参考答案:A
参考解析:(P168)
 考试题内容:
 当线程A使用某个对象,而此对象又需要线程B修改后才能符合A线程的需要,这时线程A就要等待线程B完成修改工作,这种现象称为()
 A:线程的同步
 B:线程的互斥
 C:线程的调度
 D:线程的就绪
二、填空题 (本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。
 1:参考答案:(P23)break
 考试题内容:
 在switch 语句中,通过_____语句退出 switch 语句,使程序从整个 switch 语句后面的第一条语句处开始执行。
 2:参考答案:(P71)数组的数组
 考试题内容:
 在 Java 中所有实现的多维数组,实际上是由一维数组构成的_____。
 3:参考答案:(P168)wait()
 考试题内容:
 为实现线程同步,Java语言提供了notify()、notifyAll()和_____三个方法供线程在临界段中使用。
 4:参考答案:(P7)65536
 考试题内容:
 Java语言使用Unicode字符集,共有_____个字符。
 5:参考答案:(P16)(y%4==0&&y%100!=0)||y%400==0
 考试题内容:
 闰年的条件是:每4年一个闰年,但每100年少一个闰年,每400年又增加一个闰年。如果年份用整数类型变量y表示,则y年是闰年的条件用逻辑表达式可描述为_____。
 6:参考答案:(P8)Boolean
 考试题内容:
 Java语言中,逻辑类型用关键字_____标识,也称布尔类型。
 7:参考答案:(P161)sleep()
 考试题内容:
 Java程序能实现多线程并行执行,为了让一个线程暂停执行,其他线程有机会被执行,可对要暂停的线程执行_____方法。
 8:参考答案:(P11).class
 [解析]Java程序的扩展名为“.class”,源程序的扩展名为“.java”。
 考试题内容:
 Java应用程序和小应用程序都由一个或多个扩展名为_____的文件组成。
 9:参考答案:(P98)GridLayout
 [解析]常用的布局类:FlowLayout为依次放置组件;BorderLayout将组件放置在边界上; CardLayout将组件像扑克牌一样叠放,而每次只能显示其中的一个组件;GridLayout将显示区域按行、列划分成一个个大小相等的格子,组件依次放入这些格子中;GridBagLayout能进行更精细的位置控制。
 考试题内容:
 _____将显示区域按行、列划分成一个个大小相等的格子,组件依次放入这些格子中。
 10:参考答案:(P132)KeyListener
 [解析]键盘事件的接口是KeyListener,注册键盘事件监视器的方法是addKeyListener(监视器)。实现KeyListener接口的方法有3个:
 (1)keyPressed(KeyEvent e),键盘上某个键被按下。
 (2)keyReleased(KeyEvent e),键盘上某下键被按下后,又释放。
 (3)keyTyped(KeyEvent e),keyPressed和keyReleased两方法的组合
 考试题内容:
 键盘事件的接口是_____。
三、程序填空题 (本大题共5小题,每空2分,共20分)
 1:参考答案:AudioClip clip
 play()
 ,
 考试题内容:
 下面小应用程序启动后自动播放一个声音文件“1.wav”。
import java.applet.*;
public class Class3001 extends Applet
{
public void start()
{
_____=getAudioClip(getCodeBase(),"1.wav");
clip._____;
}
}
 2:参考答案:sleep(1000)
 InterruptedException e
 ,
 考试题内容:
 下列程序的功能是每隔一秒钟输出一个字符串“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("Hello");
}
}
}
 3:参考答案:MenuBar jmb=new MenuBar();
 setShortcut
 ,
 考试题内容:
 设计一个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("Ex0606");
myWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container con=myWin.getContentPane();
con.add(text,"Center");
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));//设快捷键
}
myWin.setBounds(300,200,400,200);
myWin.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
text.setText("你选择了:"+e.getActionCommand()+"菜单项.");
}
public static void main(String[] args)
{
new C2902();
}
}
 4:参考答案:paintComponent(Graphics g);
 g.setColor(Color.RED);
 ,
 考试题内容:
 下面应用程序,绘制一个红色五角星。请完成程序。
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("C3002");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().add(new MyPanel());
setSize(210,242);
setVisible(true);
}
public static void main(String[] args)
{
new C3002();
}
}
 5:参考答案:Thread t=new Thread(new Hello());
 i++<20
 ,
 考试题内容:
 下面程序运行后,连续输出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+":Hello");
}
}
}
四、程序分析题 (本大题共5小题,每小题4分,共20分)
 1:参考答案:输出结果为:
 Hi!I am Tom.How are you?
 考试题内容:
 写出下面程序的运行结果。
public class Test extends TT
{
public static void main(String args[])
{
Test t=new Test("Tom.");
}
public Test(String s)
{
super(s);
System.out.print("How are you?");
}
public Test()
{
this("I am Jack.");
}
}
class TT
{
public TT()
{
System.out.print("Hi!");
}
public TT(String s)
{
this();
System.out.print("I am "+s);
}
  }
 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);
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:参考答案:(P75)运行结果:
 false
 false
 true
 true
 false
 true
 [解析]str1.equals(str2)是str1t和str2两个字符串的内容比较是否相等,str1==str2表示str1和str2两个字符串是
 否引用同一个对象。为了比较基本数据类型变量的值是否相等是使用“==”,但这个办法并不适用于String对象(或者
 其他任何对象)。对于str1和str3是引用同一个字符串常量,其内容当然相同。而str1和str4内容虽然相同但引用的不
 是同一对象,这是因为str1引用的是编译时就确定的字符串常量,str4引用的是程序运行时才创建的对象。
 考试题内容:
 阅读下列程序,写出运行结果。
public class Class3205
{
public static void main(String[] args)
{
String str1="abc";
String str2="Abc";
String str3="abc";
String str4=new String("abc");
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:参考答案:程序功能:应用程序窗口中产生一个水平滚动条,下面是一个标签,当拖动滚动条滑块时,标签里的文字的大小随着
 滑块的移动而变化。文字字号的范围是1~200。
 考试题内容:
 阅读下列程序,写出程序功能。
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("Class3505");
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("Class3505");
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:参考答案:程序运行结果:
 AAA
 AAA
 AAA
 BBB
 BBB
 BBB
 [解析]本程序当两个循环次数改为30时,输出结果将不再是先所有行都是A,然后所有行都是B,会出现若干行A,若干
 行B,再若干行A,若干行B的情况,那是因为两个线程在同时运行且运行次数比较多,CPU在分时为它们服务,循环次数
 少分时体现不出来,CPU的一个时间单位一个线程就已经完成了。即使是循环30次,但也不会出现一行中既有A又有B的情
 况,这是因为输出字符的方法printchar()被synchronized修饰,任何时刻都只能有一个线程使用printchar(),在一行
 中不会输出一部分A一部分B,如果把synchronized去掉,则会出现这种情况。
 考试题内容:
 阅读下面程序,写出程序运行结果。
class printer
{
synchronized  void printchar(char ch)
{
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:参考答案:if(Thread.currentThread()==thread1)
 {
 g.setColor(Color.gray);
 g.drawArc(50,50,200,200,x,1);
 x=(x+1);
 try
 {Thread.sleep(10);}
 catch(InterruptedException e){}
 }
 else if (Thread.currentThread()==thread2)
 {
 g.setColor(Color.gray);
 g.drawArc(150,350,300,100,y,1);
 y=(y+1);
 try
 {Thread.sleep(5);}
 catch(InterruptedException e){}
 }
 [解析]本程序利用了异或绘图模式,第一圈是画出圆,再重复画时,相当于擦除,所以第二圈画完也就擦完了,第三
 圈再画,第四圈再擦,反复循环,形成一种漂亮的动画效果。
 考试题内容:
 编写一个小应用程序,在小应用程序中有两个线程,一个负责模仿圆转运动,另一个模仿椭圆运动。已给出部分代码,请完成程序。
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:参考答案:int hex3705(String s)
 {
 int n=0;
 byte b[]=s.getBytes();
 int i=b.length,k=1;
 while(--i>=0)
 {
 int t=b[i]-48;
 if(t>10)t=t-7;
 n=n+t*k;
 k*=16;
 }
 return n;
 }
 [解析]完整的程序如下:
 public class Class3705
 {
 static int hex3705(String s)
 {
 int n=0;
 byte b[]=s.getBytes();//字符串存入字节数组,转化为字符
 int i=b.length,k=1;
 while(--i>=0)//对字节数组每个元素进行分析
 {
 int t=b[i]-48;//字符‘0’的ASCII码值是48
 if(t>10)t=t-7;//若是字母,需要减55,‘A’的ASCII码值是65
 n=n+t*k;
 k*=16;//k是16的幂
 }
 return n;
 }
 public static void main(String[] args)
 {
 System.out.println(hex3705("10D"));
 }
 }
 运行结果为:269
 考试题内容:
 编写一个方法hex3705(),要求将一个以字符串(如有字母用大写)形式表示的十六进制数转换十进制正整数,其中字符串为方法参数,正整数为返回值。
六、简答题 (本大题共6小题,每小题3分,共18分)
 1:参考答案:(P179)BufferedWriter类、flush()方法。
 考试题内容:
 请写出:提供缓冲式输出的类、采用缓冲输出时如果想立即写入文件就调用的方法。
 2:参考答案:(P49)
 (1)错误:Java语言不支持多重继承。
 (3)错误:abstract和final不能同时修饰类。
 (5)错误:类名不能使用关键字String命名。
 考试题内容:
 在以下类的声明中,指出哪些是错误的以及错误的原因?
①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:参考答案:(P180)RandomAccessFile类
 FileNotFoundException异常
 考试题内容:
 文件随机访问应该利用什么类来实现?创建此类对象的代码应该能捕获什么类型的异常?
 4:参考答案:(P14)b=b+(++a);或者b+=++a;
 [解析]这是一个表达式语句,不要忘记加分号。不能写成b=b+++a;这相当于b=(b++)+a。
 考试题内容:
 用一个Java语句完成下面的要求:
先将整型变量a的值加1,再把它加到变量b中。
 5:参考答案:(P14)c=a-(b--);或c=a-b--;
 考试题内容:
 用一个Java语句完成下面的要求:
先把变量a与b的差赋值给变量c,再把变量b的值减1。
 6:参考答案:(P141)g.fill3DRect(200,100,200,400,true);
 考试题内容:
 请写一条语句,实现用预定的颜色填充一个突出显示的矩形色块,其中矩形左上角坐标为(200,100),右下角坐标为(400,500),调用的是类型为Graphics的g对象。


  本文关键词:Java语言程序设计,由笔耕文化传播整理发布。



本文编号:250647

资料下载
论文发表

本文链接:https://www.wllwen.com/wenshubaike/mishujinen/250647.html


Copyright(c)文论论文网All Rights Reserved | 网站地图 |

版权申明:资料由用户bb346***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com