J2SE对字符与字节间的双向转换提供了支持。这些支持在java.nio.Charset包中、
有了Charset,就不需要自己去做编码的编解码了。
在J2SE API文档中,有一句话:
A named mapping between sequences of sixteen-bit Unicode code units and sequences of bytes.
它有两层意思:
1。 java中的字符都是用16位的Unicode表示的;
2. byte流还有编码信息;我们用什么编码去解释这个byte流?
J2SE提供了大量的编码,我们直接用它就可以了。查看支持的Charset的方法:
常用的有US-ASCII、UTF-16、UTF-16BE、UTF-16LE、UTF-8;
通过Charset可以构建encoder和decoder,也可以直接用Charset的encoder和decoder方法。实现CharBuffer和ByteBuffer间的双向转换。
ByteBuffer、charBuffer都是继承自Buffer;之前有分析过ByteBuffer,其实就是对Buffer的封装;同类的类还有DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer和shortBuffer;
ByteBuffer与byte[]的关系和Integer和Int的关系类似,都是对一些常用功能做了一层封装;使用起来更方便。