黑马程序员技术交流社区
标题:
关于System.in的问题
[打印本页]
作者:
根号5
时间:
2012-4-23 09:23
标题:
关于System.in的问题
键盘上输入的和电脑上显示的不都是字符吗? 为什么看到一些地方都说system.in输入是字节流呢 我看到的一个问题是BufferedReader(InputStreamReader(system.in)) InputStreamReader是接收的字节流,这说明在键盘输入的就是字节流 求解释
作者:
蒋亮
时间:
2012-4-23 10:21
在IO操作过程中存在字符编码和解码,当你System.in一个字符时,会将该字符对应的默认字符编码集中的值读入到InputStreamReader中,而不是直接将字符读入流
作者:
伊文龙
时间:
2012-4-23 11:46
System.in就是System类中名字叫“in”的静态属性,它是”InputStream“的一个对象,是系统帮我们做好的。InputStream当然是一个字节流了啊。
你所出现的问题就是对流的包装的问题,字节流通过包装可以得到字符流,反过来也可以。
你要实例化一个BufferedReader,就需要传递一个InputStream的对象,然后要实例化一个
作者:
李蛟龙
时间:
2012-4-23 12:51
首先字符流是字节流的包装类,字符流基于字节流提供了更方便的功能。例如java虚拟机同样调用的是系统底层的工具资源,所以你要关流,把资源还给系统。
然后,InputStreamReader与inputstream如同碗与勺子的关系,我们习惯用把饭用勺子从锅里盛到碗里吃,而不是用勺子直接在锅里吃。
此处,我们用InputStreamReader来盛system.in,从而更方便我们阅读、操作从键盘获得的数据。但底层还是字节流在物理键盘与内存之间传输。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2