2020年春季期末考试题1
需积分: 0 62 浏览量
更新于2022-08-03
收藏 596KB PDF 举报
【知识点详解】
1. Java assert语句:在Java中,`assert`关键字用于断言某个条件是否为真,如果条件不满足,程序将抛出AssertionError异常。在给定的试题中,要求使用assert来检查输入字符串`credit`是否符合预设条件。合法的输入应为1到10之间的正整数,或者是正整数后面带有小数点0.5。因此,可以编写如下的assert语句:
```java
public void method(String credit) {
assert (credit.matches("[1-9][0-9]?|10") || (credit.matches("\\d+\\.5") && credit.endsWith(".5")));
//...//此处开始为method所完成的常规逻辑,无需填写
}
```
这段代码首先检查字符串是否为1到10的正整数,然后检查是否为形如X.5且X在1到9之间的数。
2. Java集合框架:在Poem类中,lines属性使用了ArrayList来存储诗的文本行。ArrayList是Java集合框架中的一个动态数组,提供了方便的添加、删除和访问元素的方法。在`addOneLine()`方法中,使用`lines.add(newLine)`向列表中添加一行;而在`addPrefix()`方法中,通过遍历并修改列表来添加前缀。
3. 对象的创建与复制:Poem类的构造函数用于初始化对象,`plagiarize()`方法返回一个新的Poem对象,其中的author属性被替换为新的作者,而其他属性保持不变。这是一种浅复制,因为Poem对象引用的lines列表并未复制,而是共享同一份引用。这意味着对原对象lines的修改会影响到复制的对象。
4. 表示泄露(representation exposure):在Poem类中,`lines`属性是私有的,但其类型是ArrayList,这可能导致表示泄露,因为ArrayList提供了修改内部结构的公开方法,如`remove()`、`add()`等。为了防止直接修改lines,可以将其改为只读的`Collections.unmodifiableList(lines)`,或者提供一个受保护的getter方法返回一个不可变视图。
5. Snapshot Diagram:这是一种用来表示程序运行时内存状态的图形表示。在给定的客户端程序中,创建了一个Poem对象p,并添加了一行文本。之后,调用`getSomeLines(1, 1)`获取并返回第一行。Snapshot Diagram应展示对象p的状态,包括其属性title、author、lines和date的值,以及lines列表的内容。此外,变量some也应该显示,它包含了从p获取的一行文本。
6. 数据结构操作:在`addPrefix()`方法中,使用了`concat()`方法将前缀与每一行的文本连接,然后移除原来的行并插入新行。这种方式虽然实现了功能,但效率较低,因为它涉及了多次列表操作。可以考虑在创建新行后直接添加到列表,而不是先删除再添加,以减少不必要的操作。
7. 类设计:Poem类具有四个属性,其中title、author、date为公有属性,可以直接访问,而lines是私有属性。这种设计允许直接修改title和author,可能不符合封装的原则,建议将它们也设为私有并提供getter和setter方法。
8. 方法签名:在Poem类中,所有方法都有明确的职责,如`addOneLine()`用于添加一行,`plagiarize()`用于创建新诗,`addPrefix()`用于添加前缀。良好的方法签名有助于理解代码功能。
9. 参数校验:Poem类的方法`getSomeLines()`中,参数start和end没有进行边界检查,可能导致ArrayIndexOutOfBoundsException。在实际开发中,应当确保参数在有效范围内。
10. Java日期处理:Date对象用于表示诗的发表日期,但没有指定日期格式。在实际应用中,通常会使用`SimpleDateFormat`或`LocalDateTime`等来处理日期和时间的格式化和解析。
稚气筱筱
- 粉丝: 19
- 资源: 320
最新资源
- 概率数据关联滤波器(PDAF)学习
- 二级A2生物安全柜sw18可编辑全套技术资料100%好用.zip
- 面向对象程序设计实践(C++)物流管理系统设计与实现报告论文(参考学习).pdf
- 快速开发平台 WebBuilder 10.5 all for Linux
- 基于偏置电压注入的载波PWM仿真模型 控制架构为正常的双闭环永磁同步电机系统 采用基于偏置电压注入的载波PWM策略,实现与SVPWM完全等效的调制效果,一方面可以减少控制算法占用的内存,另一方面可
- Verilog HDL示例代码之05-乘法器
- 粉末搅拌机sw18可编辑全套技术资料100%好用.zip
- 混合动力汽车simulink模型 ①基于模糊规则的控制策略; ②整车similink模型中包含工况输入模型、驾驶员模型、发动机模型、电机模型、制动能量回收模型、转矩分配模型、运行模式切模型、档位切模型
- Verilog HDL示例代码之06-异步复位同步释放
- 基于扩展卡尔曼滤波EKF的车辆状态估计 估计的状态包括: 1. 车辆的横纵向位置 2.车辆行驶轨迹、横摆角、 3. 车速、加速度、横摆角速度 4. 相应的估计偏差 内容附带:Simulink模型与M
- 高度提升设备sw18全套技术资料100%好用.zip
- Verilog HDL示例代码之07-分频
- 3D视觉相机:适配多场景的智能工业解决方案
- Verilog HDL示例代码之08-语法语句
- 基于扩张状态观测器的自抗扰控制ADRC仿真模型 ①跟踪微分器TD:为系统输入安排过渡过程,得到光滑的输入信号以及输入信号的微分信号 ②非线性状态误差反馈律NLSEF:把跟踪微分器产生的跟踪信号和微分
- Verilog HDL示例代码之09-串并转换