《java程序设计课后练习答案.doc》由会员分享,可在线阅读,更多相关《java程序设计课后练习答案.doc(31页珍藏版)》请在三一办公上搜索。
1、Java程序设计课后练习答案第一章 Java概述一、选择题1. A 是在Dos命令提示符下编译Java程序的命令, B 是运行Java程序的命令。A. javacB. javaC. javadocD. javaw2. D 不是Java程序中有效的注释符号。A. /B. /* */C. /* */D. */ */3. B 不是Java语言的特点。A. 面向对象B. 自动检查语法错误C. 跨平台D. 解释执行4. Java编译器会将Java程序转换为 C A. 可执行代码B. 目标代码C. 字节码D. 机器代码5. Java源文件的扩展名是 D A. .classB.jarC.javD.java二
2、、简答题1、 Java的跨平台的含义是什么?为什么Java可以跨平台?Java语言的一个非常重要的特点就是平台无关性。它是指用Java编写的应用程序编译后不用修改就可在不同的操作系统平台上运行。Java之所以能平台无关,主要是依靠Java虚拟机JVM来实现的。JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、存放器组等。Java编程人员在编写完Java程序后,Java编译器将Java源代码文件编译后生成字节码文件一种与操作系统无关的二进制文件。字节码文件通过Java虚拟机JVM里的类加载器加载后,经过字节码校验,由解释器解释成当前电脑的操作系统能够识别的目标
3、代码并最终运行。以以下图展示了Java程序从编译到最后运行的完整过程。2、 简述Java语言的特点Java具有以下特点:1)、 简单性Java语言的语法规那么和C语言非常相似,只有很少一局部不同于C语言,并且Java还舍弃了C语言中复杂的数据类型如:指针和构造体,因此很容易入门和掌握。2)、 可靠性和平安性Java从源代码到最终运行经历了一次编译和一次解释,每次都有进展检查,比其它只进展一次编译检查的编程语言具有更高的可靠性和平安性。3)、 面向对象Java是一种完全面向的编程语言,因此它具有面向对象编程语言都拥有的封装、继承和多态三大特点。4)、 平台无关和解释执行Java语言的一个非常重要
4、的特点就是平台无关性。它是指用Java编写的应用程序编译后不用修改就可在不同的操作系统平台上运行。Java之所以能平台无关,主要是依靠Java虚拟机JVM来实现的。Java编译器将Java源代码文件编译后生成字节码文件一种与操作系统无关的二进制文件。字节码文件通过Java虚拟机JVM里的类加载器加载后,经过字节码校验,由解释器解释成当前电脑的操作系统能够识别的目标代码并最终运行。以下图展示了Java程序从编译到最后运行的完整过程。5)、 分布式分布式包括数据分布和操作分布,而Java支持客户机/效劳器计算模式,因此也支持这两种分布式。6)、 多线程Java在两方面支持多线程。一方面,Java环
5、境本身就是多线程的。假设干个系统线程运行负责必要的无用单元回收,系统维护等系统级操作;另一方面,Java语言内置多线程控制,可以大大简化多线程应用程序开发。如果操作系统本身不支持多线程,Java的多线程特性可能就表现不出来。三、综合编程题1、 请编写一个简单的Java程序能够输出“这是我的第一个Java程序。注意为程序添加适宜的注释和文档注释。/* * 第一个java程序 */public class Demo /* * main方法,程序的起点 */public static void main (String args) /向控制台输出 System.out.println (这是我的第一
6、个Java程序); 第二章 Java语法根底一、选择题1. 下面哪个单词是Java语言的关键字 B ?A. c2 c X. # f% W3 O9 $ 7 cDoubleB. thisC. stringD. bool2. 下面属于Java关键字的是 D 。A. NULLB. IFC. Do D. goto3. 在启动Java应用程序时可以通过main( )方法一次性地传递多个参数。如果传递的参数有多个,可以用空格将这些参数分割;如果某一个参数本身包含空格,可以使用 B 把整个参数引起来。A. 单引号 B. 双引号4. 下面哪个是Java语言中正确的标识符 BD 。A. 5xB. $xC. abc
7、 D. 5. Java语言中,以下标识符错误的选项是 D 。A. _* A, / A |% labcB. abcC. ABC D. 5abc6. 在Java中,整型常量不可以是 A 。A. ! r; * z& V D0 T0 ) _doubleB. LongC. int D. byte 7. 在Java中,不属于整数常量的是 D 。A. : n h: R- C+ D100B. 100LC. 0x100A D. 6.0f 8. 下面哪个语句能定义一个字符变量chr B 。A. char chr=abcd; B. char chr=uabcd; C. char chr=abcd; D. char
8、chr=uabcd; 9. 下面哪个是对字符串s1的不正确定义 CD 。A. String s1=abcd; B. String s1; C. 2 V2 X2 U0 F4 * x) String s1=abcd0; D. String s1=abcd;10. 下面哪个X围是char型的取值X围 C 。A. -256 255 B. - (215) (215)-1 C. u0000 uffff D. 03276711. 下面哪条语句不能定义一个float型的变量f1 ABD 。A. - y c! B& Q$ ) m W- pfloat f1= 3.1415E10 B. float f1=3.14
9、C. float f1=3.1415F D. f1=3.14F12. 以下运算结果为float的是 C 。 A. 100/10 B. 100*10 C. 100.0+10D. 100-1013. 数组中可以包含什么类型的元素 D 。A. int型 B. string型 C. 数组 D. 以上都可以14. Java中定义数组名为xyz,下面哪项可以得到数组元素的个数 B 。A. xyz.length( ) B. xyz.length C. len(xyz) D. ubound(xyz) 15. 下面哪条语句定义了3个元素的数组 A 。A. int a=20,30,40; B. int a =ne
10、w int(3); C. int 3 array; D. int arr;二、简答题1、 Java有哪些根本的数据类型?写出这些根本数据类型所占用的最大空间用字节描述。1数字型 (number),具体又分为:a.整型 (integers),整型又包括:字节整数 (byte, 8 bits)短整数 (short, 16 bits)整数 (int, 32 bits)长整数 (long, 64 bits)b.实型 (real numbers),具体又分为:单精度float, 32 bits双精度double, 64 bits2字符型 (char, 16-bit Unicode字符)3布尔型 (boo
11、lean)。2、 说明Java字符编码的类型与特点。Java字符编码的类型为Unicode,具有以下特点:1Unicode是16比特的字符编码,其支持当前世界上绝大多数的语言;2Unicode给每个字符提供了一个唯一的编码表示,不管是什么平台、程序或语言;3Windows系统(Windows 2000版本)、Java、XML、LDAP等已支持Unicode;4Unicode实现了ISO/IEC 10646标准;3、 写出Java中六个常用的转义字符。b 退格t 制表符n 换行 (Newline) r 回车 (Carriage return) 单引号4、 下面的几个标示符哪些是正确的,哪些是错误
12、的,如果是错误的,请说明原因。MyClass, _isHis, 3JavaProgram, _$asdf, Java-Visual-MachineMyClass:正确,符合标识符的组成规那么。_isHis:正确,符合标识符的组成规那么。3JavaProgram:错误,因为第1个符号不能为数字。 _$asdf:正确,符合标识符的组成规那么。Java-Visual-Machine:错误,标识符不能为保存字。5、 说出常量与变量的定义并举例说明。常量是指程序执行过程中,值保持不变的量,类型划分如下:整型常量实型常量布尔型常量字符型常量字符串常量如整型常量:起始最大整数(正)最大长整数(正)举例十进制
13、0,19214748364707L23, +567,-12,0,1234八进制0777777L034,0175,-0777L十六进制0x0x7FFFFFFF0x7FFFFFFFFFFFFFFFL0xFF, 0x45L变量是指在程序执行过程中,值可以改变的量,类型划分为:整型变量、实型变量、字符型变量、字符串变量、布尔变量等。如:int x=2,就定义了一个整型变量x并且赋值为2。6、 什么是强制类型转换?并说明其运用场合。显型类型转换是强制类型转换,它是一种窄化转换 (narrowing conversion),如:double a = 1.5;float b = a;System.out.p
14、rintln(b= + b);编译: possible loss of precision数据精度丧失,数据丧失。强制类型转换一般运用在二元运算符的二个操作数类型不同表达式值的类型与变量的类型不同7、 描述Java程序的构成。如何判断Java程序的主类?下面的程序有哪些错误并改正,该程序的源代码应当保存为什么名字的文件?Public class MyClassPublic static void main()System.out.printIn(“my name is );System.out.printIn(“the end!);Java程序的主类中包含main(),而其它类中没有;该程序的
15、源代码应当保存为MyClass.java。另外该程序中包含以下的错误:(1) Public的第一个字符应当小写;(2) 定界符“应当改为;(3) printIn应该为println(4) System.out.printIn(“the end!); 代码应放在方法中8、 构造化程序设计有哪三种根本流程?分别对应Java中的那些语句?构造化程序设计有下面三种根本流程:顺序构造语句,条件选择语句,循环控制语句,跳转/转向语句。条件选择语句对应Java中的if,if-else,嵌套的if-else,条件运算符,switch-case。循环控制语句对应Java中的for,while,do-while语
16、句。跳转/转向语句对应Java中的contonue,break,return语句。9、 在一个循环中使用break,continue,return的差异。break:跳出(中止)循环continue:完毕本次循环return:方法返回10、 数组的定义,特点与分类。如何进展数组的初始化?数组的定义:数组是一组同类型的变量或对象的集合。数组的特点:数组的类型可以是根本类型,或类和接口;数组中每个元素的类型一样;引用数组元素通过数组名下标;数组下标(数组的索引)从0开场。数组是一种特殊的对象(Object),可以定义类型 (声明);创立数组 (分配内存空间) ;释放 (Java虚拟机完成)。数组分
17、类:一维数组、多维数组。第三章面向对象的实现一、 选择题1. 在Java中,用package说明一个包时,该包的层次构造必须是 B 。A. 与文件的构造一样 B. 与文件的目录层次一样C. 与文件的类型一样 D. 与文件大小一样2. 以下构造方法的调用方式中,正确的选项是 C 。A. 按照一般方法调用B. 由用户直接调用C. 可通过new自动调用D. 被系统调用3. int 型public成员变量MAX_LENGTH,该值保持为常数100,那么定义这个变量的语句是 D 。A. public int MAX_LENGTH=100 B. final int MAX_LENGTH=100C. pub
18、lic const int MAX_LENGTH=100D. public final int MAX_LENGTH=1004. 在Java中,以下表达不正确的选项是 B A. 构造方法名与类名一样。B. 构造方法不是用来完成初始化的。C. 构造方法由 new 操作调用,而不能被用户直接调用。D. 构造方法没有返回类型。5. 在Java中,下面的表达哪个是不正确的? D A. 类的静态方法可以在该类的对象被创立前调用B. 类的静态方法不能访问该类的非静态方法C. abstract 修饰符可以出现在类或方法的前面,但不能出现在变量之前D. final 修饰符可以出现在类或变量之前,但不能出现在方
19、法之前6. 在Java里,以下选项 D 不是实现面向对象思想的机制。A. 封装B. 继承C. 多态D. 数据类型转换7. 类Worker是类Person的子类,Worker构造方法中有一句super( );,该语句是什么意思? CA. 调用类Worker中定义的super( )方法B. 调用类Person中定义的super()方法C. 调用类Person的构造函数D. 语法错误8. 给定Java程序,如下:编译运行Test.java,结果是 C 。public class Testprivate static final int counter=10;public static void ma
20、in(String args) System.out.println(counter+);A.10B.11C.编译错误D.运行时出现异常9. 给定如下Java代码,编译时会在 D 出现错误。只选择一项 class Parent class Child extends Parentpublic static void main(String args)Parent p1 = new Child( ); /第一行Parent p2 = new Parent( ); /第二行Child c1 = new Child( ); /第三行Child c2 = new Parent( ); /第四行A. 第
21、一行B. 第二行C. 第三行 D. 第四行10. 在Java中,某类方法使用以下 BC 访问修饰符修饰后,可以被其的子类访问。A. privateB. protectedC. publicD. friendly11. 在Java 语言中,如果你有下面的类定义:abstract class Shapeabstract void draw();class Square extends Shape以下描述正确的选项是 B A. 一切成功编译B. Shape可以编译,Square不能编译C. Square可以编译,Shape不能编译D. Square,Shape都不能编译12. 分析以下Java代码:
22、class Apublic static void main(String args)method( );static void method( )System.out.println(Hello);System.exit(0);System.out.println(good-bye);编译运行后,输出结果是( A )。A. HelloB. good-byeC. Hello后面是good-byeD. 代码不能编译13. 下表是final修饰符与变量、方法、类等一起作用的结果的对应表,但是对应关系存在错误,请选择正确的对应关系。 C 概念作用 1变量 A 不能再产生子类 2方法 B 一旦赋值,就
23、不能更改 3类 C不能在子类中覆盖A. 1-A2-B3-CB. 1-C 2-A3-BC. 1-B2-C3-AD. 1-C 2-B3-A14. 有以下程序:public class ConstOver public ConstOver (int x, int y, int z) 下面哪个方法重载了上面的ConstOver构造方法? B A. protected int ConstOver ( ) B. private ConstOver (int z, int y, byte x) C. public object ConstOver (int x, int y, int z) D. publi
24、c void ConstOver (byte x, byte y, byte z) 15. 有以下程序:class BaseClass private float x = 1.0f ;public float getVar() ( return x;)class Subclass extends BaseClass private float x = 2.0f;/ insert code here下面哪个方法加到程序中的“/insert code here位置是有效的重定义父类的方法。 B A. protected float getVar ( ) return x;B. public flo
25、at getVar( ) return x;C. protected float double getVar( ) return x;D. public float getVar(float f) return f;16. 指出以下程序运行的结果 B public class ExampleString str = new String(good); 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
26、.str + and );System.out.print(ex.ch); public void change(String str, char ch )str = test ok;ch0 = g;A. good and abc B. good and gbc C. test ok and abcD. test ok and gbc17. 以下哪些语句关于内存回收的说明是正确的 B A. 程序员必须创立一个线程来释放内存;B. 内存回收程序负责释放无用内存;C. 内存回收程序允许程序员直接释放内存;D. 内存回收程序可以在指定的时间释放内存对象。18. 创立一个名为“MyClass.java
27、的文件,该文件中只有一个可被整个工程中的所有类访问的类,那么该类的正确声明应为: C A. private class MyClass extends Object B. class TestClass extends Object C. public class MyClassD. public class TestClass19. 以下表达中,错误的选项是 ( A )A. 内部类的名称与定义它的类的名称可以一样B. 内部类可用abstract修饰C. 内部类可作为其他类的成员D. 内部类可访问它所在类的成员20. 用于在子类中调用被重写的父类方法的关键字是 ( B )A. thisB. s
28、uperC. ThisD. Super21. 下面程序输出结果是 A public class Delta static boolean foo(char c) System.out.print(c);return true;public static void main( String argv ) int i =0;for ( foo(A); foo(B)&(i2); foo(C)i+ ;foo(D);A. ABDCBDCBB. ABCDABCDC. 编译错误D. 运行时异常22. 以下 B 修饰符可以使在一个类中定义的成员变量只能被同一包中的类访问。A. privateB. 无修饰符C.
29、 publicD. protected 23. 给出以下代码,如何使成员变量m 被方法fun( )直接访问? C class Testprivate int m; public static void fun( ) . A. 将private int m 改为protected int mB. 将private int m 改为 public int mC. 将private int m 改为 static int mD. 将private int m 改为 int m24. 有以下类的说明,那么以下哪个语句是正确的? A public class Testprivate float f =
30、1.0f; int m = 12; static int n = 1; public static void main(String args)Test t = new Test( ); A. t.f;B. this.n;C. Test.m;D. Test.f; 25. 以下代码的执行结果是 A public class Testpublic void aMethod( ) static int i = 0; i+; System.out.println(i);public static void main(String args)Test test = new Test( ); test.a
31、Method( ); A. 编译错误B. 0 C. 1D. 运行成功,但不输出26. 假设特快订单是一种订单,那么特快订单类和订单类的关系是 C A. 使用关系B. 包含关系C. 继承关系D. 无关系27. 以下代码中,将引起一个编译错误的行是 D 1public class Test 2 int m,n; 3 public Test( ) 4 public Test(int a) m=a; 5 public static void main(String args) 6 Test t1,t2; 7 int j, k; 8 j = 0; k = 0; 9 t1 = new Test(); 10
32、 t2 = new Test(j,k); 11 12 A. 第3行B. 第5行C. 第6行D. 第10行28. 以下表达中,错误的选项是 D A. 父类不能替代子类B. 子类能够替代父类C. 子类继承父类D. 父类包含子类二、 程序阅读题1、 写出以下程序的结果:public class Test private static void printArray(int arr) for(int i=0;i arr.length;i+) System.out.print(arri+,); System.out.println(“n); private static void changeValue
33、(int value) value*=2; private static void changeValue(int arr) for(int i=0;i10) throw Exception(something wrong!);B. if (i10) throw Exception e (something wrong!);C. if (i10) throw new Exception(something wrong!);D. if (i10) throw new Exception e (something wrong!);5. 分析以下Java代码:class Apublic static
34、 void main(String args)method( ); static void method( )trySystem.out.println(Hello);System.exit(0);finallySystem.out.println(good-bye); 编译运行后,输出结果是 A A. HelloB. good-byeC. HelloD. 代码不能编译good-bye6. 关于捕获错误的语法try-catch-finally的以下描述正确的选项是 C 。A. try必须和catch搭配使用B. try可以单独使用C. try-finally可以搭配使用D. 在try块后如果定
35、义了finally,那么不能再定义catch块7. 在Java 中,假定有一个包含引起异常不是一个RuntimeException的代码的方法,用什么方式告诉方法的调用者要捕获该异常。 B A. throw ExceptionB. throws ExceptionC. new ExceptionD. 不用特别指定8. 考虑以下JAVA代码:class Apublic static void main(String args)trySystem.out.println(Hello,World!); 这段代码错误的原因是 A 。A. 没有catch和finally块B. 没有抛出异常的代码不能出现在try代码块内C. 如果没有catch块而使用try,main( )会总是抛出异常D. class A没有throws IOException9. 考虑一下代码,编译运行之后,会 D String s=null;System.out.println(s.charAt(0);A. 输出nullB. 没有输出C. 编译错误D. 编译成功,但是运行时报Null