关于java的System.out.println()的一些疑问

来源:百度知道 编辑:UC知道 时间:2024/05/24 23:54:44
我在看java书时遇到了一个问题:书上说以Stream为后缀的都是字节流,也就是说以一个字节为单位的.其中System.in.read()方法应该是读取键盘输入的,但是因为每次只读一个字节所以不适合,于是就有了BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 我的问题就是:System.out.print()或System.out.println()方法也应该是输出一个字节的啊,但是这样:System.out.print("12345") 输出12345 显然不是1个字节啊,这到底是怎么回事,我迷糊了.
in 和 out 不是System类的成员嘛,我看他们在System里这么定义的:
static InputStream in;
static PrintStream out;
那么System.in,System.out应该是字节流的对象啊,那字节流以1个字节为单位读写,为什么System.out.println不是以1个字节为单位的呢?

System.out.println()和System.out.print()都是一个输出语句,
这两个的区别就是System.out.println()是输出后换行,而System.out.print()不是输出后就换行。跟字节的输出没有关系。

字节流,是以字节为单位组成的流。Java是Unicode的,而Unicode每个字符并非一个字节能表示得下。in和out是Stream类型,是一个字节一个字节去输入输出的,但人家print和println可以向in和out输入多个字节,流嘛!人家是以字节为单位,但是没说一次只能发一个单位啊。如果一次限发一个单位,但可以发多次,那没必要做这样的限定,把多次整合到一次就算了,所谓流,只不过大局上来看是线性有序的。