为什么一个中文汉字可以保存在一个char变量里呢?因为在JAVA中,一个char是2个字节(byte),而一个中文汉字是一个字符,也是2个字节。而英文字母都是一个字节的,因此它也能保存到一个byte里,一个中文汉字却不能。
下面重点说一下字节流和字符流:
字节流 字符流
InputStream Reader
OutputStream Writer
FileInputStream FileReader
FileOutputStream FileWriter
BufferedInputStream BufferedReader
BufferedOutputStream BufferedWriter
PrintStream PrintWriter
InputStreamReader类,该类是字节流和字符流之间的桥梁。
BufferedReader和BufferedWriter这两个处理流不但能够提高输入输出的速度,而且还提供了新的方法,如BufferedReader的readLine()方法,可一个非常方便的读取一行信息,而BufferedWriter的newLine()方法又能够提供标示一行输出的结束,极大的方便了程序员编写程序。
字节流与字符流主要的区别是他们的的处理方式
字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的.但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的enicode来处理,也就是要进行字符集的转化这两个之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联,在实际开发中出现的汉字问题实际上都是在字符流和字节流之间转化不统一而造成的.