Io包中类的层次关系图
输入流:程序中可以连续读取字节的对象。用InputStream类表示。
输出流:程序能向其中连续写入字符的对象。用OutputStream类表示。
字节输入流类:
字节输出流类:
红色部分没有对应的输出流。
字符输入流类:
字符输出流类:
红色部份没有。
java字符编码
1.
ASCⅡ(美国标准信息交换码):一个字符对应一个字节。字节的最高位都为0,数字都在0-127之间。
2.
GBK(国标码):原来的ASCⅡ字符的编码保持不变,仍用一个字节表示。每一个中文字符都用两个字节表示,为了将一个中文字符与两个ASCⅡ字符相区别,中文字符的每个字节最高位都为1。
3.
GB2312:在GBK(国标码)的基础上对更多的中文字符(包括繁体)进这行编码。GBK(国标码)是GB2312的子集。
4.
Unicode编码:全世界所有的符号进行了统一的编码,称之为Unicode编码。每个字符的编码都占用两个字节。Java中字符中是采用此编码的。
5.
编码:String中getBytes()方法,是将Unicode编码的字符串的每个字符数字,转换成该字符在指定字符集下的数字,然后将这些数字放在一字节数组中返回,这个过程叫编码。
6.
解码:将字节数组中的数据当作某种本地字符集码转换成Unicode码的字符中的过程。
7.
字节用于表计算机内存中最原始的数据,不会涉及到编码问题,只有把字节中的内容当做字符来处理时,才会涉及编码问题。在中文操作系统下,本地字符集默认为GB2312的。可以用System.getProperties().list(System.out);来查看。