20155330 2016-2017-2 《Java程序设计》第六周学习总结
20155330 2016-2017-2 《Java程序设计》第六周学习总结
教材学习内容总结
学习目标
- 理解流与IO
- 理解InputStream/OutPutStream的继承架构
- 理解Reader/Writer继承架构
- 会使用装饰类
- 会使用多线程进行并发程序设计
第十章 章节主要内容
小结
-
掌握父类中方法,核心类:
-
Java中输入串流代表对象为
java.io.InputStream
实例,输出串流代表对象为java.io.OutputStream
实例。无论数据源或目的地为何,只要取得以上两个实例,接下来操作输入/输出方式一致。 -
在不使用
InputStream
和OutputStream
时,必须使用close()方法关闭串流。 -
java.net.URL
的使用:指定网址,URL实例会自动进行HTTP协议。 -
InputStream常用类继承架构:
- FileInputStream:把一个文件作为InputStream,实现对文件的读取操作。
- ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用,可以指定byte数组创建实例,一旦创建就可将byte数组当作数据源进行读取。
-
BufferedInputStream:主要在内部提供缓冲区功能,操作上与InputStream没有太大差别。
-
DataInputStream:提供读取、写入Java基本数据类型的方法,像是读写int、double、boolean等的方法,这些方法会自动在指定的类型与字节间转换。
-
ObjectInputStream:提供readObject()方法将数据读入为对象,具备对象串行化能力。
-
OutputStream常用类继承架构:
- FileOutputStream:把信息存入文件中,可以指定文件名创建实例,一旦创建文档就开启,接着就可以用来写出数据。
- ByteArrayOutputStream:把信息存入内存中的一个缓冲区中,可以指定byte数组创建实例,一旦创建就可将byte数组当作目的地写出数据。
- BufferedOutputStream:主要在内部提供缓冲区功能,操作上与OutputStream没有太大差别。
- DataOutputStream:提供读取、写入Java基本数据类型的方法,像是读写int、double、boolean等的方法,这些方法会自动在指定的类型与字节间转换。
- ObjectOutputStream:提供writeObject()方法将对象写至目的地,具备对象串行化能力。
-
Reader抽象类:用于读取字符流的抽象类。子类必须实现的方法只有
read(char[], int, int)
和close()
。但是,多数子类将重写此处定义的一些方法,以提供更高的效率或其他功能。 -
Reader继承架构:
-
Writer抽象类:写入字符流的抽象类。子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。
-
Writer继承架构:
第十一章 章节主要内容
小结
- 在java中,如果想在main()以外独立设计流程,可以撰写类操作
java.lang.Runnable
接口,流程的进入点是操作在run()方法中。 - 如果想要为JVM加装CPU,就是创建Thread实例,要启动额外CPU就是调用Thread实例的start()方法,额外CPU执行流程的进入点,可以定义在Runnale接口的run()方法中。
- 如果主线程中启动了额外线程,默认会等待被启动的所有线程都执行完run()方法才中止JVM。如果一个Thread被标识为Daemon线程,在所有的非Daemon线程结束时,JVM就会自动终止。
- 在调用Thread实例start()方法后,基本状态为可执行(Runnable)、被阻断(Blocked)、执行中(Running)。
教材学习中的问题和解决过程
- 问题1:·
InputStream
、Reader
与Writer
的区别 - 解决方案:
InputStream
针对于串流输入;Reader
针对于字符数据的读取;Writer
针对于字符数据写入;。 - 问题2:ForkJoinPool与其他的ExecutorService的区别
- 解决方案:ForkJoinPool是闲聊了工作窃取演算,其建立的线程如果完成手边任务,会尝试寻找并执行其他任务建立的资额任务,让线程保持忙碌状态,有效利用处理器的能力。ForkJoin框架适用于计算密集式的任务,较不适合用于容易造成线程阻断的场合。
代码调试中的问题和解决过程
本周未遇到代码调试的问题。
代码托管
上周考试错题总结
- 错题1:
现有:
import java.util.*;
Class FindStuff {
public static void main (String[]args) {
//insert code here
c.put ("X", 123);
}
}
分别插入到第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();
- 错题2:
现有:
class Guy {
String greet() {
return "hi";
}
}
class Cowboy extends Guy {
String greet() {
return. "howdy";
}
}
class Wrangler extends Cowboy {
String greet() {
return "orch!";
}
}
class Greetings2 {
public static void main (String [] args) {
Guy g=new Wrangler();
Guy g2=new Cowboy();
Wrangler w2=new Wrangler();
System.out.print(g.greet()+g2.greet()+w2 .greet());
}
}
结果是什么?
A.hi hi ouch!
(√)B.ouch! howdy ouch!
C.hi howdy ouch!
D.编译失败
结对及互评
评分标准
-
正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
-
模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
-
教材学习中的问题和解决过程, 一个问题加1分
-
代码调试中的问题和解决过程, 一个问题加1分
-
本周有效代码超过300分行的(加2分)
- 一周提交次数少于20次的不加分
-
其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
- 点评认真,能指出博客和代码中的问题的加1分
- 结对学习情况真实可信的加1分
-
扣分:
- 有抄袭的扣至0分
- 代码作弊的扣至0分
- 迟交作业的扣至0分
点评模板:
-
博客中值得学习的或问题:
- 狄惟佳同学的博客中许多问题的解决方案都十分详细,有一些疏忽的地方在她的博客中都能得到很好的解答。
-
代码中值得学习的或问题:
- 狄惟佳同学的博客中提到catch()异常的继承关系,在catch括号中列出的异常不得有继承关系,否则会发生编译错误。让我对catch()异常的疑问得到了解答。
-
基于评分标准,我给本博客打分:XX分。得分情况如下:xxx
点评过的同学博客和代码
其他(感悟、思考等,可选)
由于从第六周开始,各科的实验课程也开展了起来,需要学习的东西更多了,合理分配自己的各科学习时间变得重要起来,提高自己的学习效率也十分必要。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 18篇 | 300小时 | |
第一周 | 15/15 | 1/1 | 15/15 | |
第二周 | 159/174 | 1/2 | 20/35 | |
第三周 | 414/588 | 1/3 | 18/53 | 了解了封装、对象 |
第四周 | 461/1049 | 1/4 | 18/71 | |
第五周 | 786/1835 | 1/5 | 18/89 | |
第六周 | 699/2534 | 1/6 | 20/109 |
-
计划学习时间:16小时
-
实际学习时间:20小时
-
改进情况:在进行了一番规划之后,将学习时间提到了二十小时,但是由于从第六周开始,各科的实验课程也开展了起来,需要学习的东西更多了,所以需要提高自己的学习效率。