• 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小时

    • 改进情况:

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

    参考资料

  • 相关阅读:
    纯CSS打造好看的按钮样式
    jQuery手机端触摸卡片切换效果
    CSS手动改变DIV高宽
    Windows 10 的音频和 MIDI API将统一
    美食网站响应式精美模板
    三道Javascript的练习题
    html5手机端遮罩弹出菜单代码
    CSS的::selection使用方法
    Html5绘制饼图统计图
    JQuery实现一个简单的鼠标跟随提示效果
  • 原文地址:https://www.cnblogs.com/0831j/p/6686724.html
Copyright © 2020-2023  润新知