# 20145334赵文豪 《Java程序设计》第6周学习总结
2016-04-18 12:49
645 查看
20145334赵文豪 《Java程序设计》第6周学习总结
教材学习内容总结
第十章 输入/输出数据流
I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出。
Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象.如果要将数据从来源取出,可以使用输入传流,如果要将数据写入目的地,可以使用输出串流。
在java中,输入串流代表对象为java.io.InputStream实例,输出串流代表对象为java.io.OutStream实例。
InputStream与OutputStream
InputStream不关心数据源来自何种设备(键盘,文件,网络);
OutputStream不关心数据的目的是何种设备(键盘,文件,网络)
提供串流基本操作,如果想要为输入/输出的数据做加工处理,则可以使用打包器类。
子类一: FileInputStream,FileOutputStream。适用于文件的创建和读写。这两个子类在不使用时都要用close()关闭文档。
子类二:ByteArryInputStream,ByteArryOutputStream。指定byte数组创建实例,一旦创建就可将byte数组当做数据源进行读写。
Reader与Writer
字符数据的读取:java.io.Reader类,其抽象化了字符数据读入的来源;字符数据的写入:java.io.Writer类。其抽象化了数据写出的目的地。
第十一章 线程与并行API线程
线程
单线程:
启动的程序从main()程序进入点开始至结束只有一个流程。
多线程:要设计程序可以拥有多个程序。即在main以外独立设计流程。
实现多线程
撰写类操作**java.lang.Runnable接口。操作进入点:run();
创建Thread实例来执行Runnable实例定义的run()方法,启动线程执行指定的线程,调用Thread实例的start()方法。
继承Thread类。
并行API
使用Thread建立多线程程序,必须亲自处理synchornized、对象锁定、wait()、notify()、notifyAll()等细节,如果需要的是线程池、读写解锁高等级操作,从JDK5之后提供了java.util.concurrent,可基于其中的API建立更稳固的并行应用程序。
并行API可以分为以下几个类.
1.Lock、ReadWriter与Condition
2.使用Executor
3.并行Collection
Lock、ReadWriteLock
lock接口主要操作类之一为ReentrantLock,可以达到synchronized的作用。
ReadWriteLock接口定义了读取锁定与写入锁定行为,可以使用readLock()、writeLock()方法返回Lock操作对象。
StampedLock类可支持了乐观读取操作。也就是若读取线程很多,写入线程很少的情况下,你可以乐观地认为,写入与读取同时发生的机会很少,因此不悲观的使用哇暖的读取锁定,程序可以查看数据读取之后,是否遭到写入线程的变更,再采取后续的措施。
教材学习中的问题和解决过程
DataInputStream与DataOutputStrea用来装饰InputStream、OutputStream、DataInputStream、DataOutputStream 提供读取、写入 java 基本数据类型的方法,像是s读写int double boolean 等的方法。这些方法会自动在指定的类型与字节间转换。代码如下:
package cc.openhome; import java.io.*; public class Member { private String number; private String name; private int age; public Member(String number, String name, int age) { this.number = number; this.name = name; this.age = age; } 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; } @Override public String toString() { return String.format("(%s, %s, %d)", number, name, age); } public void save() throws IOException { try(DataOutputStream output = new DataOutputStream(new FileOutputStream(number))) { output.writeUTF(number); output.writeUTF(name); output.writeInt(age); } } public static Member load(String number) throws IOException { Member member; try(DataInputStream input = new DataInputStream(new FileInputStream(number))) { member = new Member( input.readUTF(), input.readUTF(), input.readInt()); } return member; } }
代码调试中的问题和解决过程
ObjectInputStream 提供 readObject() 方法将数据读入为对象,ObjectOutputStream 提供 writeObject() 方法将对象写至目的地。代码如下:
package cc.openhome; import java.io.*; public class Member2 implements Serializable { private String number; private String name; private int age; public Member2(String number, String name, int age) { this.number = number; this.name = name; this.age = age; } 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; } @Override public String toString() { return String.format("(%s, %s, %d)", number, name, age); } public void save() throws IOException { try(ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(number))) { output.writeObject(this); } } public static Member2 load(String number) throws IOException, ClassNotFoundException { Member2 member; try(ObjectInputStream input = new ObjectInputStream(new FileInputStream(number))) { member = (Member2) input.readObject(); } return member; } }
本周代码托管截图
其他(感悟、思考等,可选)
本周只是粗略的看了看书,照着课本敲了几段代码,上传到了上面,我会在后面的学习中努力跟上大家的步伐,娄老师辛苦了学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 3000行 | 20篇 | 300小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/600 | 1/2 | 22/60 | |
第四周 | 300/700 | 1/2 | 30/50 |
参考资料
Java学习笔记(第8版)《Java学习笔记(第8版)》学习指导
...
相关文章推荐
- Java Web(11) Spring MVC 返回Json
- 学习JAVA之路(六、数组)
- Java入门(一)
- Java学习笔记
- java8 JDK8 元空间--删除
- spring 官方下载地址
- Selenium自动化测试视频教程(Java版)
- 简单介绍java Enumeration
- Java 7新特性总结 - Java IO
- Java 7新特性总结 - Java IO
- java异常:java.lang.OutOfMemoryError: GC overhead limit exceeded
- Java修饰符总结
- Java中各种修饰符与访问修饰符
- java的动态绑定与静态绑定
- Java 大热透号码生成器
- Google地图百度地图GPS经纬度偏移转换(JAVA)
- java.io.filenotfoundexception: ... .jar
- 疫苗:Java HashMap的死循环
- 03.Java多线程并发库API使用2
- Java控制台输入Scanner中next和nextLine的区别