JAVA高级02--IO输入与输出--要点总结2

JAVA高级02_IO输入与输出


12.ASCII码的最高bit位为0,也就是说这些数字都在0到127之间。
GB2312,中文字符的每个字节的最高位为1. GB2312是GBK的一个子集。GBK还包含繁体等更多中文字符。
台湾中文字符集BIG5(大五码)。
Unicode编码的字符占用两个字节的大小,对于ASCII码所表示的字符只是简单的在ASCII码原来占用的一个字节前面,增加了一个所有bits为0的字符编码。并不能表示所有字符。
java使用Unicode编码,也可兼容本地化字符编码。
UTF-8 表示ASCII码时占用一个字节,其他字符用两个或三个字节来表示。优点:不出现内容为0x00字节;便于应用程序检测数据在传输过程中是否发生了错误。
缺点:有些字符需要三个字节来表示。
UTF-16 对Unicode进一步扩充,但并没有影响unicode编码所包括的字符,只是增加了其他字符的表示方式,所以一个使用unicode编码的字符就是UTF-16格式的。因为编码占用了两个字节,所以叫“16”.
UTF-16中除了unicode字符外,其他字符用4个字节表示。
13.可以通过ultraEdit进行各个编码格式的转换。可以学习各种编码的特点。
14.little endian和big endian,字节在内存中的存储顺序。联想栈存储两个字节的数据。比如0xAFBB,little表示BB在AF之上,也就是小数结尾,而big刚好相反。
15.联通,联想,联,存入记事本。分析显示的情况。这里边还有很多问题我个人不是很明白,以后有时间再好好研究一下,参见java高级02_08.

16.System.out.println();有时候也可以用来刷新缓冲区。在调用println前会调用flush函数。
17.如果得到一个字符串str,要在系统里使用,有可能str采用了其他类型的编码形式,因而不能在程序里正常显示,在这种情况下,可以进行如下编码:
new String(str.getByges("str的编码形式"),"我们希望的编码形式")。
18.编码解码不是可逆的。
个人理解:字符量小的编码变化成字符量大的编码,信息能保留下来,并且有机会还原,比如将一个2字节的数据2a3b转化为4字节,002a 003b,还有机会还原回去。
但是如果将字符量大的编码变成字符量小的编码,比如将4字节数据变成了2字节,那么就不可逆了。
ISO8859-1,GBK之间的转换,有待进一步理解和实验。

19.节点流和处理流,处理流用来包装节点流。
20.Buffered stream的缓冲区和底层系统提供的缓冲区比较。
21.关闭流栈中的最上层的流对象,将会自动关闭流栈中的所有底层流对象。
22.ObjectOutputStream/input用来将可序列化的对象写入文本或者读出,也是一种包装类。对于static和transent类型的成员变量不会写入或读出。
23.字节流和字符流的转换:InputStreamReader和OutputStreamWriter。 用来包装InputStream和OutputStream。
应该避免频繁的在字符与字节间进行转换,最好不要直接使用InputStreamReader和OutputStreamWriter类来读写数据,应尽量使用BufferedWriter/Reader来进行包装OutputStreamWriter/Reader。
24.记住调用Process类的destroy方法结束子进程的运行。
25.java中可以用Process类的实例对象来表示子进程,子进程的标准输入和输出不再连接到键盘和显示器,而是以管道流的形式连接到父进程的一个输出流和输入流对象上。
26.调用Process类的getOutputStream和getInputStream方法可以获得连接到子进程的输出流和输入流对象。

实例程序:

你可能感兴趣的:(java)