Java语言程序设计试题及答案

时间:2017-04-20 12:45:15 java试题 我要投稿

Java语言程序设计试题及答案

  Java语言程序设计全书从Java语言的基本特点入手,详细介绍了Java语言的基本概念和编程方法,同时深入介绍了Java的高级特性。以下是由阳光网小编整理关于Java语言程序设计试题的内容,希望大家喜欢!

Java语言程序设计试题及答案

  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分)

  Java语言程序设计试题答案

  一、单项选择题 (本大题共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两方法的组合

  试题内容:

  键盘事件的接口是_____。

下一页更多有关“Java语言程序设计试题及答案”的内容