### Java语言程序设计(第2版)沈泽刚_秦玉平课后答案解析
#### 知识点一:Java基础知识
1. **main方法**:
- `main`是特殊的方法名,用来标识程序的入口点,但它并不是Java中的关键字。
- `implement`应改为`implements`,用来表示类实现接口。
2. **标识符规范**:
- 标识符不能以数字开头,例如`C123`是非法的。
- 标识符不能包含非法字符,如破折号`-`等。
3. **数据类型与常量**:
- 字符应该使用单引号括起来,如`'a'`。
- 整型常量默认为`int`类型,若想表示`float`类型,则需要在数值后添加`f`或`F`。
- 数值范围超出`byte`的最大值127时,将被提升为`int`类型。
- 科学计数法默认表示`double`类型。
4. **数据存储**:
- `byte`类型占据1个字节,其值域为-128至127。
- `short`类型占据2个字节,其值域为-32768至32767。
5. **位操作**:
- 补码表示法用于计算机中表示整数,负数的补码可通过取反加1获得。
- 按位取反操作会将二进制中的每一位0变为1,1变为0。
#### 知识点二:控制结构与流程控制
1. **switch语句**:
- 支持的数据类型包括`byte`、`short`、`char`、`int`、`enum`以及`String`(从Java 7开始)。
- 枚举类型中的元素实际上是以`int`形式存储的,因此可以在`switch`语句中使用。
2. **循环控制**:
- `break`语句可以用来跳出当前循环,如果是嵌套循环,则只跳出最近一层循环。
- 循环中的条件表达式不会对循环的执行次数产生影响,除非它们影响到了循环变量。
3. **条件表达式**:
- 三目运算符(`? :`)可以实现简单的条件判断。
- 当参与运算的变量类型不同时,会进行自动类型转换,以适应运算需求。
#### 知识点三:面向对象编程
1. **方法重载**:
- 方法重载是指在同一类中多个具有相同方法名但参数列表不同的方法。
- 变更方法的可见性(如从`public`变为`protected`)不构成方法重载。
2. **构造方法**:
- 构造方法没有返回类型,`void`也不适用于构造方法。
- 构造方法主要用于初始化对象的状态。
3. **继承与多态**:
- 子类实例可以赋值给父类引用,反之则不行。
- 构造方法中,默认情况下会调用父类的无参构造函数;如果父类没有无参构造函数,则必须显式地调用其他构造函数。
- 方法重写时,子类方法的返回类型必须与父类相同或者可以隐式转换为父类类型。
#### 知识点四:异常处理
1. **异常类型**:
- 运行时异常包括除数为0、空指针异常等。
- 数组越界异常通常发生在试图访问数组不存在的索引位置时。
2. **异常处理机制**:
- 使用`try-catch-finally`结构来捕获并处理异常。
- 如果方法可能抛出异常但不打算处理,可以通过`throws`声明抛出该异常。
3. **文件I/O**:
- `File`类和`Files`工具类用于文件操作。
- 文件路径不存在时,使用`CREATE`选项可以创建新的文件。
#### 知识点五:集合框架
1. **集合类型**:
- `Set`不允许重复元素,并且没有固定的顺序。
- `TreeSet`是一个有序的集合,元素按照自然排序或自定义比较器排序。
2. **泛型**:
- 使用泛型时,如果不指定类型参数,编译器会发出警告,但不会导致编译失败。
#### 知识点六:内部类与匿名类
1. **内部类**:
- 在其他类中实例化内部类时,需要显式地引用外部类。
- 静态上下文中不能直接访问非静态成员。
2. **匿名类**:
- 匿名类没有名字,但仍然遵循类的一般规则。
- 匿名类实例可以直接创建,无需通过显式的构造方法。
#### 知识点七:多线程
1. **线程创建与启动**:
- 调用线程的`run()`方法只是执行方法体内的代码,而不会启动一个新的线程。
- 实现`Runnable`接口或继承`Thread`类是创建线程的两种常用方式。
- 创建线程时,需要重写`run()`方法来定义线程的行为。
以上是对《Java语言程序设计》第二版中部分课后习题的选择题答案及解析的总结,涵盖了Java基础语法、面向对象编程、异常处理、集合框架等多个方面的核心知识点。通过对这些知识点的学习,可以帮助读者更好地理解和掌握Java编程的基本概念和技术细节。