Java程序设计习题集(含答案) 下载本文

Java程序设计习题集

目 录

一、判断题 .................................................................................- 1 - 二、选择题 .................................................................................- 3 - 三、填空题 ............................................................................... - 16 - 四、写出下列程序完成的功能 .................................... - 24 - 五、写出下面程序的运行结果 .................................... - 28 - 六、使用Java语言编写程序 ........................................ - 32 - 七、简答题 ............................................................................... - 33 -

Java程序设计习题集

一、判断题

1.Java程序里,创建新的类对象用关键字new,回收无用的类对象使用关键字free。( F )

2.有的类定义时可以不定义构造函数,所以构造函数不是必需的。( F ) 3.类及其属性、方法可以同时有一个以上的修饰符来修饰。( T )

4.Java的屏幕坐标是以像素为单位,容器的左下角被定为坐标的起点。( F )(应该是左上角)

5.抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法。( F) 6.Final类中的属性和方法都必须被final修饰符修饰。( F )(静态的必须被静态的修饰符修饰)

7.最终类不能派生子类,最终方法不能被覆盖。(T ) 8.子类要调用父类的方法,必须使用super关键字。( T ) 9.一个Java类可以有多个父类。( F )

10.如果p是父类Parent的对象,而c是子类Child的对象,则语句c = p是正确的。( F ) 11.一个类如果实现了某个接口,那么它必须重载该接口中的所有方法。( T )

- 1 - 第 页

Java程序设计习题集

12.当一个方法在运行过程中产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。( T )

13.接口是特殊的类,所以接口也可以继承,子接口将继承父接口的所有常量和抽象方法。( T )

14.用“+”可以实现字符串的拼接,用- 可以从一个字符串中去除一个字符子串。( F )

15.一个容器中可以混合使用多种布局策略。( T )

16.一个线程对象的具体操作是由run()方法的内容确定的,但是Thread类的run()方法是空的,其中没有内容;所以用户程序要么派生一个Thread的子类并在子类里重新定义run()方法,要么使一个类实现Runnable接口并书写其中run()方法的方法体。( T )

17.Java的源代码中定义几个类,编译结果就生成几个以.class为后缀的字节码文件。( T )

18.Java Applet是由独立的解释器程序来运行的。( F ) 19.Java Applet只能在图形界面下工作。( T ) 20.Java的字符类型采用的是ASCII编码。( F )

21.Java的各种数据类型占用固定长度,与具体的软硬件平台环境无关。( T) 22.容器是用来组织其他界面成分和元素的单元,它不能嵌套其他容器。( F) 23、Java是不区分大小写的语言。( F)

24、Java的源代码中定义几个类,编译结果就生成几个以.class为后缀的字节码文件。( T )

25、Java Application是由独立的解释器程序来运行的。( F )

26、Java Applet的字节码文件必须嵌入HTML的文件中并由负责解释HTML文件的WWW浏览器充当解释器来解释运行。( F )

27、Java Application只能在字符界面下工作。( F ) 28、Java的字符类型采用的是Unicode编码,每个Unicode码占16个比特。( T )

29、Java源程序是由类定义组成的,每个程序可以定义若干个类,但只有一个类是主类。(T )

30、子类的域和方法的数目一定大于等于父类的域和方法的数目。( F ) 31、类在实现接口的方法时,必须显示地使用public修饰符。( T ) 32、一个类只能有一个父类,但一个接口可以有一个以上的父接口。(T ) 33、程序中抛出异常时(throw ?),只能抛出自己定义的异常对象。( F ) 34、System类中的in是一个输入对象。( T )

35、实现一个接口,则在类中一定要实现接口中的所有方法。( T) 36、所有的文件输入/输出流都继承于InputStream类/OutputStream类。( F )

37、一个异常处理中 finally语句块只能有一个或者可以没有。(F )

- 2 - 第 页

Java程序设计习题集

38、语句import java.applet.Applet;最后的Applet是代表类(class)。( T )

39、类体中private修饰的变量在本类中能访问,类生成的对象也能访问。( F )

40、线程使用sleep()方法休眠后,可以用notify()方法唤醒。( F ) 41、一个异常处理中 finally语句块只能有一个或者可以没有。( T ) 42、用Javac编译Java源文件后得到代码叫字节码。(T )

43、数组、类和接口都是引用数据类型。( F ) 44、一个Applet编译后的类名是Test.class,运行此小程序的命令是Java Test。( F )

45、Java语言中一个Char类型的数据占用2个字节大小的内存空间。( T ) 46、编译语句Double aDouble=37.2D不会出现编译错误。(F ) 47、编译语句int aInt=66666不会出现编译错误。(T ) 48、判断下面说法的正误:

if(true){int i=17;}

System.out.println(i);

运行此程序的结果是输出17。 (F) 49、float x=26f; int y=26; int z=x/y; 以上语句能正常编译和运行。( F) 50、判断下面说法的正误:

int x=9; if(x>8 and x<10) System.out.println(\以上语句运行的结果是显示true。 (T )

51、判断下面说法的正误:

String str; System.out.println(str.length()); 以上语句运行的结果是显示0 。 (F )

52、抽象类不能实例化。 (T )

53、一个方法最多能有一个return语句。 ( F) 54、接口名可以作为方法返回值的类型。 ( T)

55、类A和类B位于同一个包中,则除了私有成员,类A可以访问类B的所有其他成员。 ( T)

二、选择题

1.编译Java Applet 源程序文件产生的字节码文件的扩展名为( B )。

A、java B、class C、html D、exe

2.main方法是Java Application程序执行的入口点,关于main方法的

- 3 - 第 页

Java程序设计习题集

方法头以下哪项是合法的( BC )? A、public static void main( )

B、public static void main( String args[] ) C、public static int main(String [] arg ) D、public void main(String arg[] )

3.为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( A )。

A、static void method( ) B、public void method( ) C、final void method( ) D、abstract void method( ) 4.下列哪个是合法的Java标识符?( BC )

A、Tree&Glasses B、FirstJavaApplet C、_$theLastOne D、273.5

5.Java Application源程序的主类是指包含有( A )方法的类。 A、main方法 B、toString方法

C、init方法 D、actionPerfromed方法

6.Java的字符类型采用的是Unicode编码方案,每个Unicode码占用( B )个比特位。

A、8 B、16 C、32 D、64 7.设 a = 8,则表达式 a >>> 2 的值是( B )。

A、1 B、2 C、3 D、4 8.若a的值为3时,下列程序段被执行后,c的值是多少?( C ) c = 1; if ( a>0 ) if ( a>3 ) c = 2; else c = 3; else c = 4;

A、1 B、2 C、3 D、4

9.在编写Java Application程序时,若需要使用到标准输入输出语句,必须在程序的开头写上( C )语句。

A、import java.awt.* ; B、import java.applet.Applet ; C、import java.io.* ; D、import java.awt.Graphics ; 10.对于构造函数,下列叙述正确的是( ACD )。 A、构造函数是类的一种特殊函数,它的方法名必须与类名相同。 B、构造函数的返回类型只能是void型。

C、构造函数的主要作用是完成对类的对象的初始化工作。 D、一般在创建新对象时,系统会自动调用构造函数。 11.下面的是关于类及其修饰符的一些描述,正确的是:( AD )。 A、abstract类只能用来派生子类,不能用来创建abstract类的对象。 B、final类不但可以用来派生子类,也可以用来创建final类的对象。 C、abstract不能与final同时修饰一个类。

- 4 - 第 页

Java程序设计习题集

D、abstract方法必须在abstract类中声明,但abstract类定义中可以没有abstract方法。

12.若需要定义一个类域或类方法,应使用哪种修饰符?( A ) A、static B、package C、private D、public 13.若在某一个类定义中定义有如下的方法: abstract void performDial( );

该方法属于( D )。

A、本地方法 B、最终方法 C、解态方法 D、抽象方法 14.下列关于静态初始化器的叙述中,哪一个是正确的?( B ) A、静态初始化器是在构造函数之前加上static修饰符。 B、静态初始化器是对类自身进行初始化。 C、静态初始化器在同一个类中只能有一个。

D、静态初始化器是在其所属的类加载内存时不是由系统自动调用执行。 15.不使用static修饰符限定的方法称为对象(或实例)方法,下列哪一个说法是正确的?( AB )

A、实例方法可以直接调用父类的实例方法。 B、实例方法可以直接调用父类的类方法。

C、实例方法可以直接调用其他类的实例方法。 D、实例方法不可以直接调用本类的类方法。 16.设有下面两个类的定义:

class Person {}

class Student extends Person {

long id; // 身份证号

int score; // 入学总分 String name; // 姓名 int getScore(){return score;} }

问:类Person和类Student的关系是( B )。 A、包含关系 B、继承关系

C、关联关系 D、无关系,上述类定义有语法错误 17.设有下面的两个类定义: class AA {

void Show(){ System.out.println(“我喜欢Java!”); }

class BB extends AA {

void Show(){ System.out.println(“我喜欢C++!”); }

则顺序执行如下语句后输出结果为:( A )

- 5 - 第 页

Java程序设计习题集

AA a; BB b;

a.Show(); b.Show();

A、我喜欢Java! B、我喜欢C++! 我喜欢C++! 我喜欢Java! C、我喜欢Java! D、我喜欢C++! 我喜欢Java! 我喜欢C++! 18.设有下面的一个类定义:

class AA {

static void Show( ){ System.out.println(“我喜欢Java!”); } }

class BB { void Show( ){ System.out.println(“我喜欢C++!”); } } 若已经使用AA类创建对象a和BB类创建对象b,则下面哪一个方法调用是正确的:( AC )

A、a.Show( ) B、AA.Show( ); b.Show( ) BB.Show( ); C、AA.Show( ); D、a.Show( );

b.Show( ); BB.Show( );

19.在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序特性称为( C )。 A、隐藏 B、覆盖 C、重载 D、Java不支持此特性 20.对于构造函数,下列叙述不正确的是( C )。 A、构造函数也允许重载。

B、子类无条件地继承父类的无参构造函数。

C、子类不允许调用父类的构造函数。

D、在同一个类中定义的重载构造函数可以相互调用。

21.在使用interface声明一个接口时,只可以使用( D )修饰符修饰该接口。

A、private B、protected C、private protected D、public 22.设有下面两个赋值语句:

a = Integer.parseInt(“1024”);

b = Integer.valueOf(“1024”).intValue(); 下述说法正确的是( D )。 A、a是整数类型变量,b是整数类对象。 B、a是整数类对象,b是整数类型变量。

C、a和b都是整数类对象并且它们的值相等。 D、a和b都是整数类型变量并且它们的值相等。

- 6 - 第 页

Java程序设计习题集

23.在Java Applet程序用户自定义的Applet子类中,常常重载( D )方法在Applet的界面中显示文字、图形和其它界面元素。 A、start( ) B、stop( ) C、init( ) D、paint( ) 24.在Java中,存放字符串常量的对象属于(B )类对象。 A、Character B、String C、StringBuffer D、Vector

25.在Java中,开发图形用户界面的程序需要使用一个系统提供的类库,这个类库就是( B )包。

A、java.io B、java.awt

C、java.applet D、java.awt.event 26.在Java图形用户界面编程中,若显示一些不需要修改的文本信息,一般是使用( C )类的对象来实现。

A、JLabel B、JButton C、JTextArea D、JTextField 27.创建一个标识有“关闭”按钮的语句是( D )。 A、JTextField b = new JTextField(“关闭”); B、JLabel b = new JLabel(“关闭”);

C、JCheckbox b = new JCheckbox(“关闭”);

D、JButton b = new JButton(“关闭”);

28.在编写异常处理的Java程序中,每个catch语句块都应该与( C )语句块对应,使得用该语句块来启动Java的异常处理机制。

A、if – else B、switch C、try D、throw

29.在编写Java Applet程序时,若需要对发生的事件作出响应和处理,一般需要在程序的开头写上( D )语句。

A、import java.awt.* ; B、import java.applet.* ; C、import java.io.* ; D、import java.awt.event.* ; 30.对于子类的构造函数说明,下列叙述中不正确的是( BC )。 A、子类无条件地继承父类的无参构造函数。

B、子类可以在自己的构造函数中使用super关键字来调用父类的含

参数构造函数,但这个调用语句必须是子类构造函数的第一个可

执行语句。

C、在创建子类的对象时,将先执行继承自父类的无参构造函数,然后再执行自己的构造函数。 D、子类不但可以继承父类的无参构造函数,也可以继承父类的有参

构造函数。

31.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的 ?( B )

- 7 - 第 页

Java程序设计习题集

A、 ArrayList myList=new Object(); B、 List myList=new ArrayList(); C、 ArrayList myList=new List(); D、 List myList=new List(); 32.paint()方法使用哪种类型的参数? ( A )

A、 Graphics B、 Graphics2D C、 String D、 Color

33.指出正确的表达式 ( C )

A、 byte=128;

B、 Boolean=null;

C、 long l=0xfffL; D、 double=0.9239d;

34.指出下列程序运行的结果( B ) public class Example{

String str=new String(\ char[]ch={'a','b','c'};

public static void main(String args[]){ Example ex=new Example(); ex.change(ex.str,ex.ch);

System.out.print(ex.str+\ Sytem.out.print(ex.ch); }

public void change(String str,char ch[]){ str=\ ch[0]='g'; } }

A、 good and abc B、 good and gbc C、test ok and abc

D、 test ok and gbc

35.运行下列程序, 会产生什么结果( B )

public class X extends Thread implements Runable{ public void run(){

System.out.println(\ }

- 8 - 第 页

Java程序设计习题集

public static void main(String args[]) {

Thread t=new Thread(new X()); t.start(); }

}

A、 第一行会产生编译错误 B、 第六行会产生编译错误 C、 第六行会产生运行错误 D、 程序会运行和启动

36.要从文件\file.dat\文件中读出第10个字节到变量C中,下列哪个方法适合? ( D )

A、 FileInputStream in=new FileInputStream(\in.skip(9); int c=in.read(); B、 FileInputStream in=new FileInputStream(\in.skip(10); int c=in.read();

C、 FileInputStream in=new FileInputStream(\int c=in.read();

D、 RandomAccessFile in=new RandomAccessFile(\in.skip(9); int c=in.readByte();

37.容器被重新设置大小后,哪种布局管理器的容器中的组件大小不随容器大小的变化而改变?( A )

A、 CardLayout B、 FlowLayout

C、 BorderLayout D、 GridLayout 38.给出下面代码:

public class Person{

static int arr[] = new int[10]; public static void main(String a[]) {

System.out.println(arr[1]); } }

那个语句是正确的?( C )

A、 编译时将产生错误;

B、 编译时正确,运行时将产生错误; C 、输出零;

- 9 - 第 页

Java程序设计习题集

D、 输出空。

39.哪个关键字可以对对象加互斥锁?( B )

A、 transient B synchronized C serialize

D static

40.下列哪些语句关于内存回收的说明是正确的? ( B )

A、 程序员必须创建一个线程来释放内存; B、 内存回收程序负责释放无用内存 C、内存回收程序允许程序员直接释放内存 D、内存回收程序可以在指定的时间释放内存对象 41.下列代码哪几行会出错: ( C ) 1) public void modify() { 2} int I, j, k; 3) I = 100;

4) while ( I > 0 ) {

5} j = I * 2;

6) System.out.println (\ 7) k = k + 1; 8) I--; 9) }

10} }

A、 line 4 B、 line 6

C、 line 7 D、 line 8

42.MAX_LENGTH是int型public成员变量, 变量值保持为常量100,用简短语句定义这个变量。( CD )

A、 public int MAX_LENGTH=100;

B、 final int MAX_LENGTH=100;

C、 final public int MAX_LENGTH=100; D、 public final int MAX_LENGTH=100. 43.给出下面代码: 1) class Parent { 2} private String name; 3} public Parent(){} 4} }

5) public class Child extends Parent {

- 10 - 第 页

Java程序设计习题集

6} private String department; 7} public Child() {}

8} public String getValue(){ return name; } 9} public static void main(String arg[]) { 10} Parent p = new Parent(); 11} } 12} }

那些行将引起错误? ( D ) A、 第3行

B、 第6行 C、 第7行 D、 第8行

44.类Teacher和Student是类Person的子类; Person p; Teacher t; Student s;

//p, t and s are all non-null.

if(t instanceof Person) { s = (Student)t; } 最后一句语句的结果是: ( D )

A、 将构造一个Student对象;

B、 表达式是合法的;

C、 表达式是错误的;

D、 编译时正确,但运行时错误。 45.给出下面代码段 1) public class Test { 2} int m, n; 3} public Test() {}

4} public Test(int a) { m=a; }

5} public static void main(String arg[]) { 6} Test t1,t2; 7} int j,k; 8} j=0; k=0;

9} t1=new Test();

10} t2=new Test(j,k); 11} }

12} }

哪行将引起一个编译时错误?( D )

A、 line 3

- 11 - 第 页

Java程序设计习题集

B、 line 5 C、 line 6 D、 line 10 46.对于下列代码: 1) class Person {

2} public void printValue(int i, int j) {//... } 3} public void printValue(int i){//... } 4} }

5) public class Teacher extends Person { 6} public void printValue() {//... } 7} public void printValue(int i) {//...} 8} public static void main(String args[]){ 9} Person t = new Teacher(); 10} t.printValue(10); 11} }

第10行语句将调用哪行语句?( D )

A、 line 2 B、 line 3 C、 line 6 D、 line 7

47.哪个关键字可以抛出异常? ( C )

A、 transient B、 finally C、 throw D、 static

48.Main()方法的返回类型是:( B )

A、 int

B、 void C、 boolean D、 static

49.System类在哪个包中? ( D )

A、 java.util B、 java.io C、 java.awt D、 java.lang 50.对于下列代码:( ) public class Parent {

- 12 - 第 页

Java程序设计习题集

public int addValue( int a, int b) { int s; s = a+b; return s; }

}

class Child extends Parent { }

下述哪些方法可以加入类Child? C

A、 int addValue( int a, int b ){// do something...}

B、 public void addValue (int a, int b ){// do something...} C、 public int addValue( int a ){// do something...}

D、 public int addValue( int a, int b )throws MyException {//do

something...}

51.给出下面代码:( ) public class test{

static int a[] = new a[10];

public static void main(String args[]) { System.out.println(arr[10]); } }

那个选项是正确的? B

A、 编译时将产生错误;

B、 编译时正确,运行时将产生错误;

C、 输出零; D、 输出空。

52.下面哪些选项是正确的main方法说明?( B )

A、 public main(String args[])

B、 public static void main(String args[]) C、 private static void main(String args[]) D、 void main()

53.给定下面的代码片段:( C )

1) String str = null;

2) if ((str != null) && (str.length() > 10)) { 3) System.out.println(\

4) }

5) else if ((str != null) & (str.length() < 5)) { 6) System.out.println(\

- 13 - 第 页

Java程序设计习题集

7) }

8) else { System.out.println(\哪些行会导致错误?

A、 line 1

B、 line 2 C、 line 5 D、 line 8

54.下面哪种注释方法能够支持javadoc命令: ( AD )

A、 /**...**/

B、 /*...*/ C、 //

D、 /**...*/

55. 欲编写如下图的一个界面,用于显示用户指定的图像: 如果在区域A中只能放置一个AWT组件,从各组件的本来功能角度考虑,最好使用哪种组件:( D )

A、 TextArea B、 Panel C、 Applet

D、 Canvas

56. 界面如上题所示。若\的功能是:点击后弹出一个用于输入的界面,获取用户想要显示的图像文件名,则该界面最好是(从编程简单和程序不易出错的角度考虑):( C ) A、 模式(Modal)Dialog

B、 非模式(None-modal)Dialog C、 FileDialog

D、 Frame

57. 界面如上题所示。如果在A区域使用某种AWT组件(java.awt.Component的子类)来负责绘制图像,则绘图的语句最好应放在该组件的哪个方法中(考

- 14 - 第 页

Java程序设计习题集

虑到应用程序和Java虚拟机的AWT线程都会要求重画该组件)? ( D )

A、 构造方法

B、 paint(Graphics g) C、 update(Graphics g) D、 repaint()

58.下面关于Applet的说法正确的是 ( B )

A、 Applet也需要main方法

B、 Applet必须继承自java.awt.Applet C、 Applet能访问本地文件 D、 Applet程序不需要编译 59.看下面一段程序:( C ) class Aclass{

void go(){

System.out.println(\ } }

public class Bclass extends Aclass{ void go{

System.out.println(\ }

public static void main(String args[]){ Aclass a=new Aclass(); Aclass a1=new Bclass(); a.go(); a1.go(); }

以上程序运行结果是: A、 Aclass Aclass B、 Bclass Bclass

C、 Aclass Bclass

D、 Bclass Aclass

60.下列关于Java线程的说法那些是正确的( D )

A、 每一个Java线程可以看成由代码、一个真实的CPU以及数据三部份组成。

- 15 - 第 页

Java程序设计习题集

B、 创建线程的两种方法中,从Thread类中继承的创建方式可以防止出现多父类问题。

C、 Thread类属于java.util程序包。 D、 以上说法无一正确。

三、填空题

1.一个复杂的应用系统必然包括有多个对象,这些对象间可能存在的关系有三种,它们是: 继承 、 关联 和 包含 。

2.设x = 2 ,则表达式 ( x + + ) * 3 的值是 6 。

3.若x = 5,y = 10,则x > y和x <= y的逻辑值分别为 false 和 true 。 4.据程序的构成和运行环境的不同,Java源程序分为两大类:

application 程序和 applet 程序。 5.如果一个Java源程序文件中定义有4个类,则使用Sun公司的JDK编译器javac编译该源程序文件将产生 4 个文件名与类名相同而扩展名为

class 的字节码文件。

6.开发与运行Java程序需要经过的三个主要步骤为 编码、编译 、 和 执行 。

7.如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是 applet 类的子类并且存储该源程序文件的文件名必须为 MyApplet.java 。

8.一个Java Application源程序文件名为MyJavaApplication.java,如果使用Sun公司的Java开发工具JDK编译该源程序文件并使用其虚拟机运算这个程序的字节码文件,应该顺序执行如下两个命令:

javac MyJavaApplication.java 、 java MyJavaApplication 。 9.在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码字符占用 2 字节内存空间,这样,无论是中文字符还是英文字符,每个都是占用 2 字节内存空间。 10.在Java程序中定义的类有两种成员: 变量 、 访法 。

11.Java源程序是由类定义组成的,每个程序中可以定义若干个类,但是只有一个类是主类。在Java Application中,这个主类是指包含 main() 方法的类;在Java Applet里,这个主类是一个系统类 applet 的子类。

- 16 - 第 页

Java程序设计习题集

12.创建一个名为MyPackage 的包的语句是 package MyPackage ,该语句应该放在程序的位置为: 程序代码的第一句 。

13. 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。 方法是不能被当前类的子类重新定义的方法。

14.多态是指 ,在Java中有两种多态,一种是使用方法的 实现多态,另一种是使用方法的 实现多态。

15.在Java程序中,通过类的定义只能实现 重继承,但通过接口的定义可以实现 重继承关系。

16.子类重新定义一个与从父类那里继承来的域变量完全相同的变量,这种面向对象程序设计特性称为域的 。

17.字符串分为两大类,一类是字符串常量,使用 类的对象表示;另一类是字符串变量,使用 类的对象表示。

18.设有数组定义:int MyIntArray[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90 , 100 };

则执行以下几个语句后的输出结果是 。 int s = 0 ;

for ( int i = 0 ; i < MyIntArray.length ; i + + ) s += MyIntArray[i] ; System.out.println( s );

19.执行下列代码后的结果是什么? int x,a=2,b=3,c=4; x=++a+b+++c++; ________

20. ________包包含了Collection的接口和类的API.

21.main方法的声明格式包括 ________

22.下列程序中构造了一个SET并且调用其方法add(),输出结果是 ________

public class A{

public int hashCode(){return 1;}

public Boolean equals(Object b){return true}

public static void main(String args[]){ Set set=new HashSet();

set.add(new A()); set.add(new A()); set.add(new A());

System.out.println(set.size()); } }

- 17 - 第 页

Java程序设计习题集

23.下列程序的运行结果是 ________ class A{

class Dog{

private String name;

private int age; public int step; Dog(String s,int a) {

name=s; age=a; step=0; }

public void run(Dog fast) {

fast.step++; }

}

public static void main (String args[]) {

A a=new A();

Dog d=a.new Dog(\ d.step=25; d.run(d);

System.out.println(d.step); } }

24.Collection的 四种主要接口是 ________、 ________、 ________、 ________

25.运行下列程序第 ________行出错。

1.class Outer{

2.private int size=5;

3.public Object makeInner(final int finalLocalVar){ 4.int LocalVar=6; 5.class Inner{

6.public String toString(){

7.return (\size=\localVar=\finalLocalVar =\

8.return new Inner(); }

- 18 - 第 页

Java程序设计习题集

9. }

10. public class OuterTest{

11. public static void main(String[] args){ 12. Outer outer=new Outer (); 13. Object obj=outer.makeInner(56);

14. System.out.println(\26.下列代码不能编译的原因是 ________ Class A{

Private int x;

Public static void main(String args[]) {

new B();

}

class B{

B(){System.out.println(x); }

} }

27.Java中类成员的限定词有以下几种:private, public, ________, ________。其中, ________的限定的范围最大。 28.Java中所有类都是类 ________的子类。

29.请填出在java.lang包中与下列基本数据类型相对应的封装类: float:java.lang.Float, char: ________, boolean: ________。 30.请写出下面程序的运行结果。

public class Test extends TT{

public void main(String args[]){ Test t = new Test(\ }

public Test(String s){

super(s);

System.out.println(\ }

public Test(){

this(\ } }

class TT{ public TT(){

- 19 - 第 页

Java程序设计习题集

System.out.println(\ }

public TT(String s){ this();

System.out.println(\ } }

结果: ________

31.给定下面的未完成的代码片断:

public class Example{ int x,y;

public Example(int a){ ?

x = a; }

public Example(int a, int b){

//和上面一个参数的构造方法做同样的操作,包括赋值 x=a y = b; } }

如果要用最简捷的一行代码实现\和上面一个参数的?\指出的功能,请写出你认为最合适的一行代码: ________

32.如果有一个类MyFrame是Frame的子类,能够被不同包中的类所使用,同时又能够为线程提供运行代码(run()方法),请写出该类的声明头。 你的解答: ________

33.将主方法的参数逐个打印输出,文件名为mtest.java //类的声明 {

main(String args [ ] ) {

int n=args. ; //n为数组长度 if(n==0)

System.out.println(“没有参数”); else {

System.out.println(“参数个数:”+n);

for(int i=0; ) //循环

System.out.println(“args[”+i+”]=”+ ; //打印数组元素

- 20 - 第 页

Java程序设计习题集

} }

}

34.Applet程序:有2个复选框,其名称为“玩耍”和“学习”,根据选择情况,分别显示“我就喜欢玩耍”,“我只喜欢学习”,“两个我都喜欢”。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; //定义类testCheck public class testCheck {

Checkbox c1,c2; String s=\

public void init() {

c1=new Checkbox(\玩耍\ c1.addItemListener(this); add(c1);

c2=new Checkbox(\学习\ c2.addItemListener(this); add(c2);

}

(ItemEvent e) //Checkbox选择事件响应处理方法 {

if( ) //如果两个都选择 s=\玩耍和学习我都喜欢\ else if(c1.getState()) s=\我就喜欢玩耍\ else if(c2.getState()) s=\我只喜欢学习\ else s=\

//重画 }

public void paint(Graphics g)

{

//在(20,80)处显示字符串s }

- 21 - 第 页

Java程序设计习题集

}

对应HTML文件

36.根据applet参数显示图片,参数为图片文件名,图片文件在HTML文件同一目录下

import java.applet.Applet; import java.awt.*;

public class {

String fn; //图片文件名

int fw,fh; //图片显示的宽度和高度 Label fname;

public void init() {

fname=new Label(\ ;

fn=getParameter(\取得参数 }

public void paint(Graphics g)

{

Image pic;

pic=getImage( ,fn);//取得图片对象 if(pic!=null) {

fname.setText(fn); fw=pic.getWidth(this); fh=pic.getHeight(this);

(pic,50,50,fw/2,fh/2,this); //画图

} else

fname.setText(\无法找到图片!\

} }

对应HTML文件

- 22 - 第 页

Java程序设计习题集

37、被关键字__________修饰的方法是不能被当前类的子类重新定义的方法 38、下列程序中,指定变量b=50为字节类型,变量f=0.55F为单精度实型,变量1=0xfffL为64位整型,并将该三个变量打印输出.请将程序补充完整. import java.io.*;

public class Assign}

public static void main(String args[]){ _______b=50; _______f=0.55F; _______l=0xfffL;

System.out.println(\System.out.println(\System.out.println(\}

}

39、下面程序对数组中每个元素赋值,然后按逆序输出.请在横线处填入适当内容,使程序能正常运行. import java.io.*; public class ArrayTest{

public static void main(String args[]){ int i;

int a[] = new int[5]; for(i=0;i<5;i++) a[i]=i;

for( __________ ;i>=0;i- -)

System.out.println(\}

}

40.运行下列程序第 行出错。 class Outer{

private int size=5;

public Object makeInner(final int finalLocalVar){ int LocalVar=6;

class Inner{

public String toString(){

return (\size=\

- 23 - 第 页

Java程序设计习题集

localVar=\=\

} } }

return new Inner(); } }

finalLocalVar

public class OuterTest{

public static void main(String[] args){

Outer outer=new Outer ();

Object obj=outer.makeInner(56);

System.out.println(\}

}

四、写出下列程序完成的功能

1. public class Sum

{ public static void main( String args[ ]) { double sum = 0.0 ;

for ( int i = 1 ; i <= 100 ; i + + ) sum += 1.0/(double) i ;

System.out.println( \ } }

答:

2.import java.io.* ;

public class Reverse

{ public static void main(String args[ ]) { int i , n =10 ; int a[ ] = new int[10]; for ( i = 0 ; i < n ; i ++ ) try {

BufferedReader br = new BufferedReader( new InputStreamReader(System.in));

- 24 - 第 页

Java程序设计习题集

a[i] = Integer.parseInt(br.readLine( )); // 输入一个整数

} catch ( IOException e ) { } ; for ( i = n-1 ; i >= 0 ; i ―― ) System.out.print(a[i]+\ System.out.println( ); } } 答:

3.import java.awt.*;

public class abc

{ public static void main(String args[])

{ new FrameOut(); } }

class FrameOut extends Frame // Frame为系统定 { Button btn; // 义的窗框类

FrameOut( )

{ super(\按钮\

btn = new Button(\按下我\ setLayout(new FlowLayout( )); add(btn);

setSize(300,200); show( ); } } 答:

4. import java.io.*; public class Class1

{

public static void main(String args[ ]){ int i , Max , Min ;

int a[ ] = { 12,67,8,98,23,56,124,55,99,100 }; Max = Min = a[0];

for ( i = 1 ; i < a.length; i ++ ) {

if ( a[i]Max ) Max = a[i];

}

- 25 - 第 页

Java程序设计习题集

System.out.println( Max+\

System.out.println( ); } }

答:

5. public class ABC {

public static void main(String args[ ]){ int i , j ;

int a[ ] = { 12,67,8,98,23,56,124,55,99,100 }; for ( i = 0 ; i < a.length-1; i ++ ) { int k = i;

for ( j = i ; j < a.length ; j++ ) if ( a[j]

a[k] = temp; }

for ( i =0 ; i

System.out.println( ); } }

6.import java.io.*;

public class Class1 {

public static void main( String args[] ) {

Fact N = new Fact( 4 ); System.out.println( N.fact( ) ); } }

class Fact { int n ;

Fact( int nn ) { n = nn; } int fact( ) { int i , f = 1;

for ( i=1; i<=n; i++ )

- 26 - 第 页

Java程序设计习题集

}

}

f = f*i;

return f;

答:

7.import java.awt.*;

import java.applet.Applet;

public class DrawMyImage extends Applet {

Image myImage; // 定义一个图像类Image的对象myImage public void init( ) {

myImage = getImage(getDocumentBase( ),\}

public void paint(Graphics g) {

g.drawImage(myImage,0,0,this); } }

答:

8. import java.io.*;

public class Class1 {

public static void main( String args[ ] ) { SubClass a = new SubClass( 10,3 ); System.out.println( a.exp( )); } }

class SuperClass { float x;

int n;

SuperClass( float xx , int nn ) { x = xx ; n = nn; } }

class SubClass extends SuperClass { SubClass( float xx , int nn ) { super( xx , nn ); } float exp( ) {

float s = 1;

for ( int i = 1; i<=n; i++ ) s = s*x; return s;

- 27 - 第 页

Java程序设计习题集

} }

答:

9. import java.awt.*; import java.applet.Applet;

public class Applet1 extends Applet { }

public void paint( Graphics g ) { }

g.drawLine( 30,5,100,45 ); g.drawRect( 30,50,50,20 ); g.drawOval( 30,80,50,40 );

g.drawString( \

答:

10.import java.io.*; public class abc

{ public static void main(String args[])

{ SubClass sb = new SubClass( ); System.out.println(sb.max( )); } }

class SuperClass

{ int a = 10 , b = 20 ; }

class SubClass extends SuperClass

{ int max( ) { return ((a>b)?a:b); } } 答:

五、写出下面程序的运行结果

1.import java.io.*; public class abc

{ public static void main(String args[ ]) { AB s = new AB(\ System.out.println(s.toString( ));

- 28 - 第 页

Java程序设计习题集

} }

class AB { String s1; String s2;

AB( String str1 , String str2 ) { s1 = str1; s2 = str2; } public String toString( ) { return s1+s2;} }

答:

2.import java.io.* ;

public class abc {

public static void main(String args[ ]) { int i , s = 0 ;

int a[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90 };

for ( i = 0 ; i < a.length ; i ++ ) if ( a[i]%3 = = 0 ) s += a[i] ; System.out.println(\ } }

答:s =

3. import java.io.* ; public class abc

{

public static void main(String args[ ]) { SubSubClass x = new SubSubClass(10 , 20 , 30); x.show(); }

}

class SuperClass { int a,b;

SuperClass(int aa , int bb) { a=aa; b=bb; } void show( )

- 29 - 第 页

Java程序设计习题集

{ System.out.println(\ }

class SubClass extends SuperClass { int c;

SubClass(int aa,int bb,int cc) { super(aa,bb); c=cc; } }

class SubSubClass extends SubClass { int a;

SubSubClass(int aa,int bb,int cc) { super(aa,bb,cc); a=aa+bb+cc; }

void show()

{ System.out.println(\ }

答:a= b= c=

4. import java.io.*; public class abc {

public static void main(String args[]) {

String s1 = \

String s2 = new String(\ System.out.println(s1.concat(s2)); } } 答:

5. import java.io.* ; public class ABC

{

public static void main(String args[ ]) { int i ;

第- 30 - 页

Java程序设计习题集

int a[ ] = { 11,22,33,44,55,66,77,88,99 }; for ( i = 0 ; i <= a.length / 2 ; i ++ )

System.out.print( a[i]+a[a.length-i-1]+\ System.out.println( ); }

}

答:

6. import java.io.*; class Parent { }

class Child extends Parent { void printMe() { }

}

System.out.println(\}

void printAll() {

super.printMe(); this.printMe(); printMe();

void printMe() { }

System.out.println(\

public class Class1 { }

- 31 - 第 页

public static void main(String args[ ])

{

myC.printAll( ); }

Child myC = new Child( );

Java程序设计习题集

答:

六、使用Java语言编写程序

1. 编写一个字符界面的Java Application 程序,接受用户从键盘输入的一个正整数,然后统计并输出从1到这个正整数的累加和。

2. 编写一个字符界面的Java Application 程序,接受用户输入的10个整数,并输出这10个整数的最大值和最小值。

3. 编写一个完整的Java Applet 程序使用复数类Complex验证两个复数 1+2i 和3+4i 相加产生一个新的复数 4+6i 。 复数类Complex必须满足如下要求:

(1) 复数类Complex 的属性有:

RealPart : int型,代表复数的实数部分

ImaginPart : int型,代表复数的虚数部分 (2) 复数类Complex 的方法有:

Complex( ) : 构造函数,将复数的实部和虚部都置0

Complex( int r , int i ) : 构造函数,形参 r 为实部的初值,i为虚部的初值。

Complex complexAdd(Complex a) : 将当前复数对象与形参复

数对象相加,所得的结果仍是一个复数值,返回给此方法的调用者。 String ToString( ) : 把当前复数对象的实部、虚部组合成 a+bi 的字符串形式,其中a 和 b分别为实部和虚部的数据。 4. 编写一个学生类 Student ,要求: (1) 学生类 Student 属性有: id : long型,代表学号

name : String类对象,代表姓名 age : int型,代表年龄

sex : boolen型,代表性别(其中:true表示男,false表示女) phone : String类对象,代表联系电话

(2) 学生类 Student的方法有:

Student(long i , String n , int a , boolean s , long p) : 有参构造函数,形参表中的参数分别初始化学号、姓名、 年龄、性别和联系电话。

int getAge() ( ) : 获取年龄作为方法的返回值。 boolean getSex( ) ( ) : 获取性别作为方法的返回值。 long getPhone ( ) : 获取联系电话作为方法的返回值。

- 32 - 第 页

Java程序设计习题集

public String toString( ) : 以 姓名:联系电话 的形式作为方法的返回值。

5. 编写图形界面下的Java Applet程序,接受用户输入的两个数据为上、下限,然后10个一行输出上、下限之间的所有素数。

6.构造一个类来描述屏幕上的一个点,该类的构成包括点的x和y两个坐标,以及一些对点进行的操作,包括:取得点的坐标值,对点的坐标进行赋值,编写应用程序生成该类的对象并对其进行操作。

7.编写一个应用程序,完成文件的拷贝功能,文件名从命令行得到。

七、简答题

1、 简单分析Java语言中的final, finally, finalize三者的区别。 2、Overload(方法重载)和Override(方法覆盖)的区别。Overloaded的方法是否可以改变返回值的类型?

3、abstract class(抽象类)和interface(接口)有什么区别? 4、举出Java与C++不同的地方,说明为什么Java会这样设计而C++会那样设计。

5、 Java语言有什么特点?

6、 Java Applet的基本工作原理是什么?

7、 什么叫多线程?Java支持多线程有何意义?

8、什么是流?什么是数据流?最基本的输入输出流类是什么?9、什么是访问控制符?有那些常用访问控制符?那些可以用来修饰类?那些用来修饰域和方法?简述不同的访问控制符的作用?

10、什么是类?什么是对象?什么是接口?接口和类的继承有什么本质区别? 11、什么是多态?面向对象程序设计为什么要引入多态的特性?使用多态有什么优点?

12、什么是继承?什么是单重继承?什么是多重继承?Java语言中如何实现多重继承?

13、Java语言有哪些运算符?

14、什么是接口?为什么要定义接口?接口与类有和异同?

- 33 - 第 页