JAVA复习资料2015-6-23

更新时间:2024-07-01 21:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、选择题

1. 下列不可作为java语言修饰符的是( )。 A. a1 B. $1 C. _1 D. 11 答案:D

2. 有一段java 应用程序,它的主类名是a1,那么保存它的源文件名可以是( )。 A. a1.java B. a1.class C. a1 D. 都对 答案:A

3. 整型数据类型中,需要内存空间最少的是( )。 A. short B. long C. int D. byte 答案:D

4. Java 类可以作为( )。 A. 类型定义机制 B. 数据封装机制

C. 类型定义机制和数据封装机制 D. 上述都不对 答案:C

5. 在创建对象时必须( )。

A. 先声明对象,然后才能使用对象

B. 先声明对象,为对象分配内存空间,然后才能使用对象

C. 先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象

D. 上述说法都对 答案:C

6. 在调用方法时,若要使方法改变实参的值,可以( )。 A. 用基本数据类型作为参数 B. 用对象作为参数 C. A和B都对 D. A和B都不对 答案:B

7. Java中( )。

A. 一个子类可以有多个父类,一个父类也可以有多个子类 B. 一个子类可以有多个父类,但一个父类只可以有一个子类 C. 一个子类可以有一个父类,但一个父类可以有多个子类 D. 上述说法都不对 答案:C

8. Java语言具有许多优点和特点,哪个反映了Java程序并行机制的特点?( )。 A. 安全性 B. 多线性 C. 跨平台 D. 可移植 答案:B

9. Character流与Byte流的区别是( )。 A. 每次读入的字节数不同 B. 前者带有缓冲,后者没有

C. 前者是字符读写,后者是字节读写 D. 二者没有区别,可以互换使用 答案:C

10. 以下声明合法的是( )。

A.default String s;

B.public final static native int w( ){}; C.abstract double d;

D.abstract final double hyperbolicCosine( ); 答案:D

11. 关于以下application的说明,正确的是( )。 class StaticStuff { static int x = 10; static {x += 5; }

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

static {x /= 3;} }

A.4行与9行不能通过编译,因为缺少方法名和返回类型B.9行不能通过编译,因为只能有一个静态初始化器 C.编译通过,执行结果为:x=5 D.编译通过,执行结果为:x=3 答案:C

12. 以下选项中循环结构合法的是( )。 A.

while (int i<7) { i++;

System.out.println(“i is “+i); } B.

int j=3; while(j) {

System.out.println(“ j is “+j);

}

C.

int j=0;

for(int k=0; j + k !=10; j++,k++) {

System.out.println(“ j is “+ j + “k is”+ k); } D.

int j=0; do{

System.out.println( “j is “+j++); if (j = = 3) {continue loop;} }while (j<10); 答案:C

13. 将以下哪种方法插入行3是不合法的。( )。 类Test1定义如下: public class Test1{

public float aMethod(float a,float b){ } }

A.public float aMethod(float a, float b,float c){ } B.public float aMethod(float c,float d){ } C.public int aMethod(int a, int b){ } D.private float aMethod(int a,int b,int c){ } 答案:B

14. 将以下哪种方法插入Test2的类体中是不合法的。( )。类Test1、Test2定义如下: public class Test1 {

public float aMethod(float a, float b) throws IOException { } }

public class Test2 extends Test1 {}

A.float aMethod(float a,float b){ }

B.public int aMethod(int a,int b)throws Exception{ } C.public float aMethod(float p,float q){ }

D.public int aMethod(int a,int b)throws IOException{ } 答案:A

15. 关于以下程序段,正确的说法是( )。 String s1=”abc”+”def”;

String s2=new String(s1); if(s1= =s2)

System.out.println(“= = succeeded”); if (s1.equals(s2))

System.out.println(“.equals() succeeded”); A.行4与行6都将执行 B.行4执行,行6不执行 C.行6执行,行4不执行 D.行4、行6都不执行 答案:C

16. Java application中的主类需包含main方法,main方法的返回类型是什么?( )。 A.int B.float C.double D.void 答案:D

17. 以下哪个方法用于定义线程的执行体? ( )。 A.start() B.init() C.run()

D.synchronized() 答案:C

18. 以下标识符中哪项是不合法的( )。 A.const B.$double C.hello

D.BigMeaninglessName 答案:A

19. 以下哪个关键字可以用来为对象加互斥锁?( )。 A.transient B.static C.serialize

D.synchronized 答案:D

20. 在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序的特性称为( )。 A.隐藏 B.覆盖 C.重载

D.Java不支持此特性 答案:C

21. 以下关于构造函数的描述错误的是( )。 A.构造函数的返回类型只能是void型。

B.构造函数是类的一种特殊函数,它的方法名必须与类名相同。 C.构造函数的主要作用是完成对类的对象的初始化工作。 D.一般在创建新对象时,系统会自动调用构造函数。 答案:A

22. 下列哪些语句关于Java内存回收的说明是正确的? ( ) A.程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存

C.内存回收程序允许程序员直接释放内存

D.内存回收程序可以在指定的时间释放内存对象 答案:B

23. 若需要定义一个类域或类方法,应使用哪种修饰符?( )。 A. interface B{ void print() { } ; }

B. abstract interface B{ void print() ;}

C. abstract interface B extendsA.1,A2 { abstract void print(){ };}//A1、A2为已定义的接口 A.static B.package C.private D.public 答案:C

24. 有以下方法的定义,请选择该方法的返回类型( )。 ReturnType method(byte x, double y) { return (short)x/y*2; }

A.byte B.short C.int D.double

答案:D

25. 有以下程序片段,下列哪个选项不能插入到第1行。( //第1行

public class Interesting{ //do sth }

A.import java.awt.*; B.package mypackage; C.class OtherClass{ } D.public class MyClass{ } 答案:D

26. 以下哪项是接口的正确定义?( )。 )。 D. interface B { void print();} 答案:D

27. 下面哪个函数是public void aMethod(){...}的重载函数?( )。 A.void aMethod( ){...} B.public int aMethod(){...} C.public void aMethod ( ){...} D.public int aMethod ( int m){...} 答案:D

28. 假设A类有如下定义,设a是A类的一个实例,下列语句调用哪个是错误的?( )。 classA. { int i;

static String s;

void method1() { }

static void method2() { } }

A.System.out.println(A.i); B.A.method1(); C.A.method1(); D.A.method2() 答案:C

29. 有如下代码段, 其中方法unsafe() 将抛出IOException, 请问可将以下哪项填入第1行?( )。 //此为第1行 {

if(unsafe()){ //do something…}

else if(safe()){ //do the other…} }

A. public IOException methodName() C.输出零 D.输出空 答案:C

33. 在使用interface声明一个接口时,只可以使用( )修饰符修饰该B. public void methodName()

C. public void methodName() throw IOException D. public void methodName() throws IOException 答案:D

30. Java的字符类型采用的是Unicode编码方案,每个Unicode码占用( )个比特位。 A.8 B.16 C.32 D.64 答案:C

31. 以下关于继承的叙述正确的是( )。 A.在Java中类只允许单一继承

B.在Java中一个类只能实现一个接口

C.在Java中一个类不能同时继承一个类和实现一个接口 D.在Java中接口只允许单一继承 答案:A

32. 给出下面代码,关于该程序以下哪个说法是正确的?( ) public class Person{

static int arr[] = new int[5];

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

A.编译时将产生错误

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

接口。 A.private B.protected

C.private protected D.public 答案:D

34. 编译并运行以下程序,以下描述哪个选项是正确的( )。class A{

protected boolean equals(){ return super.equals(); } }

A.编译通过运行无异常 B.编译通过但运行时出错 C.行2出错,不能成功编译 D.不能成功编译,行3出错 答案:D

35. 有语句String s=”hello world”; ,以下操作哪个是不合法的?(A.int i=s.length(); B.s>>>=3;

C.String ts=s.trim(); D.String t=s+”!”; 答案:B

36. 下列关于Java语言的特点,描述错误的是( )。 A.Java是跨平台的编程语言 B.Java支持分布式计算

)。

C.Java是面向过程的编程语言 D.Java支持多线程 答案:C

37. 下述概念中不属于面向对象方法的是( )。 A.对象、消息 B.继承、多态 C.类、封装 D.过程调用 答案:D

38. 结构化程序设计所规定的三种基本控制结构是( )。 A.输入、处理、输出 B.树形、网形、环形 C.顺序、选择、循环

D.主程序、子程序、函数 答案:C

39. 下列关于构造方法的叙述中,错误的是( )。 A.Java语言规定构造方法名与类名必须相同

B.Java语言规定构造方法没有返回值,但不用void声明 C.Java语言规定构造方法不可以重载

D.Java语言规定构造方法只能通过new自动调用 答案:C

40. 下列哪个类的声明是正确的?( ) A.abstract final class HI{} B.abstract private move(){} C.protected private number; D.public abstract class Car{} 答案:D

41. 关于被私有访问控制符private修饰的成员变量,以下说法正确的是( )。

A.可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类

B.可以被两种类访问和引用:该类本身、该类的所有子类 C.只能被该类自身所访问和修改 D.只能被同一个包中的类访问 答案:C

42. 下列关于for循环和while循环的说法中哪个是正确的?( ) A.while循环能实现的操作,for循环也都能实现

B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果

C.两种循环任何时候都可替换

D.两种循环结构中都必须有循环体,循环体不能为空 答案:B

43. 阅读以下代码,输出结果应该是:( )。 import java.io.*; import java.util.*; public class foo{

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

System.out.println(\ } }

A.代码得到编译,并输出“s=” B.代码得到编译,并输出“s=null”

C.由于String s没有初始化,代码不能编译通过

D.代码得到编译,但捕获到 NullPointException异常 答案:C

44. 编译运行以下程序后,关于输出结果的说明正确的是( )。 public class Conditional{

public static void main(String args[ ]){ int x=4;

System.out.println(“value is “+ ((x>4) ? 99.9:9)); } }

A.输出结果为:value is 99.9 C.abstract D.interface 答案:B

48. 若a的值为3时,下列程序段被执行后,c的值是多少?( ) B.输出结果为:value is 9 C.输出结果为:value is 9.0 D.编译错误 答案:C

45. 执行完以下代码int [ ] x = new int[10];后,以下哪项说明是正确的( )。 A.x[9]为0 B.x[9]未定义 C.x[10]为0 D.x[0]为空 答案:A

46. 关于以下程序段,正确的说法是( )。 String s1=“a”+“b”;

String s2=new String(s1); if(s1= =s2)

System.out.println(“= = is succeeded”); if (s1.equals(s2))

System.out.println(“.equals() is succeeded”); A.行4与行6都将执行 B.行4执行,行6不执行 C.行6执行,行4不执行 D.行4、行6都不执行 答案:C

47. 下列哪一个关键字用于实现接口来定义类?( ) A.extends B.implements

if ( a>0 )

if ( a>3 ) c = 2; else c = 3; else c = 4;

A.1 B.2 C.3 D.4 答案:C

49. 下面哪一个操作符的优先级最高?( )。 A.&& B.|| C.! D.( ) 答案:D

50. 下列方法头中哪一个不与其他方法形成重载(overload)关系? A.void mmm() B.void mmm(int i) C.void mmm(String s) D.int mm() 答案:D

51. 编译Java程序的命令是:( )。 A.appletviewer B.javac C.java D.javadoc

)( 答案:B

52. 编译Java源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( )。 A..byte B..class C..html D..exe 答案:B

53. 执行语句int i = 1, j = ++i; 后i与j的值分别为( )。 A.1与1 B.2与1 C.1与2 D.2与2 答案:D

54. main方法是Java应用程序执行的入口点,关于main方法的方法头以下哪项是合法的?( )。

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[] ) 答案:B

55. 下列哪个选项不是Java语言的特点?( ) A.面向对象 B.高安全性 C.平台无关 D.面向过程 答案:D

56. 下列哪个是合法的Java标识符?( ) A.Tree&Glasses B.FirstJavaApplet

C.*theLastOne D.273.5 答案:B

57. 下面的选项中,哪一项不属于“汽车类”的行为( )。 A.启动 B.刹车 C.减速 D.速度 答案:D

58. 下面哪一个循环会导致死循环?( ) A.for (int k = 0; k < 0; k++) B.for (int k = 10; k > 0; k--) C.for (int k = 0; k < 10; k--) D.for (int k = 0; k > 0; k++) 答案:C

59. 有如下程序段,则表达式a == b与s2 == s1的结果分别是:( )。 int a = b = 5;

String s1 = \祝你今天考出好成绩!\ String s2 = s1; A.true与true B.false与true C.true与false D.false与false 答案:A

60. 在Java中用什么关键字修饰的方法可以直接通过类名来调用?( A.static B.final C.private D.void 答案:A

) 61. 若在某一个类定义中定义有如下的方法:abstract void performDial( );该方法属于( )。 A.接口方法 B.最终方法 C.抽象方法 D.空方法 答案:C

62. 有如下程序段, 则执行完该程序段后total的值为:( )。 int total = 0;

for ( int i = 0; i < 4; i++ ){ if ( i == 1) continue; if ( i == 2) break; total += i; } A.0 B.1 C.3 D.6 答案:A

63. 如果希望某个变量只可以被类本身访问和调用,则应该使用下列哪一种访问控制修饰( )。 A.private B.protected

C.private protected D.public 答案:A

64. 在Java中,\属于( )类的对象。 A.int B.String C.Integer

D.Number 答案:B

65. System.out.println(\的输出结果应该是( )。 A.52 B.7 C.2 D.5 答案:A

66. 为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( )。 A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( ) 答案:A

67. 下面声明数组的写法错误( )。 A. int a[ ]; B. int[ ] a; C. int[3][ ] a; D. int[ ][3] a; 答案:D

68. 设x为float型变量,y为double型变量,a为int型变量,b为long型变量, c为char型变量,则表达式x+y*a/x+b/y+c的值为( )类型。A. int B. long C. double D. char 答案:C

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

A.ArrayList myList=new Object(); B.List myList=new ArrayList(); C.ArrayList myList=new List(); D.List myList=new List(); 答案:B

70. 指出正确的表达式 ( ) A. byte=128; B. Boolean=null; C. long l=0xfffL; D. double=0.9239d; 答案:C

71. 运行下列程序, 会产生什么结果( )。 public class X extends Thread implements Runnable{ public void run(){

System.out.println(\ }

public static void main(String args[]) { Thread t=new Thread(new X()); t.start(); } }

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

答案:D

72. Java编程所必须的默认引用包为( )。 A. java.sys包 B. java.lang包 C. java.util包 D. 以上都不是 答案:B

73. 下面语句在编译时不会出现警告或错误的是( )。 A. float f=3.14; B. char c=”c”; C. Boolean b=null; D. int i=10.0; 答案:C

74. 下面不是合法标识符的是( )。 A. 2ofUS B. giveMes C. whataQuiz D. $d2000_ 答案:A

75. 下面哪一个是合法的数组声明和构造语句( )。 A. int[] ages = [100];

B. int ages = new int[100]; C. int[] ages = new int[100]; D. int() ages = new int(100); 答案:C

76. 下面说法不正确的是( )。

A. 一个子类的对象可以接收父类对象能接收的消息;

B. 当子类对象和父类对象能接收同样的消息时,它们针对消息产生的行为可能不同;

C. 父类比它的子类的方法更多;

D. 子类在构造函数中可以使用super( )来调用父类的构造函数; 答案:C

77. 给出下面代码段, 哪行将引起一个编译时错误?( )。 public class Test {

int n = 0; int m = 0;

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

public static void main(String arg[]) { Test t1,t2; int j,k; j=3; k=5;

t1=new Test(); t2=new Test(k); } }

A. 行1 B. 行4 C. 行6 D. 行9 答案:D

78. 下面这些类型的应用,那个不使用Java语言来编写?( )A.JavaScript B.Applet C.Servlet D.Java Swing 答案:A

79. 声明成员变量时,如果不使用任何访问控制符(public, protected, private),则以下哪种类型的类不能对该成员进行直接访问( )。A.同一类

B.同一包中的子类 C.同一包中的非子类 D.不同包中的子类 答案:D

80. 下列哪种异常是检查型异常,需要在编写程序时声明 ( )A. NullPointerException B. ClassCastException C. FileNotFoundException

D. IndexOutOfBoundsException 答案:C

81. 下面哪个流类属于面向字符的输入流( )。 A.BufferedWriter B.FileInputStream C.ObjectInputStream D. InputStreamReader 答案:D

82. 下面关于数组声明和初始化的语句那个有语法错误?( A.int a1[]={3,4,5};

B.String a2[]={\C.String a3[]=new String(3); D.int[][] a4=new int[3][3]; 答案:C

83. 下面哪一行代码正确的声明了一个类方法(静态方法)?(A.public int method(int i) B.protected method(int i)

C.public static method(String s)

D.protected static void method(Integer i) 答案:D

84. 下面的方法,当输入为2的时候返回值是多少?( ) public int getValue(int i) { int result = 0; switch (i) { case 1:

result = result + i; case 2:

) ) result = result + i * 2; case 3:

result = result + i * 3; }

return result; }

A.0 B.2 C.4 D.10 答案:D

85. getCustomerInfo()方法如下,try中可以捕获三种类型的异常,如果在该方法运行中产生了一个IOException,将会输出什么结果( )。 public void getCustomerInfo() { try {

// do something that may cause an Exception } catch (java.io.FileNotFoundException ex) {

System.out.print(\ } catch (java.io.IOException ex) {

System.out.print(\ } catch (java.lang.Exception ex) { System.out.print(\ } }

A.IOException!

B.IOException!Exception!

C.FileNotFoundException!IOException!

D.FileNotFoundException!IOException!Exception! 答案:A

86. 新建一个流对象,下面哪个选项的代码是错误的?( ) A.new BufferedWriter(new FileWriter(\.txt\

B.new BufferedReader(new FileInputStream(\.dat\C.new GZIPOutputStream(new FileOutputStream(\.zip\D.new ObjectInputStream(new FileInputStream(\.dat\答案:B

87. Java的集合框架中重要的接口java.util.Collection定义了许多方法。选项中哪个方法不是Collection接口所定义的?( ) A.int size()

B.boolean containsAll(Collection coll) C.compareTo(Object obj)

D.boolean remove(Object obj) 答案:C

88. 一个线程在任何时刻都处于某种线程状态(thread state),例如运行状态、阻塞状态、就绪状态等。一个线程可以由选项中的哪种线程状态直接到达运行状态?( ) A.死亡状态

B.阻塞状态(对象lock池内) C.阻塞状态(对象wait池内) D.就绪状态 答案:D

89. 选项中哪一行代码可以替换题目中//add code here而不产生编译错误?( )

public abstract class MyClass { public int constInt = 5; //add code here

public void method() { } }

A.public abstract void method(int A ); B.value = value + 5;

C.public int method();

D.public abstract void anotherMethod() {} 答案:A

90. File类是IO包中唯一表示磁盘文件信息的对象,它定义了一些与平台无关的方法来操纵文件。通过调用File类提供的各种方法,我们能够创建、删除文件、重命名文件、判断文件的读写权限及是否存在,设置和查询文件的最近修改时间等。下面的代码片段实现的是什么功能?( ) File file = new File(\if (file.exists()) { file.delete(); }

A. 创建C:\\test.dat。 B. 删除C:\\test.dat。

C. 打开C:\\test.dat文件输出流。 D. 移动C:\\test.dat 答案:B

91. 阅读Shape和Circle两个类的定义。在序列化一个Circle的对象circle到文件时,下面哪个字段会被保存到文件中?( ) class Shape {

public String name; }

class Circle extends Shape implements Serializable{ private float radius; transient int color;

public static String type = \}

A.name B.radius C.color D.type

答案:B

92. 下面哪个选项中的代码没有定义内部类,或者错误的定义了内部类?( )

A.

public class Line { int length;

Class Point {//内部类代码} }

B.

public class Line {

public Point getPoint() {

return new Point(){//内部类代码}; } } C.

public class Line {

//外部类代码 }

class Point {//内部类代码} D.

public class Line {

public int calcLength() {

class Point {//内部类代码} } }

答案:C

93. list是一个ArrayList的对象,哪个选项的代码填写到//todo delete处,可以在Iterator遍历的过程中正确并安全的删除一个list中保存的对象?( )

Iterator it = list.iterator();

int index = 0;

while (it.hasNext()){

Object obj = it.next();

if (needDelete(obj)) { //needDelete返回boolean,决定是否要删除 //todo delete }

index ++; }

A.list.remove(obj); B.list.remove(index); C.list.remove(it.next()); D.it.remove();

答案:D

94. Java是从( )语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B

95. 下列语句哪一个正确( )。

A. Java程序经编译后会产生machine code B. Java程序经编译后会产生byte code C. Java程序经编译后会产生DLL D.以上都不正确 答案:B

96. 下列说法正确的有( )。 A. class中的构造函数不可省略

B. 构造函数必须与class同名,但方法不能与class同名 C. 构造函数在一个对象被new时执行 D.一个class只能定义一个构造函数 答案:C

97. 提供Java存取数据库能力的包是( )。 A.java.sql B.java.awt C.java.lang D.java.swing 答案:A

98. 下列运算符合法的是( )。 A.&& B.<> C.if D.:= 答案:A

99. 执行如下程序代码后,C的值是( )。 a=0;c=0; do{ --c; a=a-1; }while(a>0); A.0 B.1 C.-1

D.死循环 答案:C

100. 下列哪一种叙述是正确的( )。 A. abstract修饰符可修饰字段、方法和类

B.抽象方法的body部分必须用一对大括号{ }包住C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号

答案:D

101. 下列语句正确的是( )。 A.形式参数可被视为local variable B.形式参数可被字段修饰符修饰

C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象 答案:A

102. 下列哪种说法是正确的( )。 A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用其他类的实例方法 D.实例方法可直接调用本类的类方法 答案:D

103. 用于设置组件大小的方法是( )。 A.paint() B.setSize() C.getSize() D.repaint() 答案:B

[解析] 可以使用setSize()方法来设置组件的大小。paint()和repaint()是与Applet显示相关的两种方法,paint()具体执行Applet的绘制,repaint()方法,主要用于Applet的重新显示,它调用update()方法实现对Applet的更新。因此,本题的正确答案是B。

104. 单击窗口内的按钮时,产生的事件是( )。 A.MouseEvent B.WindowEvent C.ActionEvent D.KeyEvent 答案:C

[解析] 当按钮被单击后,会产生ActionEvent事件,需要ActionListener接

口进行监听和处理事件。因此,本题的正确答案是C。

105. 下列语句中,可以作为无限循环语句的是( )。 A.for(;;){}

B.for(int i=0;i<10000;T++){} C.while(false){} D.do{}while(false) 答案:A

[解析] 本题中的while循环和do-while循环中当布尔表达式的值为true时,执行循环体中的语句。若某次判断其值为false,则结束循环。选项B的for循环中当i的值小于10000,则执行循环语句,当i的值大于10000时结束循环。只有选项A的for循环语句可以作为无限循环语句。因此,本题的正确答案是A。

106. 下列表达式中,类型可以作为int型的是( )。 A.\ B.\ C.'a'+'b' D.3+\答案:C

[解析] 字符常量是用单引号括起来的一个字符,如‘a’。用双引号括起来的是字符串,如“Shanghua”。字符型数据类型能向int数据类型自动转换,而字符串不可以。选项A、B、D都含有字符串。因此,本题的正确答案是C。

107. 在switch(expression)语句中,expression的数据类型不能是( )。 A.double B.char C.byte D.short 答案:A

[解析] 表达式expresion只能返回几个类型的值:int、byte、short和Char。题目中的double是不正确的。多分支结构中,case子句的值必须是常量。而且所有case子句中的值应是不同的,default子句是任选的。当表达式的值与任一case子句中的值都不匹配时,如果有default语句,则程序执行default后面的语句;如果没有default语句,则程序不做任何操作直接跳出switch语句。

108. 已知:int[]a=new int[100];在下列给出的数组元素中,非法的是( )。 A.a[0] B.a[1] C.a[99] D.a[100] 答案:D

[解析] 本题中,int[]a=new int[100]定义了一个数组a,含有100个整型元素。在Java中,数组元素的下标是从O开始的,因此上面定义的数组实际上下标是从0~99,所以选项D错误。

109. 在方法内部使用,代表对当前对象自身引用的关键字是( )。 A.super B.This C.Super D.this 答案:D

[解析] super代表父类对象的引用;this代表当前对象的引用。因此,选择D。

110. 阅读下列程序: public class VariableUse {

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

if (a == 8) {

int b = 9;

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

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

该程序在编译时的结果是( )。 A.变量a未赋值

B.第二个System.out.println(\语句中,变量b作用域有错 C.第二个System.out.println(\语句中,变量a作用域有错 D.第一个System.out.println(\语句中,变量b作用域有错 答案:B

[解析] 程序中局部变量a定义时没有赋初值,Java会赋值一个随机值,第二个Systern.out.println(\语句中,变量b作用域有错,因为变量b是在if语句中定义的,执行完if语句时,变量b已经不存在。因此,选择B。

111. 下列不属于Swing的构件是( )。 A.JButton B.JLabel C.JFrame D.JPane 答案:D

[解析] Swing常用组件包含JLabel组件(标签)、JButton组件(按钮)、JTextField组件(单行文本)、JTextArea组件(多行文本)、JcheckBox组件(复选按钮)、JRadioButton组件(单选按钮)、JComboBox组件(下拉列表框)、JList组件(列表)、JTablc组件(表格)、JTree组件(树)等。选项D中JPane写错了。选择D。

112. 对鼠标单击按钮操作进行事件处理的接口是( )。

A.MouseListener B.WindowListener C.ActionListener D.KeyListener 答案:A

[解析] WindowListener是监听窗口事件的接口;ActionListener是监听按钮、文本框、列表框等组件的动作事件的接口;KeyLitener是监听键盘事件的接口。因此,本题选择A。 113. 阅读下列代码: public class Person{

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

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

该代码的运行结果是( )。 A.编译时将产生错误

B.编译时正确,运行时将产生错误 C.输出零 D.输出空 答案:C

[解析] 若类的某个成员是基本数据类型,即使没有进行初始化,Java也会确保它获得一个默认值。

114. 下列方法中,不属于类String的方法是( )。 A.toLowerCase() B.valueOf() C.charAt() D.append() 答案:D

[解析] string类的方法不包括append(),aploend()方法是StringBuffer类的方法。具体可以参考String类的函数。因此选择D。

115. 给一个short类型变量赋值的范围是( )。 A.-128~+127

B.-2147483648~+2147483647 C.-32768~+32767 D.-1000~+1000 答案:C

[解析] 在java语言中short型变量的存储顺序是先高后低,占16bit,能表示的数据范围是:-32768~+32767。因此,本题的正确答案是C。 116. 阅读下列代码段:

ByteArrayOutputStream bout=new ByteArrayOutputStream(); ObjectOutputStream out=new ObjectOutputStream(hout); out.writeObject(this); out.close();

以上代码段的作用是( )。 A.将对象写入内存 B.将对象写入硬盘 C.将对象写入光盘 D.将对象写入文件 答案:A

[解析] 在java.io中,提供了ByteArrayInputStream、BytcArrayOutputStream和StringBufferInputStream类可直接访问内存,它们是Inputstream和OutputStream的子类。用ByteArrayOutputStream可以向字节数组(缓冲区)写入数据。在ObjectInputStream中用readObject()方法可以直接读取一个对象,ObjectOutputStream中用writeObject()方法可以直接将对象保存到输出流中。因此,本题的正确答案是A。 117. 下列语句中错误的是( )。 A.String s[]={\

B.byte b=255;

C.String s=\D.int i=2+2000; 答案:B

[解析] 选项A是定义并初始化一个一维数组,选项C是定义并初始化一个字符串,选项D是定义并初始化一个整型变量。选项A、C、D是正确的。byte型变量占8bit,能表示的数据范围是:-128~+127,所以选项B是错误的。因此,本题的正确答案是B。 118. 阅读下列代码: public class Test{

public static void main(String args[]){ System.out.println((2<0)? 10:8); } }

其运行结果是( )。 A.2 B.0 C.10 D.8 答案:D

[解析] 因为2<0为flase,所以条件表达式的值为8。因此,本题的正确答案是D。

119. Java类库中,将信息写入内存的类是( )。 A.java.io.FileOutputstream

B.java.io.ByteArrayOutputStream C.java.io.BufferedOutputstream D.java.io.DataOutputStream 答案:C

[解析] 用FileOutputstream定义一个输出流文件;ByteArrayOutputSrream定义一个字节数组输出流;DataOutputStream定义一个数据输出流;它们

都不带有缓冲功能。BuferedOutputStream生成一个缓冲输出流,在内存中开辟缓冲区。因此选择C。 120. 阅读下列代码段:

class Test implements Runnable{ public int run(){ int i=0;

while(true){ i++;

System.out.println(\ } } }

上述代码的编译结果是( )。

A.程序通过编译并且run()方法可以正常输出递增的i值 B.程序通过编译,调用run()方法将不显示任何输出

C.程序不能通过编泽,因为while的循环控制条件不能为“true” D.程序不能通过编译,因为run()方法的返回值类型不是void 答案:D

[解析] 定义线程包括两种办法: ①扩展java.lang.Thread类。如果线程是使用独立的Runnable运行对象构造的,则调用该Runnable对象的run方法;否则,该方法不执行任何操作并返回。

②实现java.lang.Runncable接口。实现接口Runnable的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的run方法。方法run的常规协定是,它可能执行任何所需的操作。本题应该选择D。 121. 下列关于线程的说法中,正确的是( )。 A.一个线程一旦被创建,就立即开始运行

B.使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行

C.当运行状态的线程因为调用了yield()方法而停止运行,它一定被放在可

运行线程队列的前面

D.当因等待对象锁而被阻塞的线程获得锁后,将直接进入运行状态 答案:B

[解析] 在Java中,调用一个线程类的构造方法,便创建了一个线程,新建的线程调用start()方法将使线程的状态从New转换为Runnable。Runnable表示系统处于运行就绪状态,此时线程仅仅是可以运行,但不一定在运行中。所以选项A是错误的,选项B是正确的。yield()方法使具有与当前线程相同优先级的线程有运行的机会。如果没有同等优先级的线程是可运行状态,yeild()方法将什么也不做。yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行,不一定被放在可运行线程队列的前面,所以选项C是错误的。如果线程中使用synchronized来请求对象的锁,但没有获得时,进入对象锁阻塞状态,该状态下的线程当获得对象锁后,将进入可运行状态,所以选项D是错误的。因此,本题的正确答案是B。 122. 阅读下列代码:

public class Test implements Runnable{ public void run(Thread t){

System.out.println(\ }

public static void main(String[] args){ Thread tt=new Thread(new Test()); tt.start(); } }

代码运行结果是( )。 A.将抛出一个异常 B.没有输出并正常结束

C.输出\并正常结束

D.程序第2行将出现一个编译错误 答案:D

[解析] 接口可以作为一种引用来使用。接口类型变量(Runnable)将实现该接口的类(Test)的实例存入,通过这些变量去访问类所实现接口中的方法(run)。Test不是一个抽象类,它没有实现Runnabk中的run()方法,程序第2行将出现一个编译错误。因此,本题的正确答案是D。

123. 在匹配器(Marcher)类中,用于输入字符串与模式串比较的方法是( )。

A.static boolean matches() B.boolean matcher.find() C.int matcher.start() D.int matcher.end()

答案:A

[解析] Marcher类用于将一个输入字符串input和模式串pattern相比较。boolean mateher.find()方法用于寻找下一个模式匹配串;int matcher.start()方法用于寻找下一个起始索引整数值;int matcher.end()方法用于返回匹配串的一个终止索引整数值;而用于输入字符串与模式串比较的方法是static boolean matches(),所以选项A正确。 124. 阅读下列代码,写出运行结果。 public class Test{

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

其运行结果是( )。 A.args

B.One World One Dream C.s

D.编译时出错 答案:D

[解析] 在一个static方法内部,随时可访问类中的static成员变量。但要

访问非static成员变量,则必须首先创建一个对象,然后通过这个对象访问实倒变量。所以,在程序中不能访问变量s。因此,本题的正确答案是D。

二、程序填空题

1. 阅读下列利用递归来求n!的程序。 class FactorialTest{

static long Factorial(int n){//定义Factorial()方法 if(n==1) return 1; else

return n*Factorial(______); }

public static void main(String a[]){//main()方法 int n=8;

System.out.println(n+\ } }

为保证程序正确运行,在下画线处应该填入的参数是______。 答案:n-1

[解析] 很明显,n!要求应该是n-1。

2. 阅读下列代码段: abstract class Person {

public Person(String n){ name=n; }

public______String getDescription(); public String getName(){

return name; }

private String name; }

为保证程序正确运行,在下画线处应该填入的修饰符是______。

答案:abstract

[解析] 抽象类没有实现的方法,不能实例化。程序中Person是一个抽象类,因此String getDescrtption方法也是抽象的,所以用abstract修饰。因此,本题的正确答案是B。

3. 阅读下列代码: public class Jixiangwu {

public static void main(String[] args){

String[] stars={\贝贝\晶晶\欢欢\迎迎\妮妮\ System.out.println(\你抽取的奥运吉祥物是\ +starsr(int)(stars.______*Math.random())]+~\ } }

为保证程序正确运行,在下画线处应该填入的是______。 答案:length

[解析] 程序中的下画线处需要填入字符数组starts的长度才能确定范围以便能够随机抽取到字符数组starts的各个元素。因此,本题的正确答案是D。

三、阅读程序写出结果

1. 阅读下列程序片段,写出运行结果。 public class Test {

public static void main(String args[]) { double d = 12.3;

decrement(d);

System.out.println(d); }

public static void decrement(double decMe) { decMe = decMe - 1.0; } }

代码执行后输出的结果是______。 答案:12.3

[解析] 本题参数传递采用的是传值引用,函数中不会改变实参d的值,因此d的值不变。

2. 阅读下列代码,写出运行结果。 public class Arrays {

public static void main(String[] args) { int[] a = new int[5];

for (int i = 0; i < a.length; i = i + 1) { a[i] = 10 + i; }

for (int i = 0; i < a.length; i++) { System.out.print(a[i] +\ \ }

String[] s = { \ for (int i = 0; i < s.length; i = i + 1) { System.out.print(s[i] +\ \ }

s[2] = \

System.out.print(s[2]); } }

代码执行后输出的结果是______。 答案:10 11 12 13 14 Frank Bob Jim Mike

[解析] for循环执行时,首先执行初始化操作,其次判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分的。完成一次循环后重新判断终止条件。在本题的程序段中第一个for循环功能是定义一个一维数组a,第二个for循环的功能是输出一维数组a的各个元素,第三个for循环功能是输出~维数组s的各个元素。 7. 阅读下列程序片段,写出运行结果。 public class Test {

public static void main(String[] args) { int x = 3, y = 4, z = 5; if (x > 3) { if (y < 2)

System.out.println(\ else

System.out.println(\ } else {

if (z > 4)

System.out.println(\ else

System.out.println(\ } } }

代码执行后输出的结果是______。 答案:show three

[解析] 该程序主要是考查if语句的用法。由于x=3,所以第一个if里面的表达式的值为false,进入下面对应的else的运算中。又由于z=5,使得里面的z>4的值为true,所以程序运行的最后结果为show three。 8. 阅读下列程序片段,写出运行结果。 public class Test {

public static void main(String[] args) {

int[] m = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 }; int sum = 0;

for (int i = 0; i < 8; i++) { sum += m[i]; if (i == 3) break; }

System.out.println(sum); } }

代码执行后输出的结果是______。 答案:10

[解析] 该程序的功能是将m数组中的前四个数相加,将和保存在sum中,最后输出sum的值。因为程序中for循环停止的条件有两个,一个是当i<8的时候,另一个是当i==3的时候,即运行到m数组中第四个值的时候,可以跳出for循环。程序执行的是后 者,所以输出的结果是10。

9. 阅读下列程序片段,写出运行结果。 public class Test {

public static void main(String[] args) { int percent = 10; tripleValue(percent);

System.out.println(percent); }

public static void tripleValue(int x) { x = 3 * x; } }

代码执行后输出的结果是______。

答案:10

[解析] static关键字应用的场合有:①用来修饰类中定义的变量,这样的变量称为类变量或静态变量。②可以用来修饰类中定义的方法,这样的方法称为静态方法。③用来修饰初始化语句块,这样的语句块常称为静态初始化语句块。static在这里表示这个方法为类方法,不属于任何对象实例,而是类所有,描述对象的共有动作,可以用类名直接调用。在调用了tripleValue函数之后,函数的值没有返回,所以percent的值还是10。 10. 阅读下列程序片段,写出运行结果。 class Shape {

public Shape() {

System.out.print(\ } }

class Circle extends Shape { public Circle() {

System.out.print(\ } }

public class Test {

public static void main(String[] args) { Shape d = new Circle(); } }

代码执行后输出的结果是______。 答案:ShapeCircle

[解析] 继承是而向对象编程的一个主要优点之一,它对如何设计Java类有着直接的影响。继承有如下几点好处:

①它可以利用已有的类来创建自己的类,只需要指出自己的类和已有的其他类有什么不同即可,而且还可以动态访问其他有 关类中的信息。

②通过继承,可以利用Java类库所提供的丰富而有用的类,这些类都已经被很好地实现。

③当设计很大的程序时,继承可以使程序组织得层次清晰,有利于程序设计相减少错误的发生。该程序首先编写了一个Shape的类,然后又编写一个类Circle去继承Shape类。由于子类拥有父类所有的属性和方法,所以输出的是ShappeCircle。

11. 阅读下列程序片段,写出运行结果。 import javax.swing.*; import java.awt.*; public class Test {

public static void main(String[] args) { JFrame f = new JFrame(); JPanel p = new JPanel();

f.setLayout(new BorderLayout()); f.getContentPane().add(p, \ p.setBackground(Color.blue); f.setVisible(true); f.setSize(200, 200); } }

代码执行后输出的结果是______。

答案:程序可以运行 ,显示一个窗口 ,窗口大小是200×200 ,背景为蓝色。

[解析] 该程序没有语法和逻辑上面的错误,所以应该是可以运行的。由JFrame f=new JFrame()可以看出,该程序创建了一个窗口,p.setBackground(Color.blue)告诉我们,窗口的背景颜色是蓝色的,而f.setSize(200,200)则设黄了窗口的大小,最后窗口是可见的。 12. 阅读下列程序片段,写出运行结果。

public class ArrayTest {

public static void main(String[] args) {

int data[][] = { { 1, 2, 3, 4, 5 }, { 11, 22, 33, 44, 55 }, { 111, 222, 333, 444, 555 } }; for (int i = 0; i < data.length; i++) { if (i % 2 == 0) {

System.out.print(data[i][4] + \ } } } }

代码执行后输出的结果是______。 答案:5 555

[解析] 该程序的功能是遇到行下标数为偶数的时候,输出这一行的列下标为4的数,即这一行的第五个数。而程序定义的二维数组一共有三行五列。第0行的时候,可以被2整除,所以输出第5个数“5”,第2行的时候,也可以被2整除,所以输出这一行的第5个数“555”。

13. 阅读下列程序片段,写出运行结果。 public class Test {

public static void main(String args[]) { System.out.println(89 >> 1); } }

代码执行后输出的结果是______。 答案:44

[解析] 算数右移一位相当于除2取商。89除以2,商是44。所以89>>1的结果是44。因此,本题的正确答案是A。

14. 下面是People和Child类的定义和构造方法,每个构造方法都输出编号。在执行new Child(\的时候都有哪些构造方法被顺序调用?写出运行结果。 class People { String name;

public People() { System.out.print(1); } public People(String name) { System.out.print(2); this.name = name; } }

class Child extends People { People father;

public Child(String name) { System.out.print(3); this.name = name;

father = new People(name + \ }

public Child(){ System.out.print(4); } }

代码执行后输出的结果是______。 答案:132 [解析]无

15. 下面程序中类ClassDemo中定义了一个静态变量sum,阅读下列程序片段,写出运行结果。 class ClassDemo {

public static int sum=1; public ClassDemo() { sum = sum + 5; }

}

public class ClassDemoTest{

public static void main(String args[]) { ClassDemo demo1=new ClassDemo(); ClassDemo demo2=new ClassDemo(); System.out.println(demo1.sum); } }

代码执行后输出的结果是______。 答案:11 [解析]无

16. 阅读下列程序片段,写出运行结果。 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'; } }

代码执行后输出的结果是______。 答案:good and gbc [解析]无

本文来源:https://www.bwwdw.com/article/u49.html

Top