20155328 2016-2017-2 《Java程序设计》第7周学习总结

教材学习内容总结

  • 时区

    • Date与DateFormat

      • Date只用来获取epoch毫秒数

      • DateFormat来格式化成人类理解的年月日时分秒

    • Calendar: 时间的运算

      • getInstance(): 默认取得GregorianCalendar(Calendar的子类)实例。

      • get():取得年月日等时期时间字段(指定字段枚举常数:Calendar.YEAR, ~.MONTH, ~.DATE)注意:get(Calendar.MONTH比正常值小1)

      • add():正数为加,负数为减;eg:calendar.add(Calendar.YEAR,-2);

      • before():比较是否在某个日期前;after():比较是否在某个日期后

      • getTimeZone("ID字符串"):java.util.TimeZone的方法

教材学习中的问题和解决过程

  • 问题1:正在学教材432页How Old程序的时候狄维佳同学回来了,告诉我可以让输出结果变成四百多岁,就将程序最后的L去掉了,输出结果变成了四百多。

  • 解决方案:最后的L是强制类型转换,输出的实际结果已经超过了int范围,在二进制中只保留其最后32位。

  • 问题2:对clone的用法不是很理解。

  • 解决方案:在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能 会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的。在 Java语言中,用简单的赋值语句是不能满足这种需求的。要满足这种需求虽然有很多途径,但实现clone()方法是其中最简单,也是最高效的手段。

代码调试中的问题和解决过程

  • 问题1:在拷贝书上代码运行时,出现了下图这样的标红错误:

  • 问题1解决方案:发现是没有撰写dateTimeInstanceDemo,写了就好了。

代码托管

(statistics.sh脚本的运行结果截图)

上周考试错题总结

1
(多选题|1分)
下面哪条命令可以把 f1.txt 复制为 f2.txt ?
:
A .
cp f1.txt f2.txt

B .
copy f1.txt f2.txt

C .
cat f1.txt > f2.tx

D .
cp f1.txt | f2.tx

E .
copy f1.txt | f2.tx

copy是Windows下的命令。cat f1.txt > f2.tx 通过输出重定向实现了复制。

6
(多选题|1分)
如果有以下代码段:
Thread thread = new Thread(new ________________() {
public void run() {...}
});

空白部分指定哪些类型可以通过编译?
:
A .
Runnable
B .
Thread
C .
Future
D .
Executor

查API文档,Thread 也实现了 Runnable 接口

10
(多选题|1分)
Given an instance of a Stream, s, and a Collection, c, which are valid ways of creating a parallel stream? (Choose all that apply.)
给定一个Stream的实例s, 一个Collection的实例c, 下面哪些选项可以创建一个并行流?

:
A .
new ParallelStream(s)

B .
c.parallel()

C .
s.parallelStream()

D .
c.parallelStream()

E .
new ParallelStream(c)

F .
s.parallel()

D、F没有阶级parallelstream,所以A和E是不正确的。方法定义在流类从现有流创建一个并行流parallel();因此F是正确的,C是不正确的。方法中定义的类创建从一个集合的并行流parallelstream();因此D是正确的,B是不正确的。

15.(单选题|1分)
Assuming / is the root directory, which of the following are true statements? (Choose all that apply.)

:
A .
/home/parrot is an absolute path.

B .
/home/parrot is a directory.

C .
/home/parrot is a relative path.

D .
The path pointed to from a File object must exist.

E .
The parent of the path pointed to by a File object must exist

根目录开始的路径是绝对路径,所以A是正确的,C是错误的。B是不正确的,因为路径可能是文件系统中的文件或目录。文件对象可以指向文件系统中不存在的路径,所以D和E是错误的。

点评过的同学博客和代码

其他(感悟、思考等,可选)

这周学习的内容少了很多,再加上实验,感觉自己提升了一些学习效率,也更加注重了思考。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 8/8 1/1 20/20
第二周 164/172 1/2 25/45
第三周 248/420 1/3 25/70
第四周 465/885 1/4 25/95
第五周 390/1275 1/5 15/110
第六周 626/1901 1/6 24/134
第七周 269/2170 2/8 20/154

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:24小时

  • 实际学习时间:20小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料