黑马程序员技术交流社区

标题: day10 [打印本页]

作者: ymkspxh    时间: 2019-4-25 09:41
标题: day10
day10------------------------------------------------------------
        【重点1】缓冲流
                原理:在基本流上的"增强",增加了一个缓冲区,减少系统的IO次数,提升了效率
               
                字节缓冲输入流
                BufferedInputStream(InputStream in)
                BufferedInputStream(InputStream in, int size)
               
                字节缓冲输出流
                BufferedOutputStream(OutputStream out)
                BufferedOutputStream(OutputStream out, int size)
               
                字符缓冲输入流
                BufferedReader(Reader in)
                BufferedReader(Reader in, int sz)
                        特有成员方法:
                                String         readLine()        读取一行文本数据
                                        返回值:包含该行内容的字符串,不包含任何行终止符,如果已达流末尾,返回null
                                        行终止符:"\r" "\n" "\r\n"
                                       
                字符缓冲输出流
                BufferedWriter(Writer out)
                BufferedWriter(Writer out, int sz)
                        特有成员方法:
                                void newLine()  写入一个行分隔符
               
                释放资源 close方法,可以只关闭缓冲流,因为关闭缓冲流时会自动关闭基本流
               
        【重点3】转换流
                字符编码
                        一套自然语言的字符与二进制数之间的对应规则
                        UTF-8最为常用
                字符集
                        charSet,也叫编码表
                                ASCII字符集    GBK字符集    Unicode字符集 ......
               
                IDEA默认使用UTF-8,想要读取其他编码的文件
                InputStreamReader
                        字节转字符的桥梁 -> 解码
                                InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader
                                InputStreamReader(InputStream in, String charsetName) 创建一个使用指定字符集的 InputStreamReader
                                        注意:构造方法中指定的编码表要和文件的编码表相同,否则发生乱码
                OutputStreamWriter
                        字符转字节的桥梁 -> 编码
                                OutputStreamWriter(OutputStream out) 创建并使用默认字符编码的 OutputStreamWriter
                                OutputStreamWriter(OutputStream out, String charsetName) 创建使用指定字符集的 OutputStreamWriter
               
        【重点2】序列化和反序列化
                把数据进行网络传输时,就需要使用到序列化流
               
                把对象以流的方式,写入到文件中保存,叫做 写对象, 也叫 对象的序列化
                对象中包含的不仅仅是字符,使用字节流
                ObjectOutputStream:对象的序列化
               
                把文件中保存的对象,以流的方式读出来,叫做 读对象, 也叫对象的 反序列化
                读取的文件都是字节,使用字节流
                ObjectInputStream:对象的反序列化
               
                使用序列化
                        实现 序列化的 标记型接口 Serializable, 给一个序列化ID
               
                static关键字:静态关键字
                        静态优先于非静态加载到内存中(静态优先于对象进入到内存中)
                        被static修饰的成员变量不能被序列化,序列化的都是对象
                transient关键字:瞬态关键字
                        被transient修饰的成员变量,不能被序列化(不想成员变量被序列化,使用transient修饰)
                       
                文件会针对自身的特点,会生成一个序列化ID,保存在class文件中
                同时,在文件序列化的视乎,也会生成一个序列化ID,保存在class文件中
                在反序列化的时候,会比较2个ID是否相同,如果不同,抛出InvalidClassException异常
                解决方案:
                        把序列号写死
                                private static final long serialVersionUID = 1L;
               
        目前市面上流行的java开发架构
                分布式架构 相当于 多台电脑互相之间配合
               
        打印流
                PrintStream
                PrintWriter
                了解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2