JavaSE进阶-day10思维导图,每日总结

 

JavaSE进阶-day10

1.编码表

1.1 码表概述

码表概述:
    编码表就是"字母和数字之间的对应关系所形成的表格",里边记录着"字母所对应的数字"
常见码表:
    ASCII: 基础码表,只包含英文大小写字母,数字和英文标点符号
    GBK: 中国的编码表.一个汉字占2个字节.windows中文简体操作系统默认编码
    UTF-8: 万国码,支持全世界大部分文字.一个汉字占3个字节.
    ISO-8859-1: 欧洲常用编码表.

1.2 手动编解码

//编码: 把字符串按照指定编码,转换为"byte数组"
byte[] bys = 字符串.getBytes();    //根据默认编码表转换(Idea默认是UTF-8)
byte[] bys = 字符串.getBytes("编码表名称"); //根据指定编码表转换
​
//解码: 把"byte数组"按照指定编码,转换为字符串
String s = new String(byte数组);  //根据默认编码表转换(Idea默认是UTF-8)
String s = new String(byte数组,"编码表名称");//根据指定编码表转换

1.3 IO补充

1.文件复制时,使用字节流.
2.单独读取文本文件,或单独写出文本文件,使用字符流

2.字符流(了解)

2.1 字符输出流

构造:
    public FileWriter("文件路径"); //指定文件输出位置(如果文件不存在则创建,如果文件存在则覆盖)
    public FileWriter("文件路径",是否追加); //指定文件输出位置(如果第二个参数是true,则表示不覆盖,而是追加续写)
方法:
    public void write(int b);       //写出一个字符
    public void write(char[] chs);  //把字符数组中的所有数据都写出.
    public void write(char[] chs,int off,int len);  //把字符数组中,从off位置开始写,写len个数据.
    public void write(String s);    //写出一个字符串
    public void write(String s,int off,int len);    //把字符中,从off位置开始写,写len个数据.
    public void flush();    //强制把缓冲区中的数据给写出去
    public void close();    //关闭IO流,释放资源(关闭之前会自动flush)

2.2 字符输入流

构造:
    public FileReader("文件路径");  //指定要读取的文件位置
方法:
    public int read();  //读取一个字符,如果读取不到,则返回-1
    public int read(char[] chs);//读取多个字符,并把读取到的数据放入chs数组中,返回读取到的字符的个数.如果读取不到,则返回-1
    public void close();//关闭IO流,释放资源

3.缓冲流(常用)

3.1 字符缓冲输出流

构造:
    public BufferedWriter(Writer w); 
方法:
    public void write(String str);//写出一个字符串
    public void newLine();  //输出一个换行(该换行可以根据操作系统自动切换不同的换行).
    public void close();    //关闭IO流,释放资源(关闭之前会自动flush)

3.2 字符缓冲输入流

构造:
    public BufferedReader(Reader r);    
方法:
    public String readLine();   //一次读取一行.如果读取不到,返回null
    public void close();        //关闭IO流,释放资源

4.IO其他流

4.1 转换流

① InputStreamReader

概述: InputStreamReader:就是可以指定编码的FileReader. JDK11之后FileReader可以指定编码
构造:
    public InputStreamReader(字节输入流,"编码表名称");

② OutputStreamWriter

概述: OutputStreamWriter:就是可以指定编码的FileWriter. JDK11之后FileWriter可以指定编码
构造:
    public OutputStreamWriter(字节输出流,"编码表名称");

③ 作用

1.进行读写操作时,可以指定编码.
2.可以把字节流转换为字符流.

4.2 对象流

① 对象输出流->序列化流

概述: 把一个"对象"直接写到文件上,这种行为也称之为"序列化".
构造:
    public ObjectOutputStream(OutputStream os);
方法:
    public void writeObject(对象);

② 对象输入流->反序列化流

概述: 从文件上,直接读取出来一个"对象",这种行为也称之为"反序列化".
构造:
    public ObjectInputStream(InputStream in);
方法:
    public Object readObject();

③ 注意事项(掌握)

1.如果想把一个对象写到文件上,则该对象所在的类必须实现Serializable接口
2.对象所在的类需要提供一个序列化版本号
     private static final long serialVersionUID = 1989733137067568637L;
3.如果不想让某个属性序列化,可以在属性上添加transient关键字

④ Serializable接口

概念: Serializable接口是一个"标记接口"
特点:
    1.标记接口没有抽象方法,不需要重写.
    2.标记接口仅作为一个标记,不具有任何实际意义(例如:一个类实现了Serializable,仅表示该类可以被序列化到文件上).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值