20155201 2016-2017-2 《Java程序设计》第六周学习总结
2017-04-01 10:56
441 查看
20155201 2016-2017-2 《Java程序设计》第六周学习总结
教材学习内容总结
第十章 输入/输出字节输入类:
Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的事串流对象。从应用程序角度来看,将数据从来源取出,使用输入串流
java.io.InputStream;如果将数据写入目的地,可以使用输出串流
java.io.OutputStream
。
串流继承架构
![](https://images2015.cnblogs.com/blog/1065407/201704/1065407-20170401105440524-118712675.jpg)
ObjectInputStream提供
readObject()方法将数据读入为对象,而
ObjectOutputStream提供
writeObject()方法将对象写至目的地。
字符输入类:
针对字符数据的读取,Java SE提供了
java.io.Reader类,抽象化了字符数据读入的来源;
针对字符数据的写入,提供了
java.io.Writer类
,抽象化了数据写出的目的地。
就装饰器的作用而言,
InputStreamReader将
System.in读入的字节数据做编码转换,而
BufferedReader将编码转换后的数据做缓冲处理,以增加读取效率。
第十一章 线程与并行API
线程
单线线程程序就是自启动的程序从
main()程序进入点开始至结束只有一个流程。多线程:在同一应用程序中,有多个流程被同时执行。
线程生命周期:调用
Thread实例
start()方法后,基本状态为可执行(Runnable)、被阻断(Blocked)、执行中(Running)。
![](https://images2015.cnblogs.com/blog/1065407/201704/1065407-20170401105453524-1874829909.png)
并行API
使用Thread建立多线程程序,必须亲自处理syn
chronized、对象锁定、
wait()、
notify()、
notifyAll()等细节。
教材学习中的问题和解决过程
问题1:在学习死结部分时,编译运行P343 DeadLockDemo.java代码,有时发生死结,有时不发生:![](https://images2015.cnblogs.com/blog/1065407/201704/1065407-20170401105505992-343308140.png)
![](https://images2015.cnblogs.com/blog/1065407/201704/1065407-20170401105510758-686475050.png)
问题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代码时,出现了问题:![](https://images2015.cnblogs.com/blog/1065407/201704/1065407-20170401105538289-1337576595.png)
问题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; }
编译通过。
代码托管
![](https://images2015.cnblogs.com/blog/1065407/201704/1065407-20170401105528070-497037805.png)
上周考试错题总结
现有: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/3365 | 1/1 | 15/92 |
实际学习时间:15小时
改进情况:这周没达到学习目标,本来想周六仔细看看书,但是周六白天上课,只好晚上再加班。
参考资料
Java学习笔记(第8版)《Java学习笔记(第8版)》学习指导
相关文章推荐
- 20155220 2016-2017-2 《Java程序设计》第六周学习总结
- 20155236 2016-2017-2 《Java程序设计》第六周学习总结
- 20155310 2016-2017-2 《Java程序设计》第六周学习总结
- 2016-2017-2 《Java程序设计》第六周学习总结
- 20155201 2016-2017-2 《Java程序设计》第二周学习总结
- 20155229 2016-2017-2 《Java程序设计》第六周学习总结
- 20155333 2016-2017-2 《Java程序设计》第六周学习总结
- 20155319 2016-2017-2 《Java程序设计》第六周学习总结
- 20155225 2016-2017-2 《Java程序设计》第六周学习总结
- 20155238 2016-2017-2 《Java程序设计》第六周学习总结
- 20155313 2016-2017-2 《Java程序设计》第六周学习总结
- 20155201 2016-2017-2 《Java程序设计》第五周学习总结
- 20155302 2016-2017-2 《Java程序设计》第六周学习总结
- 20155201 2016-2017-2 《Java程序设计》第四周学习总结
- 20155201 2016-2017-2 《Java程序设计》第一周学习总结
- 20155230 2016-2017-2《Java程序设计》第六周学习总结
- 20155330 2016-2017-2 《Java程序设计》第六周学习总结
- 20155227 2016-2017-2 《Java程序设计》第六周学习总结
- 20155235 2016-2017-2 《Java程序设计》第六周学习总结
- # 20155337 2016-2017-2 《Java程序设计》第六周学习总结