1、 Java 程序设计练习题 1 Java 程序设计 练习题 第一章 Java 编程基础 一 、 选择 题 1、 可以使用 【 】 实用程序编译 Java 程序。 A java B javac C javadoc D cmd 2、 可以使用 【 】 实用程序运行 java 应用程序。 A java B javac C javadoc D cmd 3、 可以使用 【 】 实用程序从 Java 源文件代码中抽取 Java 文档注释,生成相应的 HTML 帮助文档。 A java B javac C javadoc D cmd 4、 Java 编译单元(源程序文件)的扩展名为 【 】 A .java
2、B .class C .doc D .exe 5、 编译 Java 源程序文件产生的字节码文件的扩展名为 【 】 A .java B .class C .html D .exe 6、以下 Java 应用程序 执行入口 main 方法的声明中,正确的是 【 】 A、 public static void main() B、 public static void main(String args) C、 public static int main(String args) D、 public void main(String args) 7、 Java 属于以下哪种语言? 【 】 A机器语言 B
3、汇编语言 C高级语言 D以上都不对 8、下面哪种类型的文件可以在 Java 虚拟机中运行? 【 】 A .java B .jre C .exe D .classs 9、 Java 程序中声明包的关键字是 【 】 A、 java B、 package C、 javadoc D、 cmd 10、 如果 JDK 的安装路径为“ d:jdk”,若想在命令窗口中任何当前路径下,都可以直接使用 javac 和 java 命令,需要将环境变量 path 设置为以下哪个选项?【 】 A、 d:jdk; B、 d:jdkbin; C、 d:jrebin; D、 d:jre; 11、下列说法中,不正确的是 【 】
4、 。 A、一个 Java 源文件 编译通过后,得到的结果文件数也只有一个 B、一个 Java 源文件 经过编译后,得到的文件的扩展名一定是 .class C、一个 Java 源文件 只能有一个 public 类 定义,其类名与源文件名相同 D、一个 Java 源文件可以包含多个类 Java 程序设计练习题 2 12、 安装好 JDK 后,在其 bin 目录下有许多 exe 可执行文件,其中“ java.exe”命令的作用是以下哪一种? 【 】 。 A、 Java 文档制作工具 B、 Java 解释器 C、 Java 编译器 D、 Java 启动器 13、以下关于变量的说法错误的是 【 】 A变
5、量名必须是一个有效的标识符 B变量在定义时可以没有初始值 C变量一旦被定义,在程序中的任何位置都可以被访问 D在程序中,可以将一个 byte 类型的值赋给一个 int 型类型的变量,不需要特殊声明 14、 假设 int x=2,三元表达式 x0?x+1:5 的运行结果是以下哪一个? 【 】 A 0 B 2 C 3 D 5 15、下面的运算符中,用于执行除法运算的是哪个? 【 】 A / B C % D * 16、下面哪种写法可以实现访问数组 arr 的 首 个元素? 【 】 A arr0 B arr(0) C arr1 D arr(1) 17、以下哪个选项可以正确创建一个长度为 3 的二维数组
6、? 【 】 A new int23 B new int3 C new int 3 D以上答案都不对 18、关于变量的作用域,下列说法错误的是 【 】 A类成员变量的作用域为类定义体 B方法参数的作用域为方法体 C对于 for 语句中定义的变量,当 for 语句执行完时,该变量就消亡了 D在方法 void f(int i)的 for 语句块中,可以声明变量“ int i; ” 19、 Java 字符类型采用的是 Unicode 编码方案,每个 Unicode 码占用的位数是【 】 。 A 8 B 16 C 32 D 64 20、 下列赋值语句中,不合法的是 【 】 。 A float f=1.2
7、 B float f2=1.2f C double d=1.2 D double d2=1.2f 二 、 填空 题 1、 Java 的三个技术平台分别是 _java se_、 _java ee_、 _javame_。 2、 Java 程序 的运行环境简称之为 _jre_。 3、 编译 Java 程序需要使用 _javac_命令 。 Java 程序设计练习题 3 4、 _path_环境变量用来存储 Java 的编译和运行工具所在路径,而_classpath_环境变量则用来保存 Java 虚拟机要运行的“ .class”文件路径 。 5、在 Java 语言中, main()方法的参数是表示命令行参
8、数的 String 数组,其中,_args0_表示第一个参数。 6、 Java 应用程序的入口方法是 _main()_,用于控制程序的开始和结束。 7、 Java 系统运行时,通过 _自顶垃圾收集 _机制周期性地释放无用对象所使用的内存,完成对象的清除。 8、 Java 中的程序代码都必须在一个类中定义,类使用 _class_关键字来定义。 9、布尔常量即布尔类型的 两个值,分别是 _true_和 _false_。 10、 Java 中的注释可分为三种类型,分别是 _单行 _、 _多行 _、 _文档 _。 三、判断题 1、 Java 语言采用面向对象的思想编程,具有跨平台、分布式、多线程等优点
9、。 2、 Java 语言的语法与 C或 C+类似,也支持面向过程的程序设计技术。 3、 Java 提供了自动垃圾收集机制进行内存管理,减小了内存出错的可能性。 4、 Java 语言的平台无关性使得 Java 程序可以跨平台运 行 。 5、 Java 虚拟机是实现 Java 语言平台无关性的基础。 四 、简答题 1、简述 JRE 与 JDK 的区别 。 JRE,它相当于操作系统部分,提供了 Java 程序运行时所需要的基本条件和许多 Java 基础类 , 如果你只想运行别人开发好的 Java 程序,那么,你的计算机上必须且只需安装 JRE。 它包含编译工具、解释工具、文档制作工具、打包工具等多种
10、与开发相关的工具,是提供给 Java 开发人员使用的。初学者学习和使用 Java 语言时,首先必须下载和安装 JDK。 JDK 中已经包含了 JRE 部分,初学者安装 JDK 后不必再去下载和安装 JRE 了。 2、什么是方法重载? 方法重载指的是在一个类中可以声明多 个同名的方法,而方法中参数的个数或者数据类型不一致。调用这些同名的方法时, JVM 会根据实际参数的不同绑定到不同的方法。 第二章 面向对象思想 一、选择题 1、 类的定义必须包含在以下哪种符号之间? 【 】 A 方括号 B 花括号 C 双引号“” D 圆括号() Java 程序设计练习题 4 2、 在以下什么情况下,构造方法会
11、被调用? 【 】 A 类定义时 B 创建对象时 C 调用对象方法时 D 使用对象的变量时 3、 在类的继承关系中,需要遵循以下哪个继承原则? 【 】 A 多重 B 单一 C 双重 D 不能继承 4、 在 Java 语言中,以下哪个关键字用于在方法上声明抛出异常 【 】 A、 try B、 catch C、 throws D、 throw 5、 关于 super 关键字以下说法哪些是不正确的 【 】 。 A super 关键字可以调用父类的构造方法 B super 关键字可以调用父类的普通方法 C super 与 this 不能同时存在于同一个构造方法中 D super 与 this 可以同时存
12、在于同一个构造方法中 6、 类中的一个成员方法被下面哪个修饰符修饰时,该方法只能在本类 被访问?【 】 。 A public B protected C private D default 7、 在 Java 中,要想让一个类继承另一个类,可以使用以下哪个关键字? 【 】 A、 inherits B、 implements C、 extends D、 modifies 8、 System 类位于以下哪个包中? 【 】 。 A、 java.io B、 java.util C、 java.awt D、 java.lang 9、 以下关于继承的说法,正确的 是 【 】 。 A 继 承可以避免代码复制
13、和相关的代码维护等问题 B Java 语言中一个子类可以继承多个基类(多重继承) C Java 语言不允许实现多个接口 D 子类可以继承父类的方法,但不能重新改写父类的方法 10、下列 修饰符中,不能用来修饰类的 是 【 】 。 A public B abstract C final D static 二 、 填空 题 1、 面向对象的三大特征是 _封装 _、 _继承 _和 _多态 _。 2、 在 Java 中,可以使用关键字 _new_来创建类的实例对象 。 3、 定义在类中的变量 被称为 _成员变量 _,定义在方法中的变量被称为 _局部变量 _。 4、 在非静态成员方法中,可以使用关键字
14、_this_访问类的其他非静态成员 。 5、 被 static 关键字修饰的成员变量被称为 _静态变量 _,它可以被该类所有的实例对象共享 。 Java 程序设计练习题 5 6、 在一个类中,除了可以定义属性、方法,还可以定义类,这样的类被称为 _内部类 _。 7、 在 Java 语言中, 允许使用已存在的类作为基础创建新的类,这种技术称为 _继承 _。 8、 一个类如果实现一个接口,那么它就需要实现接口中定义的全部 _方法 _,否则该类就必 须定义成 _抽象类 _。 9、 在程序开发中,要想将一个包中的类导入到当前程序中,可以使用 _import_关键字 。 10、 一个类可以从其他的类派生
15、出来,派生出来的类称为 _子类 _,用于派生的类称为 _父类 _或者 _基类 _。 三、判断题 1、 在定义一个类的时候,如果类的成员被 private 所修饰,该成员不能在类的外部被直接访问 。 2、 Java 中的每个类都至少有一个构造方法,一个类中如果没有定义构造方法,系统会自动为这个类创建一个默认的构造方法。 3、 声明构造方法时,不能使用 private 关键字修饰 。 4、 类中 static 修饰的变量或方法,可以使用类名或对象的引用变量访问。 5、 方法内部类中不能访问外部类的成员变量 。 四、简答题 1、构造方法和普通的成员方法有什么区别? 2、抽象类和接口的区别是什么? 3
16、、什么叫多态? 1 构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。而普通方法只有在使用的时候才会被调用。在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用 return 语句返回一个值 。 2 在 Java 中, 使用 abstract 关键字修饰的类称之为抽象类。抽象 类是不能被实例化的,通常需要写一个子类来继承抽象类,同时实例化子类来获得该类的对象。抽象类通常用于表示一种抽象的概念。 接口可以说是一种特殊的抽象类,接口中只能定义常量和抽象方法。由于接口的特殊性,在定义时需要使用 interface 关键字。 3多态意味着一个对象有着多种
17、形态,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。简单的说,多态就是使用父类类型的变量引用子类对象,根据被引用子类对象的特性,程序会得到不同的运行效果。 Java 程序设计练习题 6 第三章 多线程 一、选择题 1、 Thread 类位于下列哪个包中? 【 】 A java.io B java.lang C java.util D java.awt 2、 线程调用 sleep()方法后,该线程将进入以下哪种状态?【 】 A 就绪状态 B 运行状态 C 阻塞状态 D 死亡状态 3、 在以 下 哪种情况下,线程进入就绪状态?【 】 。 A 线程调用了 sleep()方法时 B
18、线程调用了 join()方法 C 线程调用了 yield()方法时 D 线程调用了 notify()方法 4、 对于通过实现 Runnable 接口创建线程, 下面说法不正确的 是 【 】 。 A、 适合多个相同程序代码的线程去处理同一个资源的情况 B、 把线程同程序代码、数据有效的分离,很好地体现了面向对象的设计思想 C、 可以避免由于 Java 的单继承带来的局限性 D、 编写简单,可以不通过 Thread 类直接创建线程 5、 对于死锁的描述,下面四种说法不正确的是 【 】 。 A 当两个线程互相等待对方释放同步锁时会发生死锁 B Java 虚拟机没有检测和处理死锁的措施 C 一旦出现死
19、锁,程序会发生异常 D 处于死锁状态的线程处于阻塞状态,无法继续运行 6、下 面四个 选项中,不 是线 程进入阻塞状态的原因是 【 】 。 A 线程试图获取某个对象的同步锁,而该锁被其他线程持有 B 线程调用了另一个线程的 join()方法 C 线程调用了一个阻塞式的 IO 方法 D 线程调用了 setDaemon(boolean b)方法 7、 要创建一个线程类,可通过继承 【 】 类 。 A、 Object B、 Thread C、 Runnable D、 Task 8、通过实现【 】接口,可创建一个线程类 A、 Object B、 Thread C、 Runnable D、 Task 9
20、、 通过重写 继承的方法 【 】 ,可实现线程要执行的逻辑操作。 A start() B main() C run() D execute() 10、 通过调用线程对象实例的 【 】 方法,可以启动执行该线程。 A start() B main() C run() D execute() 二、填空题 1、 一个应用程序中有多条并发执行的线索,每条线索都被称作一个 _线程 _,它 Java 程序设计练习题 7 们会交替执行,彼此间可以进行 _通信 _。 2、在实现多线程的程序时有两种方式,一是通过继承 _thread_类,二是通 过实现 _runnable_接口。 3、 yield()方法只能让
21、相同优先级或者更高优先级、处于 _就绪 _状态的线程获得运行的机会。 4、在 Java 语言中,同步方法需要用到关键字 _synchronized_,对于同步方法而言无须指定同步锁,它的同步锁是方法所在的 _对象 _,也就是 _this_(关键字)。 5、在 Thread 类中, start()方法用于开启一个 _新线程 _,当线程启动后,系统会自动调用 _run()_方法。 三、判断题 1、 当创建一个线程对象时,该对象表示的线程就立即开始运行。 2、 如果前台线程全部死亡,后台线程也会自动死亡 。 3、 同步代码块中的锁对象可以是任意类型的对象 。 4、 静态方法不能使用 synchron
22、ized 关键字来修饰 。 5、 线程结束等待或者阻塞状态后,会进入运行状态 。 四、简答题 1、在 Java 中创建线程有几种方式? 2、 sleep()和 wait()有什么区别? 五、分析题 1、阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果。如果不能编译通过,请说明原因。 class RunHandler public void run() System.out.println(“run“); public class Test public static void main(String args) Thread t=new Thread(new RunHa
23、ndler(); t.start(); Java 程序设计练习题 8 2、阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果。如果不能编译通过,请说明原因。 public class A extends Thread protected void run() System.out.println(“this is run()“); public static void main(String args) A a=new A(); a.start(); 3、阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果。如果不能编译通过,请说明原因。 public
24、 class Test private Object obj=new Object(); public synchronized void a() try obj.wait(); System.out.println(“waiting“); catch(InterruptedException e) System.out.println(“Exception“); public static void main(String args) new Test().a(); 六、设计题 1、 声明线程类 TalkThread,循环打印线程名称 10 次(表示 10 次发言机会);创建测试类, 创建
25、3个对象(表示 3个发言人)并启动线程,观察输出结果( 3个发言人的发言顺序)。 第四章 Java API 一、选择题 Java 程序设计练习题 9 1、 先阅读下面的程序片段 String str=“abccdefcdh“ String arr=str.split(“c“); System.out.println(arr.length); 程序执行后,打印的结果是几? 【 】 A 2 B 3 C 4 D 5 2、 以 下 都是 Math 类的常用方法,其中用于计算绝对值的方法是哪个 【 】 。 A ciel() B floor() C abs() D random() 3、 Random 对
26、象能够生成以下哪种类型的随机数? 【 】 。 A int B String C double D A和 C 4、 String s=“ abcdedcba”;则 s.subString(3,4)返回的字符串是以下选项中的哪个? 【 】 。 A、 cd B、 de C、 d D、 e 5、 假如 indexOf()方法未能找到所指定的子字符串,则返回以下选项中的哪个?【 】 。 A false B 0 C -1 D 以上答案都不对 6、 以下 Math 类的方法中, -4.4 通过哪个方法运算后,结果为 -5.0【 】 。 A round() B min() C floor() D ceil()
27、 7、已知 int i=(int)(Math.random()*100),则 i 不可能为 【 】 。 A 0 B 1 C 99 D 100 8、已知 String str=“ abc 计算机 123”,则 str.length()的值为 【 】 。 A 9 B 10 C 12 D 18 9、 已知 String a=“ Hello” ,String b=a.subString(0,2),则 b=【 】 。 A Hello B He C Hel D null 10、下列方法中, 【 】 不是 StringBuffer 类的成员方法 A compareTo() B indexOf C appen
28、d D charAt() 二 、 填空 题 1、 在 Java 中定义了两个类来封装对字符串的操作,它们分别是 _和_。 2、 Java 中操作日 期的类有 _、 _、 _。 3、 Math 类中用于计算所传递参数平方根的方法是 _。 4、 Java 中专门用于将日期格式化为字符串的类是 _。 5、 Java 中用于产生随机数的类是 _,它位于 _包中。 6、 String 类中用于返回字符串字符个数的方法是 _。 Java 程序设计练习题 10 三、判断题 1、 String 对象和 StringBuffer 对象 都是字符串变量,创建后都可以修改 。 2、 用运算符 =比较字符串对象时,如
29、果两个字符串的值相同,结果为 true。 3、 Ssytem 类中的 currentTimeMillis()方法返回一个 long 类型的值 。 4、 Date、 Calendar 以及 DateFormat 类都位于 java.util 包中 。 5、 String 类的方法 replace(CharSequence str1, CharSequence str2)返回一个新的字符串,它是通过用 str2 替换此字符串中出现的所有 str1 得到的 。 四、简答题 1、 String 和 StringBuffer 有什么区别? 2、 Date 和 Calendar 类有什么区别和联系? 第五
30、章 集合类 一、选择题 1、 Java 语言中,集合类都位于哪个包中?【 】 A java.util B java.lang C java.array D java.collections 2、 使用 Iterator 时,判断是否存在下一个元素可以使用以下哪个方法?【 】 A next() B hash() C hasPrevious D hasNext() 3、 在程 序开发中,经常会使用以下哪个类来存储程序中所需的配置?【 】 A HashMap B TreeSet C Properties D TreeMap 4、 要想集合中保存的元素没有重复并且按照一定的顺序排列,可以使用以下哪个集
31、合?【 】 A LinkedList B ArrayList C HashSet D TreeSet 5、 以下哪个方法不是 LinkedList 集合中定义的?【 】 A getLast() B getFirst() C remove(int index) D next() 6、 获取单列集合中元素的个数可以使用以下哪个方法? A length() B size() C get(int index) D add(Object obj) 7、下列集合类型中,不允许集合中存在重复项的是 【 】 A Collection B List C Set D Queue 8、下列关于 List 接口的说法,错误的是 【 】 A继 承 Collection 接口 B不允许重复项 C支持遍历 D可以使用访问索引 9、下列关于 Set 接口的说法,错误的是 【 】 A继承 Collection 接口 B不允许重复项 C支持遍历 D可以使用访问索引