20155208徐子涵 2016-2017-2 《Java程序设计》第6周学习总结
2017-04-02 22:33
369 查看
20155208徐子涵 2016-2017-2 《Java程序设计》第6周学习总结
教材学习内容总结
10.1.11.Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象。
2.若要将数据从来源中取出,可以使用输入串流;若要将数据写入目的地,可以使用输出串流。在java中,输入串流代表对象为
java.in.InputStream的实例;输出串流代表对象为
java.io.Outputstream的实例。
3.read()方法每次尝试读取数据,并返回实际读入的,只要不是负一,就表示读到数据。
4.write()方法,指定要写出的数组,初始索引与数据长度。
10.1.2
1.标准输出可以重新导向至文档,只要执行程序时使用>将输出结果导向至指定文档。
2.FileInputStream是
InputStream的子类,可以指定文件名创建实例,一旦创建文档就开启,接着就可用来读取数据。
3.ByteArryInputStream是
InputStrteam的子类,可以指定byte数组创建实例,一旦创建就可将byte数组当做数据源进行读取。
4.ByteArryOutputStream是
OutputStream的子类,可以指定byte数组创建实例,一旦创建将byte数组当做目的地写出数据。
10.1.3
1.创建
BufferedInputStream和
BufferedOutputStream必须提供
InputStream和 OutputStream进行打包,可以使用默认或自定义缓冲区大小
BufferedInputStream与
BufferedOutputStream主要在内部提供缓冲区功能,操作上与
InputStream、
OutputStream没有太大区别
2.
DataInptStream与
DataOutputStream提供读入、写入Java基本数据类型的方法,会自动在指定的类型与字节间转换
ObjectInputStream与objectOutputStream将内存中的对象整个存储下来,之后再读入还原为对象
ObjectInputStream提供
readObject()方法将数据读入对象,
objectOutputStream提供
writeObject()方法将对象写至目的地,可以被这两个方法操作的对象,必须操作java.io.Serializable接口
10.2
Reader、Writer中也有一些装饰器类,
InputStreamReader和
OutputStreamWriter可以对串流数据打包,
BufferedReader、
BufferedWriter可对
Reader、
Writer提供缓冲区作用,在处理字符输入/输出时,对效率也会有所帮助。
PrintWriter与
PrintStream使用上极为类似,不过除了可以对
OutputStream打包之外,
PrintWriter还可以对
Writer进行打包,提供
print()、
println()、
format()等方法。
11.1.1
1.单线程程序:启动的程序从 main() 程序进入点开始至结束只有一个流程
多线程程序:程序有多个流程
11.1.2
1.JVM是台虚拟计算机,只安装一颗称为主线程的CPU,可执行main()定义的执行流程。如果想要为JVM加装CPU,就是创建Thread实例,要启动额外CPU就是调用Thread实例的start()方法,额外CPU执行流程的进入点,可以定义在Runnale接口的run()方法中。
11.1.3
setDeamon()方法用来设定一个线程是否为Daemon线程。 在调用
Thread实例
start()方法后,基本状态为可执行
(Runnable)、被阻断
(Blocked)、执行中
(Running)。 使用
Thread.sleep()会让线程进入Bocked状态。 当线程使用join()加入至另一个线程时,另一个线程会等待被加入的线程工作完毕,然后在继续它的动作,join()的意思表示将线程加入称为另一个线程的流程中。 线程完成run()方法后,就会进入Dead,进入Dead的线程不可以再次调用start()方法,否则会抛出
IllegalThreadStateException异常。
11.1.4
1.java.lang.ThreadGroup可以管理群组中的线程
2.
interrupt()方法可以中断群组中的所有线程
3.
setMaxpriority()方法可以设定群组中所有线程最大优先权
4.
enumerate()方法可以一次取得群组中所有线程
5.
activeCount()方法取得群组的线程数量
6.
uncaughtException()方法处理某个线程未被捕捉的异常。
11.1.5
1.Lock接口主要操作类之一为ReentranLock,可以达到
synchronized的作用,也提供额外的功能
2.ReadWriteLock 接口定义了读取锁定与写入锁定的行为,
ReentrantReadWriteLock是
ReadWriteLock接口的主要操作类
;ReadWriteLock在没有任何读取或写入锁定时,才可以取得写入锁定,可用于悲观读取;
3.Condition接口用来搭配 Lock,最基本用法就是达到Object的wait()、notify()、notifyAll()方法的作用;调用 Lock的newCondition() 取得 Condition操作对象;调用 Lock的 await()将会使线程进入 Condition的等待集合;调用 signal()方法通知等待集合中的一个线程,signalAll()方法通知所有等待集合中的线程。
11.2
在使用高级并行API时:
1.Lock接口的操作对象可实现synchronized的功能。
2.Condition接口的操作对象可实现Object的wait()、notify()、notifyAll()功能
3.Future接口的操作对象可以让你在未来取得执行结果。
教材学习中的问题和解决过程
问题:对第十章各种输入输出的流及类的关系和差别弄不清楚。
解决过程:
通过反复看教材并总结知识点,得到以下解析:InputStream:字节输入流,抽象化字节数据读入的来源 OutputStream:字节输出流,抽象化字节数据写出的目的地
InputStream子类:FileInputStream、ByteArrayInputStream、DataInputStream、ObjectInputStream
OutputStream子类:FileOutputStream、ByteArrayOutputStream、DataOutputStream、ObjectOutputS tream、PrintStream
Reader:字符输入流,抽象化字符数据读入的来源 Writer:字符输出流,抽象化字符数据写出的目的地
Reader子类:FileReader、BufferedReader、StringReader、CharArrayReader、InputStreamReader
Writer子类:FileWriter、BufferedWriter、StringWriter、CharArrayWriterr、OutputStreamWrit er、PrintWriter
代码调试中的问题和解决过程
问题:不理解书上p327页代码片段(如下)中start的作用及含义。
Thread tortoiseThread = new Thread(tortoise); Thread hareThread = new Thread(hare); tortoiseThread.start();
hareThread.start(); 解决过程:
通过看书上的重点内容,得到以下解释:
从main()开始的流程会由主线程执行,可以创建Thread实例来执行Runnable实例定义的run()方法,要启动线程 执行指定流程,必须调用Thread实例的start()方法。
其他(感悟、思考等,可选)
感觉这周的学习内容比较抽象,接触起来有些复杂,不过还是耐下心来慢慢的在看,不过这周的代码实践做得不是很好,因为这周的事情实在是太多了,学业繁重还要准备“五四杯”首都大学生联赛,以至于学习上有一点拖拉,下周会尽力调整自己,把进度赶上。上周考试错题总结
托管代码截图:
结对及互评
我的结对队友是20155221杨泽武 老师您应该是给他单独安排了学习目标,我暂时没有办法进行点评。点评过的同学博客和代码
学号1学号2
学号3
学号4
学号5
学习进度条
代码行数(新增/积累) | 博客量(新增/积累 | 学习时间(新增/累积) | |
---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 |
第一周 | 16/16 | 1/1 | 8/8 |
第二周 | 120/120 | 2/2 | 12/12 |
第三周 | 130/150 | 1/1 | 9/9 |
第四周 | 180/200 | 1/1 | 15/15 |
第五周 | 150/300 | 1/1 | 12/12 |
第六周 | 120/300 | 1/1 | 8/8 |
参考资料
Java学习笔记Java学习笔记(第8版)学习指导
相关文章推荐
- 20155208徐子涵 2016-2017-2 《Java程序设计》第7周学习总结
- 20155208徐子涵 2016-2017-2 《Java程序设计》第9周学习总结
- 20155208徐子涵 2016-2017-2 《Java程序设计》第4周学习总结
- 20155208徐子涵 2016-2017-2 《Java程序设计》第10周学习总结
- 20155208徐子涵 2016-2017-2 《Java程序设计》第5周学习总结
- 20155208徐子涵 2016-2017-2 《Java程序设计》第2周学习总结
- 20155208徐子涵 2016-2017-2 《Java程序设计》第3周学习总结
- 20155208徐子涵 2016-2017-2 《Java程序设计》第8周学习总结
- 学号20155308 2016-2017-2 《Java程序设计》第6周学习总结
- 20155205 2016-2017-2 《Java程序设计》第6周学习总结
- 20155203 2016-2017-4 《Java程序设计》第6周学习总结
- 20155231 2016-2017-2 《Java程序设计》第6周学习总结
- 2016-2017-20155329 《Java程序设计》第6周学习总结
- 20155314 2016-2017-2 《Java程序设计》第6周学习总结
- 20155237 2016-2017-2 《Java程序设计》第6周学习总结
- 20155210潘滢昊 2016-2017-2 《Java程序设计》第6周学习总结
- 20155202 2016-2017-2 《Java程序设计》第6周学习总结
- 20155326 2016-2017-2 《Java程序设计》第6周学习总结
- 20155217 2016-2017-2 《Java程序设计》第6周学习总结
- 20145202马超 2016-2017-2 《Java程序设计》第6周学习总结