您的位置:首页 > 编程语言 > Java开发

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

2017-04-09 20:01 423 查看

教材学习内容总结

第十二章

认识Lambda语法

在只有Lambda表达式的情况下,参数的类型必须写出来。

匿名类有相应的应用场合。Lambda表达式只关心方法命名上的参数与返回定义,忽略方法名称。

JDK8对interface语法做了演讲,允许有默认方法操作。

Functional与Stream API

*使用Optional代替null

调用方法时如果返回类型是Optional,应该立即想到他可能包含也不包涵值。

标准API的函数接口

Consumer:一个参数,无返回值

Function:一个参数,有返回值

Predicate:一个参数,有返回值,返回值必须是boolean类型的

Supplier:无参数,有返回值

JDK8引入了StreamAPI,引入了管道操作风格。

*一个管道包括:来源、零或多个中间操作、一个最终操作。

第十三章

时间的度量

格林威治标准时间

世界时

国际原子时

世界协调时间

Unix 时间

epoch

GMT(Greenwich Mean Time)时间:现在不是标准时间

世界时(Universal Time,UT):1972年UTC出来之前,UT等价于GMT

国际原子时(TAI):秒的定义

世界协调时间(Corrdinated Universal Time, UTC): 闰秒

Unix时间: 1970.1.1 00:00:00开始的秒数

epoch: java.util.Date epoch毫秒数

年历与时区

儒略历,现公历的前身

格里高利厉,

ISO 8601标准,并非年历系统,而是时间日期表示方法的标准,用以统一时间日期的数据交换格式。

时区涉及地理、法律、经济,社会甚至政治问题。例如日光节约时间在许多高纬度国家实施。

Date与Calendar

Date只用来获取epoch毫秒数

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

取得系统时间,方法之一是使用
System.currentTimeMilles()
方法,返回值是long类型整数。

JDK8新时间日期处理API中最重要的,就是将机器时间的概念与人类时间概念区隔开来。

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

问题1:机器时间观点的API与人类时间观点的API的区别。(日光节约时间是混淆机器与人类时间观点会引发的问题之一)

问题1解决方案:

机器API新时间日期处理的主要套件是java.time,对于机器的相关概念,设置了Instant类,精确度基本是毫秒。JDK8新时间日期处理API清楚地将机器与人类时间概念划分开来。

人类在实践概念的表达大多数是笼统的,片段的信息。

问题2:标准API几个函数接口的异同。

问题2解决方案:

Consumer函数接口,是接受了自变量,然后处理后不返回值。

Function函数接口,是接受了自变量,进行计算后返回结构。

Predicate函数接口,是接受了自变量,,然后只返回boolean值,也就是根据传入的自变量直接论断真假的行为。

Supplier函数接口,是不接受任何自变量,然后返回值。

...

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

问题1:编译过程中出现乱码

问题1解决方案:可能是编写过程中字符编码出现错误

代码托管





上周考试错题总结

调用线程的interrupt()方法,会抛出InterruptedException SecurityException异常对象。

3.import java.util.*;
4.    class ForInTest  {
5.static List list=new ArrayList();
6.
7.public static void main (String  []  args)  {
8.list. add("a"); list. add("b");list. add( "c");
9.    //insert code here
10.    System.out.print (o);
11.    }
12.  }

哪一行插入到第9行将导致输出“abc"?

for (Object o  :  list)


Which of the following statements about the Callable call() and Runnable run() methods are correct? (Choose all that apply.)

Both can throw unchecked exceptions.

Callable can throw a checked exception.

Both can be implemented with lambda expressions.

Callable returns a generic type.

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) {


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, 下面哪些选项可以创建一个并行流?

c.parallelStream()


s.parallel()


What are some reasons to use a character stream, such as Reader/Writer, over a byte stream, such as InputStream/OutputStream?

* More convenient code syntax when working with String data
* Automatic character encoding


```

private void echo() throws IOException {

try (FileReader fileReader = new FileReader("zoo-data.txt");

BufferedReader bufferedReader = new BufferedReader(fileReader)) {

System.out.println(bufferedReader.readLine());

}

}

```

Assuming zoo-data.txt is a multiline text file, what is true of the following method?

It prints the first line of the file to the console


Which of the following are not java.io classes?

PrintReader

Assuming / is the root directory, which of the following are true statements?

/home/parrot is an absolute path

```

String line;

Console c = System.console();

Writer w = c.writer();

if ((line = c.readLine()) != null)

w.append(line);

w.flush();

```

What is the result of executing the following code?

The code prints what was entered by the user


A NullPointerException might be thrown


An IOException might be thrown


Which of the following are true?

Console is obtained using the singleton pattern.

When getting a Console object, it might be null.

```

InputStream is = new BufferedInputStream(new FileInputStream("zoo.txt"));

InputStream wrapper = new _____(is);

```

Which classes will allow the following to compile?

```BufferedInputStream```

```ObjectInputStream```


Which of the following are built-in streams in Java?

System.err

System.in

System.out

结对及互评

评分标准

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

不使用Markdown不加分

有语法错误的不加分(链接打不开,表格不对,列表不正确...)

排版混乱的不加分

模板中的要素齐全(加1分)

缺少“教材学习中的问题和解决过程”的不加分

缺少“代码调试中的问题和解决过程”的不加分

代码托管不能打开的不加分

缺少“结对及互评”的不能打开的不加分

缺少“上周考试错题总结”的不能加分

缺少“进度条”的不能加分

缺少“参考资料”的不能加分

教材学习中的问题和解决过程, 一个问题加1分

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

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

一周提交次数少于20次的不加分

其他加分:

周五前发博客的加1分

感想,体会不假大空的加1分

排版精美的加一分

进度条中记录学习时间与改进情况的加1分

有动手写新代码的加1分

课后选择题有验证的加1分

代码Commit Message规范的加1分

错题学习深入的加1分

点评认真,能指出博客和代码中的问题的加1分

结对学习情况真实可信的加1分

扣分:

有抄袭的扣至0分

代码作弊的扣至0分

迟交作业的扣至0分

点评模板:

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

xxx

xxx

...

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

xxx

xxx

...

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

参考示例

点评过的同学博客和代码

本周结对学习情况

20155216

结对照片



结对学习内容

1、通过课本内容学习Lambda表达式语法。

2、了解Stream API的使用。

3、学习Date与Calendar以及JDK新的时间日期API。

上周博客互评情况

20155218

20155223

20155307

20155235

20155325

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

在老师的启发之下,改变了自己Java学习的方式,以往是零散式的,集中一两天的学习方法。现在能在每天学习不同的学习任务,一周之内合理的分配时间学习Java。

每天敲打书上的代码,的确能学到许多知识,也逐渐学会了Java的调试,但还是缺乏自己的动手和实际操作能力。

平时遇见问题能先自己尝试寻找资源来学习,解决不了再询问老师和同学。

学习了Lambda表达式语法,了解了Functional与Stream API,认识了Date与Calendar。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周0/01/48/12
第二周70/801/516/28
第三周120/2001/612/40
第四周300/5001/720/60
第五周500/10001/815/75
第六周600/16001/915/90
第七周400/20002/1120/110对Lambds语法,时间与日期有了一定了解
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

计划学习时间:20小时

实际学习时间:20小时

改进情况:对于java学习的时间,有了系统性的规划,并不是向以前零散或者突击性的学习。

(有空多看看现代软件工程 课件

软件工程师能力自我评价表)

参考资料

Java学习笔记(第8版)

《Java学习笔记(第8版)》学习指导

...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: