附录 2:习题答案 第 1 章:Java 简介 —— 自我检测(答案) 1、填空题 1、 Java源程序文件的后缀是 ,Java字节码文件的后缀名称是 。 2、 Java程序实现可移值性,依靠的是 。 3、 Java语言的三个分支是: 、 、 。 4、 Java程序由 组成,如果Java使用 声明类,则文件名称必须与类名称一致。 5、 Java执行是从 方法开始执行的,此方法的完整定义是 。 6、 Java类名的每个单词的首字母通常要求 。 2、选择题 1、 推出Java语言的公司 。 A、 IBM B、 SUN C、 Apple 2、 下面的那个环境变量java解释时所需要的 。 A、 path B、 classpath C、 JAVA_HOME D、 Microsoft D、TEMP 3、判断题 1、 Java 语言属于编译型的开发语言。 2、 Java Application 程序不是由 main()方法开始执行的。 () () 4、简答题 1、 简述 Java 实现可移值性的基本原理。 答 2、 简述 Java 语言的三个程序分支。 答: 3、 简述 Java 中 path 及 classpath 的作用。 答: 第(1)页 共(39)页 4、 简述 Java 语言的主要特点。 答: 5、 详细阐述 Java 中使用 public class 或 class 声明一个类的区别及注意事项。 答: 5、编程题 1、 在屏幕上输出:“我喜欢学习 Java”的信息。 答案: 2、 在屏幕上打印出以下的图形: ************************************* ********* Java 程序设计 ********* ************************************* 答案: 第 2 章 简单 Java 程序 —— 自我检测(答案) 1、填空题 1、 Java中的标识符组成原则: 。 2、 关键字是在JDK 1.4 时加入的, 关键字是在JDK 1.5 时加入的。 3、 列举出已经知道的 5 个关键字: 。 第(2)页 共(39)页 4、 Java注释分为以下三种: 、 、 。 5、 Java中使用 关键字,可以定义一个整型数据。 6、 在一个Java源文件中定义了 3 个类和 15 个方法,编译该Java源文件时会产生 个字节码文件,其扩展名 是 。 7、 布尔型数据类型的关键字是 ,有 和 两种取值。 8、 整型数可以采用 、 、 和 四种类型表示。 9、 根据占用内存长度的不同将浮点型分为 和 两种。 10、 Java程序结构分为: 、 、 三种。 11、 逻辑表达式:true&&false&&true的结果是 。 12、 逻辑表达式:!true||false的结果是 。 13、 在方法中可以使用 return 语句来结束方法的执行。 14、 方法中的 void 关键字用来表示方法不返回任何值。 2、选择题 1、 下面那些标识符是正确的 D 。 A、 class B、 hello world C、 123$temp D、 Demo 2、 下面那些关键字是Java中未使用到的关键字 A、B (多选)。 A、 const B、 goto C、 int D、 assert 3、 public static void main方法的参数描述是: A 。 A、 String args[] B、 int[] args C、 Strings args[] D、 String args 4、 下面说法正确的是 C 。 A、 Java 程序的源文件名称与主类(puublic class)的名称相同,后缀可以是.java 或.txt 等。 B、 JDK 的编译命令是 java。 C、 一个 java 源文件编译后可能产生多个 class 文件。 D、 在命令行编译好的字节码文件,只需在命令行直接键入程序名即可运行该程序。 5、 下面说法不正确的是 A 。 A、 Java 语言是面向对象的、解释执行的网络编程语言 B、 Java 语言具有可移植性,是与平台无关的编程语言。 C、 Java 语言可对内存垃圾自动收集。 D、 Java 语言执行时需要 Java 的运行环境。 6、 下面 A 不是Java的关键字。 A、 integer B、 double C、 float D、 char 7、 在Java中,字节数据类型的关键字和默认值是 A 。 A、 byte 和 0 B、 byte 和 1 C、 boolean 和 true D、 boolean 和 false 8、 3.15E2 表示的数据是 C 。 A、 3.15 × 2 B、 3.15 × 10-2 C、 3.15 × 102 D、 0.315 × 10-2 9、 程序System.out.println("1 + 1 = " + 1 + 1) ;的输出结果是 C 。 A、 1 B、 1 + 1 = 2 C、 1 + 1 = 11 D、 2 10、 程序System.out.println(10 / 3) ;的输出结果是 B 。 A、 1 B、 3 C、 3.3 D、 3.33333 11、 执行下面的语句后,a、b、c的值分别是 C 。 int a = 2 ; int b = (a++) * 3 ; int c = (++a) * 3 ; 第(3)页 共(39)页 A、 2、6、6 B、 4、9、9 C、 4、6、12 D、 3、9、9 12、 以下的 B 能正确表示Java语言中的一个整型常量。 A、 35.d B、 -20 C、 1,234 D、 "123" 13、 下面的数据类型 D 是float型 A、 33.8 B、 129 C、 89L D、 8.6F 14、 下列关于自动类型转换的说法中,正确的一个是 B 。 A、 int 类型数据可以自动转换为 char 类型数据 B、 char 类型数据可以被自动转换为 int 类型数据 C、 boolean 类型数据不可以做自动类型转换,但是可以做强制转换 D、 long 类型数据可以被自动转换为 short 类型数据 15、 一个方法在定义过程中又调用自身,这种方法称为 B 。 A、 构造方法 B、 递归方法 C、 成员方法 D、 抽象方法 3、判断题 1、 变量的内容可以修改,常量的内容不可修改。 2、 goto 是 Java 中未使用到的关键字。 3、 enum 关键字是在 JDK 1.4 版本中增加的。 4、 使用 public class 定义的类,文件名称可以与类名称不一致。 5、 主方法编写:public void main(String arg)。 6、 字符$不能作 Java 标识符的第一个字符。 7、 System.out.println()输出后是不加换行的,而 System.out.print()输出后是加换行的。 8、 使用 break 语句可以跳出一次循环。 9、 byte 的取值范围是:0~255。 10、 int 和 double 进行加法操作,int 会自动转换为 double 类型。 11、 使用“&”操作时,如果第一个条件是 false,则后续的条件都不再判断。 12、 使用“&&”操作时,如果第一个条件是 false,则后续的条件都不再判断。 13、 使用“|”操作时,如果第一个条件是 true,则后续的条件都不再判断。 14、 使用“||”操作时,如果第一个条件是 true,则后续的条件都不再判断。 15、 定义多个同名方法时,可以依靠返回值区别同名方法。 (√ ) (√ ) (× ) (× ) (× ) (× ) (× ) (× ) (× ) (× ) (× ) (√ ) (× ) (√ ) (× ) 4、简答题 1、 请解释常量与变量的区别? 答: 常量就是一个固定的数值。是不可改变的,例如:数字 1、2 就是一个整型的常量。 变量是利用声明的方式,将内存中的某个内存块保留下来以供程序使用。可以声明的数据类型为整型、字符型、浮 点型或是其他数据类型,作为变量的保存之用。变量在程序语言中扮演了最基本的角色。变量可以用来存放数据,而使用 变量之前必须先声明它的数据类型。 2、 解释方法重载的概念,并举例说明。 答: 方法重载指的是多个方法的方法名称相同,但是方法中的参数类型及个数不同。 代码说明: public static int add(int x, int y) { return x + y; } 第(4)页 共(39)页 public static int add(int x, int y, int z) { return x + y + z; } public static double add(double x, double y) { return x + y; } 5、编程题 1、 打印出 100~1000 范围内的所有 “水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。 例如:153 是一个“水仙花数”,因为 153=1 的三次方+5 的三次方+3 的三次方。 public class TestDemo { public static void main(String[] args) { int i, j, k; for (int x = 100; x < 1000; x++) { i = x / 100; // 计算百位数字 j = (x / 10) % 10; // 计算十位数字 k = x % 10; // 计算个位数字 if (x == i * i * i + j * j * j + k * k * k) { System.out.print(x + "、"); } } } } 程序运行结果: 153、370、371、407、 2、 通过代码完成两个整数内容的交换。 实现一:引用第三方变量 实现二:利用数学计算完成 public class TestDemo { public class TestDemo { public static void main(String[] args) { public static void main(String[] args) { int x = 10; int x = 10; int y = 20; int y = 20; int temp = x; x += y ; x = y; y = x - y; y = temp; x=x-y; System.out.println("x = " + x); System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("y = " + y); } } } } 程序运行结果: x = 20 y = 10 3、 判断某数能否被 3,5,7 同时整除。 public class TestDemo { public static void main(String[] args) { int data = 105; 第(5)页 共(39)页 if (data % 3 == 0 && data % 5 == 0 && data % 7 == 0) { System.out.println(data + "可以同时被3、5、7整除。"); } else { System.out.println(data + "不可以同时被3、5、7整除。"); } } } 程序运行结果: 105可以同时被3、5、7整除。 4、 编写程序,分别利用 while 循环、do…while 循环和 for 循环求出 100~200 的累加和。 实现一:使用 while 循环 public class TestDemo { public static void main(String[] args) { int sum = 0; int x = 100; while (x <= 200) { sum += x; x++; } System.out.println("累加结果:" + sum); } } 实现二:使用do…while循环 public class TestDemo { public static void main(String[] args) { int sum = 0; int x = 100; do { sum += x; x++; } while (x <= 200); System.out.println("累加结果:" + sum); } } 实现三:使用for循环 public class TestDemo { public static void main(String[] args) { int sum = 0; for (int x = 100; x <= 200; x++) { sum += x; } System.out.println("累加结果:" + sum); } } 第(6)页 共(39)页 第 3 章、面向对象 —— 自我检测(答案) 1、填空题 1、 面向对象有那三大特征: 封装 、 继承 、 多态 。 2、 类由 属性 和 方法 组成。 3、 new 运算符的作用是根据对象的类型分配内存空间。当对象拥有内存空间时,会自动调用类中的 构造方法为 对象 实例化 。 4、 使用 private 修饰的类成员称为私有成员。私有成员只能在 类 中使用。 5、 构造方法的名称与 类名称 相同。 6、 private 关键字可以让类中的属性和方法对外部不可见。 7、 this关键字可以调用本类中的 属性 、 方法 、 构造方法 ,调用 构造方法 时必须放在 构造方 法 的首行。 8、 Java中通过 extends 关键字实现继承。 9、 一个类只能继承 一 个父类,但能实现 多个 接口。 10、 Object 类是所有类的父类,该类中判断两个对象是否相等的方法是 public boolean equals(Object oth) ,取 得对象完整信息的方法是 public String toString() 。 11、 Integer类是对 int 基本数据类型的封装。Float类是对 float 基本数据类型的封装。Double类是对 double基 本数据类型的封装。字符类Character是对 char 基本数据类型的封装。 12、 当子类中定义的方法与父类方法同名且参数类型及个数、返回值类型相同时,称子类方法 覆写 父类方法,子 类默认使用 本类已经覆写 方法,使用父类的同名方法,必须使用 super 关键字说明。 13、 当子类定义的成员变量与父类的成员变量同名时,称子类 覆盖 父类的成员变量,子类默认使用 本类 属性。 使用父类的同名成员变量,必须用 super 关键字说明。 14、 如果子类定义了构造方法,在创建子类对象时首先默认调用 父类无参构造方法 ,然后再本类的构造方法。 15、 在Java中数组排序的方法是 java.util.Arrays.sort() 。 2、选择题 1、 如果希望方法直接通过类名称访问,在定义时要使用的修饰符是 A 。 A、 static B、 final C、 abstract D、 this 2、 如果类中没有定义构造方法,系统会提供一个默认的构造方法。