1、第 1 页 共 10 页 一、 单项 选择题 1. 关于继承以下陈述正确的是 ( D ) A. “X extends Y“ is correct if and only if X is a class and Y is an interface. B. “X extends Y“ is correct if and only if X is an interface and Y is a class. C. “X extends Y“ is correct for all combinations of X and Y being classes and/or interfaces. D. “
2、X extends Y“ is correct if X and Y are either both classes or both interfaces. 2. 运行第一行和第二行代码后, x、 a、 b 的值正确的是 ( C ) 1. int x, a=6,b=7; 2. x=a+ + b+; A. x=15,a=7,b=8 B. x=15,a=6,b=7 C. x=13,a=7,b=8 D. x=13,a=6,b=7 3. 表达式 (13+3*4)/4%3 的值是 ( A ) A. 0 B. 25 C. 2 D. 1 4. 在 JAVA 程序中 import、 class 和 packa
3、ge 的正确出现顺序是 ( C ) A. class,import,package B. package,class,import C. package,import,class D. import,package,class 5. 某一程序的 main 方法中有如下语句,则输出的结果是 ( B ) string s1=“0.5”,s2=“12”; double x = Double.parseDouble(s1); int y = Integer.parseInt(s2); System.out.println(x+y); A. 12 B. 12.5 C. 120.5 D. “12.5” 6
4、. 定义整数数组 x: int x=new int25; 关于 x 的描述正确的 是 ( D ) A. x24 is undefined. B. x25 is 0 C. x0 is null D. x.length is 25 7. 下列不属于面向对象编程的三个特征的是( B ) A.封装 B.指针操作 C.多态性 D.继承 第 2 页 共 10 页 8. JDBC 中要显式地关闭连接的命令是( A ) A. Connection.close() B. RecordSet.close() C. Connecton.stop() D. Connection.release() 9. 下列数组定义
5、及赋值,错误的是( B) A. int intArray; B. intArray=new int3;intArray1=1;intArray2=2;intArray3=3; C. int a=1,2,3,4,5; D. int a=new int2;a0=new int3;a1=new int3; 10. 分析选 项中关于 Java 中 this 关键字的说法正确的是( A) A. this 关键字是在对象内部指代自身的引用 B. this 关键字可以在类中的任何位置使用 C. this 关键字和类关联,而不是和特定的对象关联 D 同一个类的不同对象共用一个 this 11. 线程调用了 s
6、leep( )方法后,该线程将进入( C )状态 A. 运行状态 B. 阻塞状态 C. 休眠状态 D. 终止状态 12. 下列选项中,用于在定义子类时声明继承父类名字的关键字是( C ) A. Interface B. Package C. extends D. Class 13. 以下语句有语法错误的是 ( A ) A. int x=1; y=2; z=3 B. for (int x=10,y=0;x0;x+); C. while(x5); D. for(;); 14. 以下哪个表达式是不合法的( C ) A. String x = “hello”; int y=9; x+=y; B. St
7、ring x = “hello”; in t y=9; if(x=y) C. String x= “hello”;int y=9; x=x+y; D. String x=null; int y=(x!null) A. -1 B. 2 C. 1 D. 3 19. Java application 中的 主类需包含 main 方法,以下哪项是 main 方法的正确形参?( B ) A. String args B. String ar C. Char arg D. StringBuffer args 20. 以下哪个关键字可以用来对对象加互斥锁?( B ) A. transient B. sync
8、hronized C. serialize D. static 21. 以下有关类的继承的叙述中,正确的是( D ) a) 子类能直接继承父类所有的非私有属性, 也可以通过接口继承父类的私有属性 b) 子类只能继承父类的方法,不能继承父类的属性 c) 子类只能继承父类的私有属性,不能继承父类的方法 d) 子类不能继承父类的私有属性 22. 关于 Java 语言叙述错误的是( C ) a) Java 语言具有跨平台性 b) Java 是一种面向对象编程语言 c) Java 语言中的类可以多继承 d) Java 的垃圾收集机制自动回收程序已不知使用的对象 23. 线程生命周期中正确的状态是( A
9、) a) 新建、就绪、运行、堵塞和死亡 b) 新建、运行和死亡 c) 新建、运行、堵塞和死亡 d) 就行、运行、堵塞和死亡 24. 以下标识符中哪项是不合法的 ( A ) A. static B. $double C. hello D. BigMeaninglessName 25. 下列方法中可以用来创建一个新线程的是( C ) 第 4 页 共 10 页 a) 实现 java.lang.Runnable 接口并重写 start()方法 b) 继承 java.lang.Runnable 接口并重写 run()方法 c) 继承 java.lang.Thread 类并重写 run()方法 d) 实现
10、 java.lang.Thread 类并实现 start()方法 26. 以下哪项是接口的正确定义?( B ) A. interface B void print() ; B. interface B void print(); C. abstract interface B extends A1,A2 /A1、 A2 为已定义的接口 abstract void print() ; D. abstract interface B void print() ; 27. 有以下程序片段,下列哪个选项不能插入到行 1。( D ) 1. 2.public class Interesting 3./do
11、 sth 4. A. import java.awt.*; B. package mypackage; C. class OtherClass D. public class MyClass 28. 下面程序的运行结果是 A public class Short public static void main(String args) StringBuffer s= new StringBuffer(“ Hello” ); if (s.length() 5) /do nothing; System.out.println(“ value is “ +s); A. The output : va
12、lue is Hello B. The output : value is Hello there C. A compile error at line 4 or 5 D. No output 29. 给出如下程序 第 5 页 共 10 页 public static void main (String args) String str = “ null” ; if (str = null) System.out.println(“ null” ); else if(str.length() = 0) System.out.printIn(“ zero” ); else System.out.
13、println(“ some” ); 运行结果为 C A. null B. zero C. some D. 编译失败 30. 当浏览器暂时离开含 applet 程序的页面时,以下选项中的哪个方法将被执行?( D ) A init() B start() C destroy() D stop() 31. 以下关于构造函数的描述错误的是( B )。 A. 构造函数是类的一种特殊函数,它的方法名必须与类名相同。 B. 构造函数的返回类型必须是 void 型。 C. 构造函数的主要作用是完成对类的对象的初始化工作。 D. 一般在创建新对象时,系统会自动调用构造函数。 32. 为 AB 类的一个 无形式
14、参数无返回值的方法 method 书写方法头,使得使用类名 AB 作为前缀就可以调用它,该方法头的形式为 ( C )。 A. final void method( ) B. public void method( ) C. static void method( ) D. abstract void method( ) 33. 设 x = 1 , y = 2 , z = 3,则表达式 y z / x 的值是 ( C )。 A. 3 B. 3.5 C. 1 D. 5 34. 以下哪个关键字可以用来为对象加互斥锁?( D ) A transient B. static C. serialize D
15、. synchronized 35. 有以下方法的定义,请选择该方法的返回类型( C )。 ReturnType method(byte x, double y) return (short)x/y*2; A. byte B. short C. double D. int 二 、 写出以下各题的输出结果 第 6 页 共 10 页 1. 请说出 E 类中 Sysytem.out.println 的输出结果为 _15.0_8_。 interface A double f(doublex,double y); class B implements A public double f(double x
16、,double y) return x*y; int g(int a,int b) return a+b; public class E public static void main(String args) A a=new B(); System.out.println(a.f(3,5); B b=(B)a; System.out.println(b.g(3,5); 2. 给出如下程序 public static void main (String args) String str = “null”; if (str = null) System.out.println(“null”);
17、else if(str.length() = 0) System.out.printIn(“zero”); else System.out.println(“some”); 运行结果为 _some _ 3. 某一程序的 main 方法中有如下语句,则输出的结果是 _12.5_ string s1=“0.5”,s2=“12”; double x = Double.parseDouble(s1); int y = Integer.parseInt(s2); System.out.println(x+y); 4. 下列程序运行结果 _false_true_false_. class TwoObjec
18、ts public static void main(String args) B b1=new B(); B b2=new B(); System.out.println(b1=b2); System.out.println(b1!=b2); System.out.println(b1.equals(b2); 第 7 页 共 10 页 class B int x; B( ) x=1; 5. 下列程序运行结果 v0 v1 1 v1 1 _. import java.util.*; public class VecApp public static void main(String args)
19、Vector v = new Vector(); for(int i = 0; i 2; i+) v.addElement(“v“+i); v.insertElementAt(new Integer(1),2); Enumeration e = v.elements(); while(e.hasMoreElements() System.out.print(e.nextElement()+“ “); System.out.println(); v.removeElement(“v0“ ); for(int i = 0; i v.size() ; i+) System.out.print(v.e
20、lementAt(i) +“ “); System.out.println(); 6. 下列程序运行结果 _2 4 6 8_. import java.io.*; public class UseLabel public static void main(String args) Loop: for(int i=2; i10; i+) if( i%2!=0) continue Loop; System.out.print(i+“ “); 7. 下列程序运行结果 _3.0 Caught negative_. class MyException extends Exception public S
21、tring toString( ) return “negative“; public class ExceptionDemo public static void mySqrt(int a) throws MyException if( a0 ) throw new MyException(); System.out.println(Math.sqrt(a); public static void main( String args ) try mySqrt(9); mySqrt(-9 ); catch( MyException e ) System.out.println(“Caught
22、“+e); 第 8 页 共 10 页 8. 下列程序运行结果 _ in First _ in Second _ class First First() System.out.println (“in First“); public class Second extends First Second() System.out.println(“in Second“); public static void main(String args) Second mine= new Second(); 三 、 简答题 1. 线程和进程有什么区别? 线程是比进程更小的执行单位,一个进程在其执行过程中,可以
23、产生多个线程 线程间可以共享进程中的某些内存单元,并利用这些单元来实现交换,实时通信与必要的同步操作但与进 程的中断与恢 复可以更加节省系统的开销。 线程更是运行在进程中的小进程 2. Java 对标识符命名有什么规定? 标识符由字母 , 下划线 , 美元符号和数字组成,长度不受限制 标识符的第一字符不能是数字字符 标识符不能是关键字 标识符不能是 true, false, null 3. String 类和 StringBuffer 类的主要区别是什么? String 类创建的字符串对象是不可修改的 String 字符串不能修改 .删除或替换中的某个字符,对象一旦创建不可以再发生变化 Str
24、ingBuffer 类能创建可修改的字符串序列 StringBuffer 对象 的实体的内存空间可以自动地改变大小 4. 什么叫方法的重载?构造方法可以重载吗? 方法重载是: 简单说就是同一个方法名,不同的传参 , 一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同或者是参数的类型不同 。 构造方法可以重载 5. 如何在 Java中实现线程? Java 线程类也是一个 object 类 ,它的实例都继承自 java.lang.Thread 或其子类。 可以用如下方式用 java 中创建一个线程: Tread thread = new Thread(); 执行
25、该线程可以调用该线程的 start()方法 :thread.start(); 6. Thread 类中的 start() 和 run() 方法有什么区别? start()用来启动线程,真正实现了多线程,这时无需等待 run()方法体代码执行完毕而直接继续执行下面的代码:通过调用 Thread 类的 start()方法此线程处于就需状态并没有运行,然后通过此 Thread 类调用方法 run()来完成其运行操作的,这里方法 run()称为线程体,她包含了要执行这个线程的内容, run 方法运行结束,此线程终止。而 cpu 再运行其他线程。 7. Float 型常量和 double 型常量 在表示
26、和用法上有什么区别? double 为双精度,占 8 个字节,是 64 位的浮点数 float 为单精度,内存中占 4 个字节,是第 9 页 共 10 页 32 位的浮点数 .double 取值范围和精度比 float 要高 变量定义上有些不同,比如: floath a = 2.3f; double a = 2.3;float 类型值后面有一个 f; 四 、 编程题 1. 判断 101 到 200 之间有多少个素数,并输出所有素数。 2. public class sushu 3. public static void main(String args) 4. z: for (int o =
27、101; o 200; o+) 5. for (int p = 2; p o / 2; p+) 6. if (o % p = 0) 7. continue z; 8. 9. System.out.println(o); 10. 2. 一个数如果恰好等于他的因子之和,这个数就称为“完数”。(因子就是所有可以整除这个数的数 ,不包括这个数自身 . 比如 6 的因子是 1,2,3),编写一个应用程序求 1000 之内的所有完数。 11. public class wanshu 12. public static void main(String args) 13. int i, j; 14. for
28、 (i = 1; i = 1000; i+) 15. int sum; 16. sum = 0; 17. for (j = 1; j i; j+) 18. if (i % j = 0) 19. sum += j; 20. 21. 22. if (i = sum) 23. System.out.println(“ “ + i); 24. 编写程序模拟猫和狗。 程序中有 4 个 类 :Animal、 Dog、 Cat 和主类 MainClass 类。要求如下: ( 1) Animal类有权限是 protected的 String型成员变量 name,以及 public void cry()、pub
29、lic void showName()方法。 ( 2) Dog 类是 Animal 的子类,新增 public void swimming()方法 ,声明狗会游泳 。重写public void cry()方法 ,说明狗的叫声“汪” 。 ( 3) Cat 类是 Animal 的子类,新增 public void uptree()方法 ,声明猫可以 上树; 重写public void cry()方法 ,说明猫的叫声“喵” 。 ( 4)在主类 MainClass 中 分别 使用 Dog 和 Cat 类 创建对象 ,并调用各自的方法 。 ( 5)写出程序的运行结果。 class Animal prot
30、ected String name; 第 10 页 共 10 页 public void showName() System.out.println(name); public void cry() System.out.println(“不同动物的叫声是 有区别的 “); class Dog extends Animal Dog(String s) name = s; public void cry() System.out.println(“汪汪汪 “); public void swimming() System.out.println(“加速划水 ing“); class Cat ex
31、tends Animal Cat() name = “猫 “; Cat(String s) name = s; public void cry() System.out.println(“喵喵喵 “); public void climbUpTree() System.out.println(name+“会爬树 “); public class Xc_01 public static void main(String args) Dog dog = new Dog(“小黄狗 “); Cat cat = new Cat(“小花猫 “); dog.showName(); dog.cry(); dog.swimming(); cat.showName(); cat.cry(); cat.climbUpTree();