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

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

2017-04-01 10:56 441 查看

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

教材学习内容总结

第十章 输入/输出

字节输入类:

Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的事串流对象。从应用程序角度来看,将数据从来源取出,使用输入串流
java.io.InputStream
;如果将数据写入目的地,可以使用输出串流
java.io.OutputStream




串流继承架构



ObjectInputStream
提供
readObject()
方法将数据读入为对象,而
ObjectOutputStream
提供
writeObject()
方法将对象写至目的地。

字符输入类:

针对字符数据的读取,Java SE提供了
java.io.Reader
类,抽象化了字符数据读入的来源;

针对字符数据的写入,提供了
java.io.Writer


,抽象化了数据写出的目的地。

就装饰器的作用而言,

InputStreamReader


System.in
读入的字节数据做编码转换,而
BufferedReader
将编码转换后的数据做缓冲处理,以增加读取效率。

第十一章 线程与并行API

线程

单线线程程序就是自启动的程序从
main()
程序进入点开始至结束只有一个流程。多线程:在同一应用程序中,有多个流程被同时执行。

线程生命周期:调用
Thread
实例
start()
方法后,基本状态为可执行(Runnable)、被阻断(Blocked)、执行中(Running)。



并行API

使用Thread建立多线程程序,必须亲自处理syn
chronized
、对象锁定、
wait()
notify()
notifyAll()
等细节。

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

问题1:在学习死结部分时,编译运行P343 DeadLockDemo.java代码,有时发生死结,有时不发生:





问题1解决方案:书上的解释是这样:发生死结的原因在于,
thread1
在调用
resource1.corportate(resource2)
时,会取得
r1
的锁定,若此时
thread2
也正好调用
resource2.corportate(resource1)
,取得
r2
的锁定,凑巧
thread1
现在打算运用传入的
r2
调用
doSome()
,理应取得
r2
的锁定,但锁定现在被
t2
拿走了,于是
t1
进入阻断,而
t2
也打算运用传入的
r1
调用
doSome()
,理应取得
r1
的锁定,但锁定现在是
t1
取走,于是
t2
进入等待。

问题2:之前第四章的课后题中有输出斐波那契数列的题,我自己编的代码是这样:

没有调用函数,只是用了数组。

int[] fb=new int[num];
fb[0]=0;
fb[1]=1;
int i=0;
for(i=0;i<num;i++){
if(i>1){
fb[i]=fb[i-1]+fb[i-2];
}


问题2解决方案:书上输出斐波那契数列选择的方法是递归调用函数:

static long fibonacci(long n) {
if (n <= 1) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}

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

问题1:在编译P315代码时,出现了问题:



问题1解决方案:发现书上省略了定义get、set的方法,补全代码如下

public String getNumber() {
return number;
}

public void setNumber(String number) {
this.number = number;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

编译通过。

代码托管



上周考试错题总结

现有:

import java.util.*;

2.

Class FindStuff {

4.public static void main (String[]args) {

5, //insert code here

6. c.put ("X", 123);

7. }

}

分别插入到第5行,哪几行允许代码编译?

A .Map c= new SortedMap();

B .HashMap c= new HashMap();

C .HashMap c= new Hashtable();

D .SortedMap c= new TreeMap();

E .ArrayList c= new ArrayList();

F . Map c = new LinkedHashMap();

答案:BDF

结对及互评

结对:

20155313杨瀚

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

正确使用Markdown语法:加1分

模板中的要素齐全:加1分

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

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

排版精美:加1分

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

错题学习深入:加1分

博客中值得学习的或问题:参考搭档的教材内容总结,对前两章的学习又有了新的理解。

代码中值得学习的或问题:对照搭档的问题,我修改了自己的代码,程序成功编译。

小组:

20155117王震宇

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

正确使用Markdown语法:加1分

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

代码调试中的问题和解决过程,:加2分

本周有效代码超过300分行:加2分

排版精美的加1分

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

有动手写新代码的加1分

博客中值得学习的或问题:该同学的标题写错了,应该是2016-2017学期

20155335俞昆

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

错题学习深入:加1分

教材中的问题和解决过程:加2分

20155322秦诗茂

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

正确使用Markdown语法:加1分

模板中的要素齐全:加1分

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

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

排版精美:加1分

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

有动手写新代码:加1分

错题学习深入:加1分

20155311高梓云

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

正确使用Markdown语法:加1分

模板中的要素齐全:加1分

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

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

排版精美:加一分

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

有动手写新代码:加1分

代码Commit Message规范:加1分

点评过的同学博客和代码

20155313杨瀚

20155117王震宇

20155311高梓云

20155322秦诗茂

20155335俞昆

感悟与思考

这周正好赶上清明节放假,因为时间安排,提前两天完成任务。当然时间不够充裕,也许学习过程中有落下的部分,课后会仔细看看书。这周代码量更多了,一点一点敲确实有点繁冗枯燥,但是我相信再经过深入学习,会有一天把写代码看作跟日常吃饭睡觉一样平常。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
第六周1761/33651/115/92
计划学习时间:17小时

实际学习时间:15小时

改进情况:这周没达到学习目标,本来想周六仔细看看书,但是周六白天上课,只好晚上再加班。

参考资料

Java学习笔记(第8版)

《Java学习笔记(第8版)》学习指导
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: