byte是单字节,char是双字节。

解决方案 »

  1.   

    因为System.in是一个InputStream,它是以字节为单位对输入进行处理的,所以是字节流
    当你使用:BufferedReader streami = new BufferedReader(new InputStreamReader(System.in));时
    InputStreamReader和BufferedReader都是以字符为单位对输入进行处理,所以是字符流
    个人认为这部分不需要深究,理解一下就好了至于区别:
    因为字节流是面向字节的,所以它不可能从字符上理解你输入的东西
    所以字节流只能按字节处理输入,所以它的输入方法是:
    int read(byte[] b) 
      注意:~~~~~~~~而字符流可以从字符上处理你的输入,因此字符流的输入方法是:
    int read(char[] cbuf, int offset, int length)
      注意:~~~~~~~~优化过的字符流(如:BufferedReader)甚至可以直接得到String的对象:
    String readLine();