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

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

教材学习内容总结

  • 使用基于方法的语法在 Enumerable 类中调用 Where 方法时(像在 LINQ to Objects 和 LINQ to XML 中那样),参数是委托类型 System..::.Func<(Of <(T, TResult>)>)。使用 Lambda 表达式创建委托最为方便。例如,当您在 System.Linq..::.Queryable 类中调用相同的方法时(像在 LINQ to SQL 中那样),则参数类型是System.Linq.Expressions.Expression,其中 Func 是包含至多五个输入参数的任何 Func 委托。同样,Lambda 表达式只是一种用于构造表达式目录树的非常简练的方式。尽管事实上通过 Lambda 创建的对象的类型是不同的,但 Lambda 使得 Where 调用看起来类似。

  • Java中的日期概述

    日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中,日期的国际化,日期和时间之间的转换,日期的加减运算,日期的展示格式都是非常复杂的问题。

    在Java中,操作日期主要涉及到一下几个类:

  1. java.util.Date
    类 Date 表示特定的瞬间,精确到毫秒。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串。Date 中的把日期解释为年、月、日、小时、分钟和秒值的方法已废弃。

  2. java.text.DateFormat(抽象类)
    DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并分析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、分析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年,1 月 1 日 00:00:00 这一刻开始的毫秒数。

  3. java.text.SimpleDateFormat(DateFormat的直接子类)
    SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。它允许进行格式化(日期 -> 文本)、分析(文本 -> 日期)和规范化。
    SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过 DateFormat 中的 getTimeInstance、getDateInstance 或 getDateTimeInstance 来新的创建日期-时间格式化程序。

  4. java.util.Calendar(抽象类)
    Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
    与其他语言环境敏感类一样,Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化。

  5. java.util.GregorianCalendar(Calendar的直接子类)
    GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家使用的标准日历系统。
    GregorianCalendar 是一种混合日历,在单一间断性的支持下同时支持儒略历和格里高利历系统,在默认情况下,它对应格里高利日历创立时的格里高利历日期(某些国家是在 1582 年 10 月 15 日创立,在其他国家要晚一些)。可由调用方通过调用 setGregorianChange() 来更改起始日期。

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

  • 如何解决多线程共用同一个线程体时产生的数据安全问题?
    对其中的方法或语句使用synchonized标志进行锁定。

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

-如何获取当前日期。

import java.util.*; 
import java.text.*;
public class TestDate { 
	public static void main(String[] args) { 
		Date now = new Date(); 
		Calendar cal = Calendar.getInstance();
	}
}

代码托管

上周考试错题总结

  • 下面哪条命令可以把 f1.txt 复制为 f2.txt ?
    cp f1.txt f2.txt
    cat f1.txt > f2.tx
  • 以下()方法会使线程进入阻塞状态?
    Thread.sleep()
    wait()
  • 如果有以下代码段:
    Thread thread = new Thread(new ________________() {
    public void run() {...}
    });

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

  • 调用线程的interrupt()方法 ,会抛出()异常对象?
    D .InterruptedException
    E .SecurityException
  • 现有
  1. class Calc {
  2. public static void main(String [] args) {
  3. try {
  4.     int x = Integer.parselnt ("42a") ;
    
  5. //insert code here
    
  6.     System.out.print ("oops");
    
  7. }
  8. }
  9. }
    下面哪行分别插入到第五行,会导致输 "oops" ?
    catch (IllegalArgumentException e) {
    } catch (NumbelFormatException n) {

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 9/9 3/6 10/10
第二周 40/49 1/7 5/15
第三周 49/99 1/8 10/25
第四周 202/301 1/9 15/40
第五周 170/471 1/10 5/45
第六周 115/520 1/11 5/50
第七周 18/538 1/12 5/55

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

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

参考资料

posted @ 2017-04-09 22:59  20155222卢梓杰  阅读(202)  评论(5编辑  收藏  举报