一、选择、填空(每题1分,共30分)
1、运行Java 程序需要的工具软件所在的目录是__A___。 A)JDK 的bin 目录 B)JDK 的demo 目录 C)JDK 的lib 目录 D)JDKR 的jre 目录 2、以下___B____不是Java中有效的关键字 A)const B) NULL C)false D) this
3、下列关于for循环和while循环的说法中哪个是正确的___A____
A)while循环能实现的操作,for循环也都能实现
B)while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果
C)两种循环任何时候都可替换
D)两种循环结构中都必须有循环体,循环体不能为空
4、下列关于Java 对import 语句规定的叙述中,错误的是___C__。 A)在Java 程序中import 语句可以有多个 B)在Java 程序中import 语句可以没有 C)在Java 程序中import 语句必须有一个
D)在Java 程序中import 语句必须引入在所有类定义之前 5、下列基本类型数据所占的字节数相同的是__A____ A) boolean和char B) int和float C) byte和short D) int和double
6、以下的选项中能正确表示Java语言中的一个double型常量的是 C
A) Float.MIN_V ALUE B) 1.8e-6F C) 2.0 D)abcf? 7、阅读下列代码后 public class Person{
int arr[]=new int[10];
public static void main(String args[]){ System.out.println(arr[1]); } }
正确的说法是 ____A____
A)编译时将产生错误 B)编译时正确,运行时将产生错误 C)输出为零 D)输出为空
8、下列语句序列执行后,k 的值是 C int i=6,j=8,k=10,m=7; if(i>j||m<=\"\" p=\"\"> A) 12 B)11 C) 10 D) 9
9、下列语句序列执行后,k 的值是 C int i=10, j=19, k=30; switch( j - i ) { case 8 : k++; case 9 : k+=2; case 10: k+=6; default : k/=j; }
A) 31 B) 32 C) 2 D) 33
10、下列语句序列执行后,ch1 的值是 B char ch1='A',ch2='W'; if(ch1+2 < ch2 ) ++ch1; A) …A?B) …B?C) …C?D) B
11.内部类是在一个类内嵌套定义的类。其特点描述错误的是(A ) (A)只能在定义它的类或程序段中或表达式内匿名使用,外部使用时必须给出类的全名
(B)可以使用它所在类的静态成员变量或实例成员变量,但不可以使用所在类中的局部变量
(C)可以作为其它类的成员,而且可访问它所在类的成员 (D)除static内部类外,不能在类内声明static成员 12、下列叙述中,错误的是__D_____
A)接口与类的层次无关 B)通过接口说明类所实现的方法 C)通过接口可了解对象的交互界面 D)接口与存储空间有关 13、System类在哪个包中 D A)
java.util
B)
java.io
C)
java.awt
D)
http://www..com/doc/6916875066.html,ng
14.当方法遇到异常又不知如何处理时,下列哪种说法是正确的(C ) A.捕获异常 B.抛出异常 C.声明异常 D.嵌套异常
15. 给出一段程序,试判断哪个是正确的结果( D ) public class MyProgram{
public static void main (String args[]){ try{
System.out.print(“Hello world ”); } finally{
Syste m.out.println(“Finally executing”); } } }
A、无法编译,因为没有指定异常 B、无法编译,因为没有catch子句 C、Hello world
D、Hello world Finally executing
16、封装、继承和多态是Java语言的三大基本特性。 17、Java程序从 main方法开始执行。
18、Java中类成员的权限修饰词有以下几种:private, public, __protected___, __默认
____。其中,___public_____的限定的范围最大。
19、接口中所有属性均为___public______、___static______和___final_____的。
20、Java中所有类都是类___Object_____的子类。
21、final关键字能修饰__非抽象类___、___非抽象类成员方法__、__变量___。
22、在Java 中,3.14156D 表示的是______double______类型的数据。
23、复用代码的两种方法复用类组合和继承。
24、Java中的基本数据类型和对象引用类型分别存储在栈和栈。 25、一个对象是某个类的_成员对象___,如果要建立一个属于类Car的对象myCar,其语法格式为___Car myCar=new Car()__。
26、Java 不直接支持多继承,但可以通过_____接口_______实现多继承。
27、如果有一个类MyFrame是Frame的子类,能够被不同包中的类所使用,请写出该类的声明头
_import java.awt.*________________。
28.用static修饰的方法,称为静态方法。它们不是对象的方法,而是整个类的方法。静态方法只能处理用关键字 static 修饰的数据。
29.比较两个对象里面的值是否相等,可以通过实现object中equals 方法的覆写来实现。
30.Java语言通过接口和类支持多重继承,使类继承具有更灵活的扩展性。
二、程序分析题(共30分)
2.1 对下面的程序,分析程序输出结果(10分) class Plate { Plate(int i) {
System.out.println(\"Plate constructor\");
} }
class DinnerPlate extends Plate { DinnerPlate(int i) { super(i);
System.out.println(\"DinnerPlate constructor\"); } }
class Utensil { Utensil(int i) {
System.out.println(\"Utensil constructor\"); } }
class Spoon extends Utensil { Spoon(int i) { super(i);
System.out.println(\"Spoon constructor\"); } }
class Fork extends Utensil { Fork(int i) { super(i);
System.out.println(\"Fork constructor\"); } }
class Knife extends Utensil { Knife(int i) { super(i);
System.out.println(\"Knife constructor\"); }
}
class Custom { Custom(int i) {
System.out.println(\"Custom constructor\"); } }
public class PlaceSetting extends Custom { private Spoon sp; private Fork frk; private Knife kn; private DinnerPlate pl; public PlaceSetting(int i) { super(i + 1);
sp = new Spoon(i + 2); frk = new Fork(i + 3); kn = new Knife(i + 4); pl = new DinnerPlate(i + 5);
System.out.println(\"PlaceSetting constructor\"); }
public static void main(String[] args) { PlaceSetting x = new PlaceSetting(9); } } 结果:
Custom constructor Utensil constructor Spoon constructor Utensil constructor Fork constructor Utensil constructor
Knife constructor Plate constructor DinnerPlate constructor PlaceSetting constructor
2.2 阅读程序,分析输出结果(20分) abstract class Base { public Base(int i) {
System.out.println(\"Base constructor, i = \" + i); }
public abstract void f(); }
public class AnonymousConstructor { public static Base getBase(int i) { return new Base(i) { {
System.out.println(\"Inside instance initializer\"); }
public void f() {
System.out.println(\"In anonymous f()\"); } }; }
public static void main(String[] args) { Base base = getBase(47); base.f(); } } 结果:
Base constructor, i =47 Inside instance initializer
In anonymous f()
三、改错题(10分),找出错误并写出正确答案 1 public class Contents{ 2 int i;
3 void Contents(int j){i=j;}//应该把void去掉 4 }
5 class Game { 6 Game(int i) {
7 System.out.println(\"Game constructor\"+i); 8 } 9 }
10 class BoardGame extends Game { 11 BoardGame(int i) { 12 Game(i); //super(i);
13 System.out.println(\"BoardGame constructor\"+i); 14 }
15 public static main(String[] args) { //漏写void 16 BoardGame x = new BoardGame(3); 17 } 18 }
19 public class Demotion {
20 void f(float x) { System.out.println(\"f1(float)\"); } 21 void testDouble() {
22 double x = 0; //应定义为float格式 23 System.out.println(\"double argument:\"); 24 f(x); 25 }
26 public static void main(String[] args) { 27 Demotion p = new Demotion(); 28 p.testDouble();
29 } 30 }
四、编程题(每题15分,共30分)
4.1编写Java应用程序实现下面数据的排序 int a[]={52, 38, 16,89, 24, 18, 0, 190, 87, 21} import java.util.*; public class Ssort {
public static void main(String[] args) { int a[]={52, 38, 16,89, 24, 18, 0, 190, 87, 21}; Arrays.sort(a);
System.out.println(\"排序之后的结果: \"); for(int i = 0; i < a.length; i++){ System.out.print(a[i] + \} } }
4.2编写一个算法求n!。 import java.util.*; import java.io.*; class aa {
public static void main(String[] args) throws IOException { int sum=1,num;
String str;
System.out.println(\"请输入n:\"); BufferedReader buf; buf=new
InputStreamReader(System.in));
str=buf.readLine(); num=Integer.parseInt(str); if(num!=0)
BufferedReader(new
{
for(int i=1;i<=num;i++) {
sum=sum*i; } }
else{ System.out.println(\"0的阶乘是0\"); }
System.out.println(\"n的阶乘是:\"+sum);}}
因篇幅问题不能全部显示,请点此查看更多更全内容