文档库 最新最全的文档下载
当前位置:文档库 › JAVA复习题+答案

JAVA复习题+答案

一、判断题

1.JAVA语言的标识符不区分大小写。( X )

2.为了避免混淆,构造方法的方法名不能与类名相同。( X)

3.构造方法不允许有返回值,因此需要在返回类型处标注为void。( X )

4.不能直接创建抽象类的对象,抽象类的主要作用是被继承。如果抽象类的子类不是抽

象类,则可以创建该子类的对象。( I )

5.子类不可能有默认构造方法。( X )

6.子类继承父类的构造方法。( X )

7.子类构造方法中用super关键字来调用父类的构造方法。( I )

8.子类的默认构造方法不调用父类的构造方法。( X )

9.调用父类构造方法的语句不必是子类构造方法的第一条语句。( X )

10.覆写的方法不能设置比原来严格的访问权限。( I )

11.覆写的方法不能比原来抛出更多的异常。( I )

12.方法重载是指多个方法具有相同的名称、不同的参数。( I )

13.方法重载会导致方法调用时系统不能识别应该调用哪个方法。( X )

14.接口用关键字class来定义。( X )

15.接口中只包含方法的定义,没有方法的实现。( I )

16.如果一个类已继承某个父类,则它不能再实现接口。( X )

17.一个接口只能被一个类实现。( X )

18.一个类只能实现一个接口。( X )

19.JAVA语言为所有的JAVA程序自动导入包https://www.wendangku.net/doc/ca11081672.html,ng,因此JAVA程序可以直接用

https://www.wendangku.net/doc/ca11081672.html,ng中的类和接口。( I )

20.用String类表示可变字符串,用StringBuffer类表示不变字符串。( X )

21.类集不能容纳long类型的数据,但能容纳Long对象。( I )

22.JPanel的默认布局管理器是流式布局管理器FlowLayout。(I )

23.JFrame的内容面板的默认布局管理器是边界布局管理器BorderLayout。( I )

24.新创建的窗口马上就在屏幕上显示出来,在程序中不必考虑用语句来显示它们。

( X )

二、填空题(本次考试没有填空题,该复习资料为出题老师提供,唐老师注)

1. Sun 公司最早研制出JAVA。

2.在建立J2SDK的开发环境时,需要修改环境变量PATH,以及建立新的环境变量

classpath 。

3.假设有一个JAVA应用程序,其源程序文件名是Morning.java,则编译该源程序时应该

在命令提示符窗口中输入 javac Morning.java 命令,运行该程序时应该在命令提示符窗口中输入

4. java Morning 命令。

5.JAVA源程序中,跨越多行的注释只需在开始和结尾处用 /* 和 */括起即可。

6.要定义整型数组a,应该用语句 int[] a; 。

7..java文件是文本文件,.class文件是二进制文件。(填“文本文件”

或“二进制文件”)

8.根据命名约定规则,如果一个类的类名由三个单词students、in、group组成,则类名

建议命名为 StudentsInGroup ;如果该三个单词组成的是接口名,则接口建议命名为StudentsInGroup ;如果组成的是变量名,则变量建议命名为

studentsInGroup ;如果组成的是方法名,则方法建议命名为 studentsInGroup;

如果组成的是常量名,则常量建议命名为STUDENTS_IN_GROUP 。

9.基本数据类型有byte、short、int、long、float、double、char、

boolean 。

10.byte类型的包装类是 Byte ,int类型的包装类是 Interger ,boolean类

型的包装类是 Boolean ,char类型的包装类是 Character 。

11.表达式(int)(13.4+26.8)%3的值是 1 。

12.已知int类型的变量k的值是12,则表达式(++k+5)/4的值是 4 。

13.在JAVA语言中,每个英文字符占 2个字节,每个中文汉字占 2个字节。

14.JAVA语言的字符采用的是 Unicode 字符集,用个二进制位表示一个字符。

15.字符串常量是用双括号括起来的字符序列。

16.要定义x为int类型的数组,并且数组元素的初值是1、2、3、4、5,则可以用一条语

句 int[] x={1,2,3,4,5} 。

17.程序Abc.java的main函数定义是:

18.public static void main(String args[])

19.在命令行用java Abc apple orange命令来运行程序,则执行完上述语句后args[1]

的值是 orange 。

20.程序Abc.java的main函数中有语句:

21.a = Integer.parseInt(args[1]);

22.在命令行用java Abc 1 2命令来运行程序,则执行完上述语句后a的值是

2 。

23.面向对象程序设计的技术特点包括封装性、继承性和多态性。

24.用new为对象分配空间时,将调用类的构造方法。

25.创建一个对象时,其数据成员会自动作默认初始化,boolean类型的数据成员会被初始

化为 false ,int类型的数据成员会被初始化为 0 ,复合类型的数据成员会被初始化为 null 。

26.想能被所有类的方法存取的数据成员应该用 public 来修饰。

27.只想被本类的方法存取的数据成员应该用 private 来修饰。

28.被 final 修饰的方法不能被子类覆写。

29.被 abstract 修饰的类是抽象类。

30.如果要指明程序中的类所在的包,应该用 package 语句,这条语句必须是程序的

第一条语句,在它之前只能有空格或注释。

31.所有的错误和异常类都是throwable 的子类。对于属于exception于

的异常,程序不能置之不理,必须在程序中用try-catch-finally语句处理或在程序中声明抛出。

32. throw 语句用来抛出在程序中生成的异常, throws 子句用来表明一个方

法可能抛出的各种异常。

33.已知字符串变量s的值是"a beautiful girl"(各单词之间有一空格),要从中截取出

子串"beautiful",可用表达式 s.substring(2,11) ;要从中截取出子串"girl",可用表达式s.substring(12)

34.;要得到s的全大写形式,可用表达式 s.toUpperCase()

35.;要得到s的全小写形式,可用表达式

s.toLowerCase() 。

36.JAVA有4个基本流类,其中输入字节流是 InputStream

37.类,输出字节流是 OutputStream 类,输入字符流是

Rader 类,输出字符流是 Witer 类。

38.文件流是最常用的节点流,其中用于读二进制文件的类是

FileInputStream ,用于写二进制文件的类是FileOutputStream,用于读文本文件的

类是 FileReader,用于写文本文件的类是 FileWriter。

39.缓冲流是常用的过滤流,与4个基本流类相对应的4个缓冲流类分别是

40.BufferedInputStream、BufferedOutputStream、BufferedReader、

BufferedWriter 。在这4个类中,有一个类用于缓冲输入字符流,它有一个readline

方法,可以读入以回车和换行作结束标记的一行文本。

41.数据流也是常用的过滤流,用于读取或写入JAVA的基本数据类型及UTF字符串,数据

流有2个,数据输入流是DataInputStream

42.类,数据输出流是 DataOutputStream 类。

43.对象流也是常用的过滤流,可以直接读取或写入一个对象,对象流有2个,对象输入流

是 ObjectInputStream 类,对象输出流是ObjectOutputStream 类。

44.有两个过滤流可以充当字节流和字符流之间的桥梁,其中

45. InputStreamReader 类可以把字节流转换为字符流,

OutputStreamWriter类可以把字符流转换为字节流。

46.如果希望关闭窗口时结束应用程序,应该调用窗口的方法

setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE )。

47.设c是一个容器,要把c设置用边界布局管理器,应该用语句

48. c.setLayout(new BorderLayout()) 。

49.处理动作事件的类必须实现 ActionListener 接口,处理

选项事件的类必须实现 ItemListener 接口。

50.处理鼠标移动事件的类必须实现MouseMotionListener 接

口,处理鼠标单击事件的类必须实现 MouseListener 接

口。

51.在NetBeans所创建项目的项目文件夹中,源程序文件存放在 src 子文

件夹之下;编译后的类存放在 build 子文件夹之下。

三、多项选择题

1、Java的特点包括(abdefh)。

(A) 面向对象

(B) 有类库

(C) 是面向过程的编程语言

(D) 支持分布式计算

(E) 是跨平台的编程语言

(F) 支持多线程

(G) 要求编程者管理内存

(H) 安全性体现在多个层次上

2、合法标识符有( cf )

(A) class

(B) interface

(C) GroupOne

(D) 7days (E) 8

(F) STUDENT_COUNT

(G) this

3、下面语句正确的是( abdefghi )

(A) int a[];

(B) int[] b;

(C) int a[20];

(D) int a[][];

(E) int[][] a;

(F) int[] a[]; (G) int a[] = new int[8];

(H) int a[] = {1,2,3,4,5};

(I) int[] a = {1,2,3,4,5}; (J) int[] a = new {1,2,3,4,5}; (K) int[] a = new (1,2,3,4,5); (L) int[] a = new [1,2,3,4,5];

4、( bcd )是JAVA集成环境开发工具。

(A) EditPlus

(B) JBuilder (C) Eclipse

(D) NetBeans

5、( acefgi )是基本数据类型的包装类。

(A) Boolean

(B) Int

(C) Short

(D) Char

(E) Integer (F) Character

(G) Float

(H) String

(I) Double

6、( acehi )是基本数据类型。

(A) int

(B) String

(C) char

(D) int[ ]

(E) double (F) Integer

(G) Boolean

(H) byte

(I) float (J) Character

7、下面语句正确的有(abcef )。

A)long l = 30;

B)double d = 9.8;

C)int i = 8;

D)float f = 3.14; E)byte a = 9;

F)short b=8;

G)int h =028;

8、有以下程序:

public class T{

int a,b,c;

public T(){ }

public T(int a) {this.a=a;}

public T(int a,int b) {this.b=b;}

public T(int a,int b,int c){

this.a=a;

this.b=b;

this.c=c;

}

}

下面的( abce )语句能够放进程序的横线所在处,而使程序仍能顺利通过编译。

A)this();

B)this(a);

C)this(a,b);

D)this(a,b,c); E)super();

F)super(a);

G)super(a,b);

H)super(a,b,c);

9、有以下程序:

class D{

int a,b,c;

public D(){ }

public D(int a) {this.a=a;}

public D(int a,int b) {this.b=b;}

public D(int a,int b,int c){this.a=a;this.b=b;this.c=c;}

}

class T extends D{

public T(int a,int b,int c){

this.a=a;

this.b=b;

this.c=c;

}

}

下面的( efgh )语句能够放进程序的横线所在处,而使程序仍能顺利通过编译。

A)this();

B)this(a);

C)this(a,b);

D)this(a,b,c); E)super();

F)super(a);

G)super(a,b);

H)super(a,b,c);

10、有以下程序:

public class A{

public int p(int a,int b){

return Math.min(a,b);

}

}

class B extends A{

}

下面的( abd )方法可以加入类B中。

A)int p(int a) {return a-1;}

B)int p() {return 1;}

C)int p(int a,int b) {return a+b;}

D)public int p(int a,int b) {return a+b;}

E)public int p(int a,int b) throws Throwable{

F)if (a<0) throw new Throwable();

G)return a+b;

H)}

11、下列叙述正确的是( aefhj )

A)源文件名与public类型的类名必须相同

B)源文件其扩展名为.jar

C)源文件中public类的数目不限

D)编译生成的字节码文件后缀为.exe

E)在Java程序中import语句可以有多个

F)在Java程序中import语句可以没有

G)在Java程序中import语句必须有一个

H)在Java程序中import语句必须引入在所有类定义之前

I)在Java程序中可以有2条以上package语句

J)在Java程序中最多只能有1条package语句

12、下列语句正确的是( bcdeh )

A)Set set=new Set();

B)Set set=new HashSet();

C)Set set=new LinkedHashSet();

D)Set set=new TreeSet();

E)HashSet set= new HashSet();

F)HashSet set= new Set();

G)HashSet set= new TreeSet();

H)Collection set=new HashSet();

四、写出程序的运行结果:

public class Hello

{

public static void main(String args[])

{

}

}

输出结果:

Hello, world!

I am John.

I like basketball.

I've got a basketball here. Let's go and play. public class Try

{

static int m,n;

int k;

public static void main(String[] args)

{

Try x = new Try();

x.m = 80;

x.k = 90;

Try y = new Try();

y.m = 85;

y.k = 95;

}

}

输出结果:

x.m=85 x.n=0 x.k=90

class Parent

{

public void f()

{

}

}

class Child extends Parent

{

public void f()

{

}

public static void main(String args[])

{

Parent a = new Child();

a.f();

}

}

输出结果:

Good afternoon!

class Parent

{

protected int x,y,z;

public Parent(int x,int y,int z)

{ this.x=x; this.y=y; this.z=z;}

public int result( ) { return (x+y+z)/2; } }

class Child extends Parent

{

public Child(int x,int y,int z)

{ super(x,y,z); }

public int result( ) { return (x+y+z)/3; } public static void main(String args[])

{

Parent p = new Child(3,4,5);

}

}

输出结果:

result=4

public class TryTest1

{

public static void sub()

{

try

{

int i = 12;

i = i/0;

catch (ArithmeticException e)

{

}

finally

{

}

}

public static void main(String[] args)

{

try

{

sub( );

}

catch (ArithmeticException e)

{

}

finally

{

}

}

}

输出结果:

子方法的catch被执行

子方法的finally被执行

main方法的finally被执行

public class TryTest1

{

public static void sub()

{

try

{

int i = 12;

i = i/0;

}

catch (ArrayIndexOutOfBoundsException e)

{

}

finally

{

}

}

public static void main(String[] args)

{

{

sub( );

}

catch (ArithmeticException e)

{

}

finally

{

}

}

}

输出结果:

子方法的finally被执行

main方法的catch被执行

main方法的finally被执行

import java.util.*;

public class MapTest {

public static void main(String[] args) {

Map map = new TreeMap();

Set set = map.keySet();

Iterator it = set.iterator();

while (it.hasNext()){

}

}

}

输出结果:

import java.util.*;

public class MapTest {

public static void main(String[] args) {

Map map = new LinkedHashMap();

Set set = map.keySet();

Iterator it = set.iterator();

while (it.hasNext()){

}

}

}

输出结果:

import java.util.*;

public class MapTestB {

public static void main(String[] args) {

Map map = new TreeMap();

Collection c = map.values();

Iterator it = c.iterator();

while (it.hasNext()){

}

}

}

输出结果:

李德正

张海珊

赵紫娟

王建国

import java.util.*;

public class MapTestB {

public static void main(String[] args) {

Map map = new LinkedHashMap();

Collection c = map.values();

Iterator it = c.iterator();

while (it.hasNext()){

}

}

}

输出结果:

张海珊

李德正

王建国

赵紫娟

五、编程题

1.编一个窗口应用程序Calculate.java,界面如图。要求:(1)单击窗口的关闭按钮时结束应用程序;(2)在第二个文本框中按回车键时,能根据单选按钮的情况,把两个操作数作加法或减法,并把运算结果显示在第三个文本框中(假定用户能正确地输入两个整数作为操作数,不必考虑错误处理)。请把以下程序补充完整。

(1)import java.awt.*;

import ;

(2)import javax.swing.*

;

(3)public class Calculate extends JFrame implements ActionListener {

JTextField tf1 = new JTextField(10);

JTextField tf2 = new JTextField(10);

JTextField tf3 = new JTextField(10);

ButtonGroup rg = new ButtonGroup();

JRadioButton radio1 = new JRadioButton("加法",true);

JRadioButton radio2 = new JRadioButton("减法",false);

(4) public Calculate()

{

super("Calculate");

setLayout (new GridLayout(4,1));

JPanel p1 = new JPanel();

p1.add(new JLabel("操作数1:"));

p1.add(tf1);

add(p1);

JPanel p2 = new JPanel();

p2.add(new JLabel("操作数2:"));

p2.add(tf2);

add(p2);

(5)tf2. addActionListener(this);

JPanel p3 = new JPanel();

p3.add(radio1);

p3.add(radio2);

add(p3);

rg.add(radio1);

rg.add(radio2);

JPanel p4 = new JPanel();

p4.add(new JLabel("运算结果:"));

p4.add(tf3);

add(p4);

(6)setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

setSize(350,200);

(7)setVisible(true);

}

(8)public void actionPerformed(ActionEvent e)

{

int a = Integer.parseInt(tf1.getText());

int b = Integer.parseInt(tf2.getText());

int c;

(9)if (radio1. isSelected())

c = a+b;

else

c = a-b;

tf3.setText(String.valueOf(c));

}

public static void main(String[] args)

{

new Calculate();

}

}

2.假设对于一名学生,我们关注其姓名(String类型)、年龄(int类型)、系别(String类型)。编一个程序Student.java,从键盘输入一名学生的信息,并把数据保存到一个新创建的文件student.dat中(要求使用输出数据流类

DataOutputStream)。该程序不捕获I/O异常,但设法确保文件被关闭。import java.io.*;

import java.util.*;

public class Student {

public static void main(String[] args) throws IOException { DataOutputStream dos = new DataOutputStream(new FileOutputStream("student.dat"));

Scanner sc = new Scanner(System.in);

try {

String name,department;

int age;

name = sc.next();

age = sc.nextInt();

department = sc.next();

dos.writeUTF(name);

dos.writeInt(age);

dos.writeUTF(department);

}

finally {

dos.close();

}

}

}

3.编一个Song类,类体包括:

A)表示歌曲名称的String类型的属性name,访问权限是protected;

B)表示作曲者的String类型的属性composer,访问权限是protected;

C)表示创作年份的int类型的属性year,访问权限是protected;

D)一个带3个参数的构造方法,给3个属性赋初值,访问权限是public;

E)给这3个属性分别编写getXxx、setXxx方法,访问权限都是public(注

意:这里要求编写6个方法);

F)一个返回类型是String、不带参数、名字为toString的方法,以字符串

的形式返回当前对象的有关信息,访问权限是public。

public class Song {

protected String name;

protected String composer;

protected int year;

public Song(String name,String composer,int year) {

https://www.wendangku.net/doc/ca11081672.html, = name;

https://www.wendangku.net/doc/ca11081672.html,poser = composer;

this.year = year;

}

public String getName() {

return name;

}

public void setName(String name){

https://www.wendangku.net/doc/ca11081672.html, = name;

}

public String getComposer() {

return composer;

}

public void setComposer(String composer){

https://www.wendangku.net/doc/ca11081672.html,poser = composer;

}

public int getYear() {

return year;

}

public void setYear(int year){

this.year = year;

}

public String toString(){

return "歌曲名称:"+name+"\t作曲者:"+composer+"\t创作年份:"+year;

}

}

4.编一个Song类的子类TopSong,类体包括:

A)表示歌曲最高排名的int类型的属性topNumber,访问权限是protected;

B)表示歌曲上榜周数的int类型的属性weeks,访问权限是protected;

C)一个带5个参数的构造方法,给5个属性赋初值,访问权限是public;

D)给topNumber和weeks分别编写getXxx、setXxx方法,访问权限都是

public(注意:这里要求编写4个方法);

E)覆写Song类的toString方法,返回当前对象的有关信息。

public class TopSong extends Song{

protected int topNumber;

protected int weeks;

public TopSong(String name,String composer,int year, int topNumber, int weeks) {

super(name,composer,year);

this.topNumber = topNumber;

this.weeks = weeks;

}

public int getTopNumber(){

return topNumber;

}

public void setTopNumber(int topNumber){

this.topNumber = topNumber;

}

public int getWeeks(){

return weeks;

}

public void setWeeks(int weeks){

this.weeks = weeks;

}

public String toString(){

return super.toString()+" 最高排名是"+topNumber+" 上榜周数是"+weeks;

}

}

相关文档