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

20145331 《Java程序设计》第6周学习总结

2016-04-10 23:29 197 查看

20145331 《Java程序设计》第6周学习总结

教材学习内容总结

第十章 输入/输出

10.1.1串流

•Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象。

•若要将数据从来源取出,可以使用输入串流;如果要将数据写入目的地,可以使用输出串流。输入串流代表对象为java.in.InputStream实例,输出串流代表对象为java.io.Outputstream实例

•每次从Inputstream读入的数据,都会先置入byte数据,它的read()方法会尝试读入btye的数据,并返回读入的字节。

•在不使用InputStream与OutputStream时,必须使用close()方法关闭串流。由于InputStream与OutputStrem操作了java.io.Closeable接口,其父接口为java.lang.AutoCloseable接口,因此可使用JDK7尝试自动关闭资源语法。

10.1.2串流继承架构

•System的setIn方法指定标准输入来源,setOut指定输出目的地,标准输出可以导向至文档,只要在执行程序时使用>将输出导向至指定文档就行

•FileInputStream是InputStream的子类,主要操作InputStream的read()抽象方法;FIleOutputStream是OutputStream的子类,主要操作其write()的操作方法。

10.1.3串流处理装饰器

•装饰器只是对数据进行了一些加工处理,例如缓冲、串行化、数据装换等

•BufferedInputStream与BufferedOutputStream主要在内部提供缓冲区功能。

10.2字符处理类

•Reader抽象类:用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率或其他功能。

•Writer抽象类:写入字符流的抽象类。子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率或其他功能。

•FileReader、FileWriter可以对文档作读取或写入。

第十一章 线程与并行API

11.1线程

•单线程程序:启动的程序从main()程序进入点开始至结束只有一个流程。

•多线程程序:一个程序拥有多个流程。

•撰写多线程程序的方式:操作Runnable接口,在run()中定义额外流程;继承Thread类,在run()中定义额外流程

•操作Runnable接口的好处就是较有弹性,类还有机会继承其他类;若继承了Thread类,那该类就是一种Thread,通常是为了直接利用Thread中定义的一些方法,才会继承Thread来操作。

•基本状态图:start——>runnable——>(blocked)——>running——>dead

•如果要停止线程,最好自行操作,让程序走完应有流程,而不是调用syop()方法

•线程存取同一对象相同资源时可能会引发竞速情况(Race Condition)

•wait()、notify()、notifyAll() 是 Object 定义的方法,可以通过这三个方法控制线程释放对象的锁定,或者通知线程参与锁定竞争

11.2并行API

•在使用高级并行API时,Lock接口的操作对象可实现synchronized的功能。

•在使用高级并行API时,Condition接口的操作对象可实现Object的wait()、notify()、notifyAll()功能。

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

Inputstream类中的常用方法:  

public abstract int read( )
public int read(byte b[ ])
public int read(byte b[ ], int off, int len)
public int available( )
public long skip(long n)
public int close( )

OutputStream类中的常用方法:  

public void write(byte b[ ])  
public void write(byte b[ ], int off, int len)
public abstract void write(int b)
public void flush( )  
public void close( )

本周代码托管截图

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

知识越来越多,难度也越来越大了,感觉前面的内容我忘记了好多,今后在学习的过程中,要注意复习前面的内容,做到温故而知新。

刚开始学习的时候学习的重点都放在语法和技巧上,不太注意API的学习,这让我在这两周的学习中吃到了苦头,API是JAVA的重要部分,在今后的学习中不可再抱有侥幸心理,踏踏实实地去学习每一个知识点,才会有质的提高。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标3500行20篇300小时
第一周150/1501/114/14
第二周150/3001/214/28
第三周100/4001/314/42
第四周200/6001/414/56
第五周317/9171/514/70
第六周355/12722/716/86

参考资料

Java学习笔记(第8版)

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