请写出完整的题目答案
时间: 2024-10-07 16:08:26 浏览: 41
### 单选题答案
1. **D)** 运行出错
原因:`p.name` 被设定为私有的,所以无法直接从 `Child` 类外部访问。
2. **A)** 在子类构造方法中使用 `super()` 显示调用父类的构造方法,`super()` 必须写在子类构造方法的第一行,否则编译不通过。
解释:`super()` 和 `this()` 都需要放在构造方法的第一行来调用父类构造器或者当前类其他构造器,且两者不可同时出现于同一个构造函数中,也不能用于静态上下文。
3. **D)** 封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性。
解释:封装是一种面向对象编程的基本原则,它可以保护对象的状态,并控制其行为以防止非法操作。
4. **A)** Java 中的继承允许一个子类继承多个父类。
解释:Java 不支持多继承,即一个子类只能继承一个父类,但它可以实现多个接口。
5. **D)** 编译有两处错误
解释:`Teacher` 构造函数中 `super();` 应该在第一行,另外 `this.name` 应该改为 `name` 或者先声明 `this` 指向实例。
6. **C)** final 修饰的方法不能被重载。
解释:final 方法不能被重写 (override),但是可以被同名的不同参数列表的方法重载 (overload)。
7. **B)** 构造方法不能重载。
解释:构造方法当然可以有不同的签名来进行重载,这是完全符合规则的。
8. **B)** `protected int getPrice(int page){}`
解释:此方法是对原方法的有效重载,在原有的基础上增加了一个参数。
9. **C)** 有抽象方法的类一定是抽象类。
解释:含有至少一个抽象方法的类必须被声明为抽象类。
10. **D)** 接口不允许多继承。
解释:接口是可以被多重继承的,而类则不行。
11. **C)** 第 4 行错误,没有实现接口的全部方法。
解释:抽象类也需要实现接口所定义的所有方法。
12. **A)** `father`
解释:`getName()` 方法是在 `Father` 类里定义的,所以输出应为 "father"。
13. **D)** `public - protected - default - private`
解释:这是访问级别从宽到严的标准排序方式。
14. **B)** `try`
解释:只有 `try` 可以独立存在,其他都需要与 `try` 结合使用。
15. **C)** 和是:43 finally语句块
解释:无论是否有异常抛出,`finally` 子句都会被执行。
16. **B)** `HashMap` 能够保证其中元素的顺序。
解释:`HashMap` 不保持插入顺序,而如 `LinkedHashMap` 则可以。
17. **D)** `File`
解释:`File` 是用来处理文件相关操作的基础类。
18. **C)** 添加和删除元素时,`ArrayList` 的表现更佳。
解释:实际上,`LinkedList` 对增删操作更快,因为不需要移动大量的数据项。
19. **A)** `LinkedList`
解释:`LinkedList` 实现了基于双向链表的数据结构。
20. **A)** `pst.setString(1, "java");`
解释:预编译语句集参数索引从 1 开始,并且类型匹配。
21. **D)** `private float aMethod(int a, int b, int c) {}`
解释:虽然参数数量和类型不同,但这不符合在同一类中方法重载的要求。
22. **C)** 由于 `String s` 没有初始化,代码不能编译通过。
解释:尝试访问未经初始化的局部变量会导致编译失败。
23. **C)** 输出结果为:value is 9.0
解释:表达式 `(x > 4)` 为假,故取 `9` 的值,由于右边为浮点型,输出也会带有 `.0`。
24. **A)** `x[9]` 为 0
解释:数组新分配后自动初始化为零值。
25. **C)** 行 6 执行,行 4 不执行
解释:字符串常量池中的对象之间比较引用相等,但 `new` 创建的对象则使用 `.equals()` 来检查内容是否一致。
26. **D)** 2 3 3
解释:`c++` 先输出后加一,第二次输出则是自增后的值。
27. **C)** `-1`
解析:循环体中 `a = a - 1` 使 `a` 成为负数,`--c;` 让 `c` 减少至 `-1` 后退出循环。
28. **C)** 打印输出 0
解释:访问接口成员变量时,总是使用接口类型而不是其实例化对象,且 `i` 初始化为 0。
29. **C)** `int[] a = new int[]{1, 2, 3, 4, 5};`
解释:这是一种标准的数组初始化方式。
30. **B)** 10030
解释:`v.i` 最终设置为 30 并打印出来,局部变量 `i` 赋值为 0 也进行了输出。
### SQL语句部分
**1. 创建表格**
```sql
CREATE TABLE vendors (
VID INT PRIMARY KEY,
VNAME VARCHAR(100) NOT NULL,
COUNTRY VARCHAR(50)
);
CREATE TABLE products (
PID INT PRIMARY KEY,
PNAME VARCHAR(100) NOT NULL,
VID INT,
PRICE DECIMAL(10,2),
FOREIGN KEY (VID) REFERENCES vendors(VID)
);
```
**2. 查询旗下产品平均价格大于100的供应商编号**
```sql
SELECT VID FROM products GROUP BY VID HAVING AVG(PRICE) > 100;
```
**3. 查询中国供应商的所有产品信息**
```sql
SELECT * FROM products WHERE VID IN (SELECT VID FROM vendors WHERE COUNTRY = 'China');
```
**4. 查询没有推出任何产品的所有供应商信息**
```sql
SELECT * FROM vendors WHERE VID NOT IN (SELECT DISTINCT VID FROM products);
```
阅读全文