
一、简答题
1.Java语言程序分为哪几种?Java Application程序和Java Applet程序的主要区别是什么?
2.Java Application程序在结构上有哪些特点?如何编译、运行?被编译后生成什么文件?该文件机器可以直接识别吗?如何执行?
二、选择题
1.下面关于Java Application 程序结构特点描述中,错误的是( D )。
A.一个Java Application程序由一个或多个文件组成,每个文件中可以定义一个或多个类,每个类由若干个方法和变量组成。
B.Java程序中声明有public类时,则Java程序文件名必须与public类的类名相同,并区分大小写,扩展名为.java。
C.组成Java Application程序的多个类中,有且仅有一个主类。
D.一个.java文件中定义多个类时,允许其中声明多个public类。
2.编译Java程序后生成的面向JVM的字节码文件的扩展名是( B )。
A..java B..class C..obj D..exe
3.下面关于Java 语言特点的描述中,错误的是( A )。
A.Java是纯面向对象编程语言,支持单继承和多继承。
B.Java支持分布式的网络应用,可透明地访问网络上的其他对象。
C.Java支持多线程编程。
D.Java程序与平台无关、可移植性好。
4.下列标识符(名字)命名原则中,正确的是( C )。
A.类名的首字母小写 B.接口名的首字母小写
C.常量全部大写 D.变量名和方法名的首字母大写
5.下面哪些选项是正确的main方法说明?( D )
A.void main() B.private static void main(String args[])
C.public main(String args[]) D.public static void main(String args[])
三、判断题
1.Java语言具有较好的安全性和可移植性及与平台无关等特性。( √ )
2.Java Application程序中,必有一个主方法main()。( √ )
3.Java程序中不区分大小写字母。( × )
4.机器不能直接识别字节码文件,它要经过JVM中的解释器边解释边执行。( √ )
5.System类中的println()方法分行显示信息,而print()方法不分行显示信息。( √ )
Java语言基础 习 题 二
一、填空题
1.已知:boolean b1=true,b2; 则:表达式! b1 && b2 ||b2的值为( false )。
2.已知:double x=8.5,y=5.8; 则:表达式x++>y--值为( true )。
3.已知:int a[ ]={2,4,6,8}; 则:表达式(a[0]+=a[1])+ ++a[2]值为( 13 )。
4.在Java中,字符串和数组是作为(对象)出现的。
5.执行下列程序代码的输出结果是( 10,11,11 )。
int a = 10; int i, j; i = ++a; j = a--;
System.out.printf("%d,%d,%d", a, i, j);
6.执行完boolean x=false; boolean y=true; boolean z=(x&&y)&&(!y) ; int f=z==false?1:2;
这段代码后,z与f的值分别是( false )和( 1 )。
二、选择题
1.下面哪些标识符在Java语言中是合法的?( AB )
A.persons$ B.TwoUsers C.*point D.instanceof F.end-line
2.下列( D )是合法标识符。
A.2end B.-hello C.=AB D.整型变量
3.若定义有变量float f1,f2 = 8.0F,则下列说法正确的是( B )。
A.变量f1,f2均被初始化为8.0 B.变量f1没有被初始化,f2被初始化为8.0
C.变量f1,f2均未被初始化 D.变量f2没有被初始化,f1被初始化为8.0
4.下列( B )是不能通过编译的语句。
A.double d = 545.0; B.char a1 = “c”; C.int i = 321; D.float f1 =45.0f;
5.下列循环语句的循环次数是( B )。
int i=5;
do {
System.out.println(i--);
i--;
}while(i!=0);
A.5 B.无限 C.0 D.1
6.下列关于数组的定义形式,哪些是错误的?( ABC )
A.int[ ]c=new char[10]; B.int[ ][3]=new int[2][ ];
C.int[ ]a; a=new int; D.char b[ ]; b=new char[80];
7.执行String[] s=new String[10];语句后,哪些结论是正确的?( BC )
A.s[0] 为 未定义 B.s.length 为10
C.s[9] 为 null D.s[10] 为 ""
8.下列关于Java语言的数组描述中,错误的是( D )。
A.数组的长度通常用length表示 B.数组下标从0开始
C.数组元素是按顺序存放在内存的 D.数组在赋初值和赋值时都不判界
9.下列说法正确的是( AC )。
A.表达式“1+2>3”的值是false B.表达式“1+2||3”是非法的表达式
C.表达式“i+j=1”是非法的表达式 D.表达式“1+2>3”的值是true
10.若String s = "hello"; String t = "hello"; char c[] = {'h','e','l','l','o'} ; 则下列哪些表达式返回true?( AB )
A.s.equals(t); B.t.equals(new String("hello"));
C.t.equals(c); D.s==t;
11.执行下面的代码段:
switch(m){ case 0: System.out.println("case 0");
case 1: System.out.println("case 1"); break;
case 2:
default: System.out.println("default");
}
下列m的哪些值将引起"default"的输出?( CD )
A.0 B.1 C.2 D.3
三、判断题
1.String str="abcdefghi"; char chr=str.charAt(9); ( × )
2.char[] chrArray={ 'a', 'b', 'c', 'd', 'e', 'f', 'g'}; char chr=chrArray[6]; ( √ )
3.int intArray[]={0,2,4,6,8}; int length=intArray.length();( × )
4.String str="abcedf"; int length=str.length; ( × )
5.int[] intArray[60]; ( × )
6.char[] str="abcdefgh"; ( × )
7.说明或声明数组时不分配内存大小,创建数组时分配内存大小。( √ )
8.强制类型转换运算符的功能是将一个表达式的类型转换为所指定的类型。( √ )
四、分析题
1.分析下面的程序,写出运行结果。
public class Exercises5_1 {
String str = new String("Hi !");
char[] ch = { 'L', 'i', 'k', 'e' };
public static void main(String args[]) {
Exercises5_1 ex = new Exercises5_1();
ex.change(ex.str, ex.ch);
System.out.print(ex.str + " ");
System.out.print(ex.ch);
}
public void change(String str, char ch[]) {
str = "How are you";
ch[1] = 'u';
}
}
运行结果是:( Hi ! Luke )
2.分析下面的程序,写出运行结果。
public class Exercises5_2 {
public static void main(String[] args) {
int n = 1, m, j, i;
for (i = 3; i <= 30; i += 2) {
m = (int) Math.sqrt((double) i);
for (j = 2; j <= m; j++)
if ((i % j) == 0)
break;
if (j >= m + 1) {
System.out.print(i + " ");
if (n % 5 == 0)
System.out.print("\\n");
n++;
}
}
}
}
运行结果是:( )
3 5 7 11 13
17 19 23 29
五、改错题
1.找出下面代码的错误部分,说明错误类型及原因,并更正。
public int m1 (int number[20]){
number = new int[20];
for(int i=0;i return number; } 改正后程序: public int[] m1(int number[]) { // number = new int[20]; for (int i = 1; i < number.length - 1; i++) number[i] = number[i - 1] + number[i + 1]; return number; } 2.找出下面代码的错误部分,说明错误类型及原因,并更正。 (1) int x = 1; while (x <= 10); { i++; } 改正后程序: int x = 1, i = 0; while (x <= 10) { i++; } (2) switch (n) { case 1: system.out.println(""The name is 1"); case 2: system.out.println(""The name is 2"); break; } 改正后程序: int n = 1; switch (n) { case 1: System.out.println("The name is 1"); break; case 2: System.out.println("The name is 2"); break; } 六、简答题 1.在Java 语言中,表示字符串常量和字符常量时应注意哪些问题? 2.什么是表达式语句?什么是空语句?什么是块语句?可以把块语句视为一条语种吗? 3.if语句中,<条件表达式>一定是逻辑型表达式吗? switch语句中,<语句序列>里一定有break语句吗? 4.while循环语句与do-while循环语句有何不同? 5.for循环语句中,关键字for后面括号内的表达式是否可以使用多个用逗号分隔的表达式?for-each语句的特点是什么? 6.在Java中怎样定义和使用一维数组、二维数组? Java语言面向对象基础 习 题 三 一、填空题 1.类是一组具有相同(属性)和(行为)的对象的抽象。(实例)是由某个特定的类所描述的一个个具体的对象。 2.(接口)只描述系统所提供的服务,而不包含服务的实现细节。 3.构造方法的方法名与(类名)相同,若类中没有定义任何的构造方法,则运行时系统会自动为该类生成一个(默认构造)方法。 4.Java使用固定于首行的(package)语句来创建包。 二、简答题 1.名词解释:对象、类、实例、方法、属性、接口、封装、继承、多态性。 2.为什么要对类进行封装?封装的原则是什么? 3.类的封装性、继承性和多态性各自的内涵是什么? 4.什么是对象?什么是类?二者有何关系? 5.Java中类定义的一般格式是什么?定义类的修饰符有哪些?各自的特点是什么? 6.Java中成员变量定义的一般格式是什么?成员变量有哪些修饰符? 7.Java中成员方法定义的一般格式是什么?成员方法有哪些修饰符? 8.简述构造方法的特点与作用。 9.Import语句和package语句的功能分别是什么? 三、选择题 1.下面关于封装性的描述中,错误的是( D )。 A.封装体包含属性和行为 B.被封装的某些信息在外不可见 C.封装提高了可重用性 D.封装体中的属性和行为的访问权限相同 2.下面哪些代码段是正确的Java源程序?( BCD ) A.import java.io.*; B.import java.io.*; package testpackage; class Person{/* do something... */} public class Test{/* do something... */} public class Test{/* do something.*/} C.import java.io.*; D.package testpackage; import java.awt.*; public class Test{/* do something... */} public class Test{/* do something... */} 四、判断题 1.类是一种类型,也是对象的模板。( √ ) 2.类中说明的方法可以定义在类体外。( × ) 3.实例方法中不能引用类变量。( × ) 4.创建对象时系统将调用适当的构造方法给对象初始化。( √ ) 5.class是定义类的惟一关键字。( √ ) 五、改错题 1.下面的程序中有若干个语法错误,找出后请改正。 public class MyMainClass{ public static void main( ) { TheOtherClass obj = new TheOtherClass("John SmithUK"); System.out.println(obj.name+' '+obj.gender+' '+obj.nationality); } System.out.println("The end of the program! ") } public class TheOtherClass{ private String name,gender,nationality; public TheOtherClass(String name,String gender,String nationality) { this.name=name; this.gender=gender; this.nationality=nationality; } } 改正后程序: public class MyMainClass { public static void main(String args[]) { TheOtherClass obj = new TheOtherClass("John Smith", "Male", "UK"); System.out.println(obj.name + ' ' + obj.gender + ' ' + obj.nationality); System.out.println("The end of the program! "); } } class TheOtherClass { public String name, gender, nationality; public TheOtherClass(String name, String gender, String nationality) { this.name = name; this.gender = gender; this.nationality = nationality; } } Java语言面向对象高级程序设计 习 题 四 一、填空题 1.类的访问控制符有(public)和(默认default)两种,(public)类具有跨包访问性而(default)类不能被跨包访问。 2.类成员的访问控制符有(public)、(protected)、(private)和默认四种。 3.系统规定用(this())表示当前类的构造方法,用(super())表示直接父类的构造方法,在构造方法中两者只能选其一,且须放在第一条语句。 4.若子类和父类在同一个包中,则子类继承父类中的(public)、(protected)和(默认)成员,将其作为子类的成员,但不能继承父类的(private)成员。 5.(子类对象)直接赋值给(父类对象)时,子类对象可自动转换为父类对象,(父类对象)赋值给(子类对象)时,必须将父类对象强制转换为子类对象。 6.Java的多态性主要表现在(重载)和(覆盖)两个方面。 7.Java语言中,重载方法的选择是在编译时进行的,系统根据(参数个数)、(参数类型)和参数顺序寻找匹配方法。 8.实现接口中的抽象方法时,必须使用(完全相同)的方法头,并且还要用(public)修饰符。 9.接口中定义的数据成员均是(常量数据成员),所有成员方法均为(抽象方法)方法,且没有(构造)方法。 10.如果一个类包含一个或多个abstract方法,则它是一个(abstract)类。 11.没有子类的类称为(最终类),不能被子类重载的方法称为(最终方法),不能改变值的量称为常量,又称为(最终变量)。 二、简答题 1.什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来什么好处? 2.如何创建一个类的子类? 3.什么是重载方法?什么是覆盖方法?它们的主要区别是什么? 4.什么是成员变量的继承?什么是成员变量的覆盖? 5.简述接口定义的一般格式。 6.什么是接口?如何定义接口?接口与类有何区别? 7.一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象方法? 8.比较接口与抽象类的异同。 9.什么是抽象类?什么是抽象方法?各自有什么特点? 10.什么是最终类?什么是最终变量?什么是最终方法? 三、选择题 1.在成员方法的访问控制修饰符中,规定访问权限包含该类自身,同包的其他类和其他包的该类子类的修饰符是( B )。 A.默认 B.protected C.private D.public 2.在类的修饰符中,规定只能被同一包类所使用的修饰符是( B )。 A.public B.默认 C.final D.abstract 3.下列关于子类继承父类的成员描述中,错误的是( C )。 A.当子类中出现成员方法头与父类方法头相同的方法时,子类成员方法覆盖父类中的成员方法。 B.方法重载是编译时处理的,而方法覆盖是在运行时处理的。 C.子类中继承父类中的所有成员都可以访问。 D.子类中定义有与父类同名变量时,在子类继承父类的操作中,使用继承父类的变量;子类执行自己的操作中,使用自己定义的变量。 4.下列关于继承性的描述中,错误的是( C )。 A.一个类可以同时生成多个子类 B.子类继承了父类中除私有的成员以外的其他成员 C.Java支持单重继承和多重继承 D.Java通过接口可使子类使用多个父类的成员 5.下列关于抽象类的描述中,错误的是( C )。 A.抽象类是用修饰符abstract说明的 B.抽象类是不可以定义对象的 C.抽象类是不可以有构造方法的 D.抽象类通常要有它的子类 6.设有如下类的定义: public class parent { int change() {} } class Child extends Parent { } 则,下面哪些方法可加入Child类中?( AB ) A.public int change(){ } B.int chang(int i){ } C.private int change(){ } D.abstract int chang(){ } 7.下列关于构造方法的叙述中,错误的是( D )。 A.构造方法名与类名必须相同 B.构造方法没有返回值,且不用void声明 C.构造方法只能通过new自动调用 D.构造方法不可以重载,但可以继承 8.下面关于接口的描述中,错误的是( A )。 A.一个类只允许继承一个接口 B.定义接口使用的关键字是interface C.在继承接口的类中通常要给出接口中定义的抽象方法的具体实现 D.接口实际上是由常量和抽象方法构成的特殊类 9.下列哪些方法与方法public void add(int a){}为合理的重载方法?( ACD ) A.public void add(char a) B.public int add(int a) C.public void add(int a,int b) D.public void add(float a) 10.MAX_LENGTH是int型public成员变量,变量值保持为常量100,其定义是( C )。 A.public int MAX_LENGTH=100; B.final public int MAX_LENGTH=100; C.public final int MAX_LENGTH=100; D.final int MAX_LENGTH=100; 四、判断题 1.Java语言中,构造方法是不可以继承的。( √ ) 2.抽象方法是一种只有说明而无具体实现的方法。( √ ) 3.Java语言中,所创建的子类都应有一个父类。( √ ) 4.一个类可以实现多个接口,接口可以实现“多重继承”。 ( √ ) 5.使用构造方法只能给实例成员变量赋初值。( √ ) 6.Java 语言不允许同时继承一个类并实现一个接口。( × ) 五、分析题 1.分析下面的程序,写出运行结果。 public class Exercises6_1 extends TT{ public void main(String args[]){ Exercises6_1 t = new Exercises6_1("Tom"); } public Exercises6_1(String s){ super(s); System.out.println("How do you do?"); } public Exercises6_1(){ this("I am Tom"); } } class TT{ public TT(){ System.out.println("What a pleasure!"); } public TT(String s){ this(); System.out.println("I am "+s); } } 运行结果是:( ) What a pleasure! I am Tom How do you do? 2.分析下面的程序,写出运行结果。 class Exercises6_3 { 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[]) { Exercises6_3 a = new Exercises6_3(); Dog d = a.new Dog("Tom", 3); d.step = 29; d.run(d); System.out.println(" " + d.step); } } 运行结果是:( ) 30 3.分析下面的程序,写出运行结果。 class Aclass { void go() { System.out.println("Aclass"); } } public class Bclass extends Aclass { void go() { System.out.println("Bclass"); } public static void main(String args[]) { Aclass a = new Aclass(); Aclass a1 = new Bclass(); a.go(); a1.go(); } } 运行结果是:( ) Aclass Bclass Java GUI程序设计 习 题 五 一、填空题 1.Swing的事件处理机制包括(事件源)、事件和事件监听者。 2.Java事件处理包括建立事件源、(建立事件)和将事件源注册到。 3.Swing的顶层容器有(JFrame)、JApplet、JWindow和JDialog。 二、简答题 1.布局管理器的作用是什么?在JDK中哪些常用布局管理器?各有何特点? 2.什么是容器组件?组件与容器有何区别? 三、判断题 1.容器是用来组织其他界面成分和元素的单元,它不能嵌套其他容器。( × ) 2.一个容器中可以混合使用多种布局策略。( × ) 3.在Swing用户界面的程序设计中,容器可以被添加到其他容器中去。( √ ) 4.使用BorderLayout布局管理器时,GUI组件可以按任何顺序添加到面板上。( √ ) 5.在使用BorderLayout时,最多可以放入五个组件。( √ ) 6.每个事件类对应一个事件接口,每一个接口都有相对应的适配器。( × ) 7.Java中,并非每个事件类都只对应一个事件。( √ ) Java异常处理技术 习 题 六 一、简答题 1.什么是异常?简述Java的异常处理机制。 2.在Java的异常处理机制中,try程序块、catch程序块和finally程序块各起到什么作用?try-catch-finally语句如何使用? 二、选择题 1.下面程序段的执行结果是什么?( B ) public class Foo{ public static void main(String[] args){ try{ return; } finally{System.out.println("Finally"); } } } A.编译能通过,但运行时会出现一个例外。 B.程序正常运行,并输出 "Finally"。 C.程序正常运行,但不输出任何结果。 D.因为没有catch语句块,所以不能通过编译。 三、判断题 1.捕获异常try语句后面通常跟有一个或多个catch()方法用来处理try块内生成的异常事件。( √ ) 2.使用try-catch-finally语句只能捕获一个异常。( × ) 3.当一个方法在运行过程中产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。( √ ) Java输入输出技术 习 题 九 一、简答题 1.什么叫流?简述流的分类。 2.字节流和字符流之间有什么区别? 3.简述可以用哪几种流可以对文件进行操作? 二、选择题 1.实现字符流的写操作类是( B ),实现字符流的读操作类是( A )。 A.FileReader B.Writer C.FileInputStream D.FileOutputStream 2.下列流中哪个不属于字符流?( D ) A.InputStreamReader B.BufferedReader C.FilterReader D.FileInputStream 3.字符流与字节流的区别在于( D )。 A.前者带有缓冲,后者没有 B.前者是块读写,后者是字节读写 C.二者没有区别,可以互换使用 D.处理的字节数不同 三、判断题 1.通过File类可对文件属性进行修改。( √ ) 2.IOException必须被捕获或抛出。( √ )
