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

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

教材学习内容总结

第十三章 时间与日期

  1. 三种时间:
  • 格林威治标准时间(GMT)的正午是太阳抵达天空最高点之时,因为地球公转轨道为椭圆且速度不一样,本身自转亦缓慢减速中,因此会造成越来越大的时间误差。

  • 世界时(UT)是借由观测远方星体跨过子午线而得,这会比观察太阳准确。但是仍会受地球自转速度影响。

  • 国际原子时(TAI)将秒的国际单位定义为铯原子辐射震动9192631770周耗费的时间。时间从UT的1958年开始同步。

2.Date有两个构造函数可以使用

  • 一个可使用epoch毫秒数构建;

  • 另一个为无自变量构造函数,内部亦是使用System.currentTimeMillis()取得毫秒数,调用getTime()可取得内部保存的epoch毫秒数值。

  1. DateFormat是个抽象类,其操作类是java.text.SimpleDateFormat,你可以直接构建SimpleDateFormat实例,或是使用DateFormat的getDateInstance()、getTimeInstance()、getDateTimeInstance等静态方法,用较简便方式按不同需求取得SimpleDateFormat实例。

  2. 直接构建SimpleDateFormat的好处是,可使用模式字符串自定义格式。

  3. 若想取得默认时区信息,可以使用java.util.TimeZone的getDefault()方法。

  4. 可以使用Instance的静态方法now()取得代表Java。

  5. epoch毫秒数。在取得Instance实例后,可以使用plusSeconds()、plusMills()、plusNanos()、minusSeconds()、minusMills()、minusNanos()来做时间轴上的运算,Instance实例本身不会变动,这些操作都会返回新的Instance实例,代表运算后的瞬时。

  6. LocalDateTime、LocalDate、LocalTime等类名称开头为Local,表示它们都只是对时间的描述,并没有时区信息。

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

  • 问题1:Period与Duration的区别
  • 问题1解决方案:查阅得知:Period是日期差,between()方法只接受LocalDate,不表示比“日”更小的单位,然而Duration是时间差,
    between()可以接受Temporal操作对象,也就是说可以用LocalDate、LocalTime、LocalDateTime来计算
    Duration,不表示比“天”更大的单位。
  • 问题2:p440程序中增强for循环语句含义是什么?为什么这么写?
  • 问题2解决方案:请教搭档后明白是将values()方法取得的结果依次赋给新建的Month类型封装的month对象

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

  • 问题1:在运行调试课本DateDemo.java时,为了方便把类名设置成Date,出现了以下错误:

  • 问题1解决方案:Date类是一个无法直接生成的类,也就是说没有它没有构造器可以直接生成Date类型的对象。后来发现把类名设置成Date相当于直接重置了原本API函数中的Date,所以出现了编译错误。

代码托管

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

上周考试错题总结

  • 错题1
    下面代码中共有()个线程?【C】
public class ThreadTest {
    public static void main(String args[]){
        MyThread myThread =new MyThread();
        Thread t1=new Thread(myThread);
        Thread t2=new Thread(myThread);
        t1.start();
        t2.start();
    }
}
class MyThread extends Thread {
    ...
}

A .1
B .2
C .3
D .4
解析:main所在的主线程,也算在其中。

  • 错题2
    -如果有以下代码段:
Thread thread = new Thread(new ________________() {
    public void run() {...} 
});

空白部分指定哪些类型可以通过编译? 【AB】

A.Runnable
B .
Thread
C .
Future
D .
Executor

解析:查API文档,Thread 也实现了 Runnable 接口。

  • 错题三
    调用线程的interrupt()方法 ,会抛出()异常对象?【DE】

A .
IOException
B .
IllegalStateException

C .
RuntimeException
D .
InterruptedException

E .
SecurityException

  • 错题四
    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, 下面哪些选项可以创建一个并行流?【DF】

A .
new ParallelStream(s)
B .
c.parallel()
C .
s.parallelStream()
D .
c.parallelStream()
E .
new ParallelStream(c)
F .
s.parallel()
解析:没有parallelstream这样的类,所以a和e不正确。在流类中定义的方法,以从现有流创建并行流( ) ;因此f是正确的,c是不正确的。在集合类中定义的从集合中创建并行流的方法是parallelstream ( ) ;因此d是正确的,b是不正确的。

  • 错题五
    Assuming zoo-data.txt is a multiline text file, what is true of the following method?
private void echo() throws IOException {
    try (FileReader fileReader = new FileReader("zoo-data.txt");
        BufferedReader bufferedReader = new BufferedReader(fileReader)) {
        System.out.println(bufferedReader.readLine());
    }
 }


A .
It prints the first line of the file to the console.

B .
It prints the entire contents of the file.

C .
The code does not compile because the reader is not closed.

D .
The code does compile, but the reader is not closed.

E .
The code does not compile for another reason.
解析:此代码编译和运行无问题,因此c和e不正确。它使用试一试块来打开filereader和bufferedreader对象。因此,两者都自动关闭,d不正确。尝试块的主体在文件的第一行读取,并将其输出给用户。因此,a是正确的。由于文件的其余部分未读取,因此b不正确。

结对及互评

评分标准

  1. 正确使用Markdown语法(加1分):

    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  2. 模板中的要素齐全(加1分)

    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  3. 教材学习中的问题和解决过程, 一个问题加1分

  4. 代码调试中的问题和解决过程, 一个问题加1分

  5. 本周有效代码超过300分行的(加2分)

    • 一周提交次数少于20次的不加分
  6. 其他加分:

    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 课后选择题有验证的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深入的加1分
    • 点评认真,能指出博客和代码中的问题的加1分
    • 结对学习情况真实可信的加1分
  7. 扣分:

    • 有抄袭的扣至0分
    • 代码作弊的扣至0分
    • 迟交作业的扣至0分

点评模板:

  • 博客中值得学习的或问题:

    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:

    • xxx
    • xxx
    • ...
  • 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

  • 参考示例

点评过的同学博客和代码

  • 本周结对学习情况
    • 20155339

    • 结对照片

    • 结对学习内容

      • 一起讨论看书时不懂的问题以及编译出错时,相互帮助改正代码。
      • 一起看Java视频
  • 上周博客互评情况

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

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 20/20 1/2 15/15 完成JDK、IDEA下载,并且可以简单操作
第二周 150/170 1/2 18/33 开始可以撰写简单的代码,了解了一些常用的语法
第三周 327/677 1/2 26/59 更深入认识类与对象,以及对象的封装,时间紧,任务重,需敲大量代码来熟练
第四周 1353/1830 1/2 25/84 通过学习继承和多态,感觉自己掌握了很多java的语法,代码量越来越重要
第五周 577/2407 1/2 24/112 本周学习了异常处理和Collection与Map,感觉自己对代码的学习越来越深入了,但是独立敲代码的能力还不好,感觉自己需要微改一波学习代码的方法了。
第六周 674/3081 1/2 27/139 主要学习了输入输出流和线程,学的越来越多,感觉以前的知识不牢固,现在有点吃力
第七周 291/3372 1/2 16/155 学习了时间与日期

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

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

  • 计划学习时间:20小时

  • 实际学习时间:16小时

  • 改进情况:

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

参考资料

posted on 2017-04-09 22:11  20155306  阅读(269)  评论(6编辑  收藏  举报

导航