关于System.out的一个问题,它不是缓冲流吗!
书上说,System.out是缓冲流。而缓冲流输出的数据并不直接送向输出流,而是先送到缓冲区。待缓冲区满,或有回车符键入,则刷新缓冲区,将数据送到输出流。
于是我试验了一下,我编写了下列语句:
System.out.print("this should not be seen first !");
System.in.read();
当运行时,发现先出现 “this should not be seen first !”,然后才是我的输入。
按理说,“this should not be seen first !”应先输入缓冲区,待缓冲区满或有回车符键入才刷新缓冲区,可此时我并没有键入回车符,缓冲区也不可能满,所以,“this should not be seen first !”应并没有进入标准输出流,也就不应在控制台上显示。而当我输入完毕,程序将结束时,
强制刷新缓冲区时,才应在控制台上输出。
可事实并非如我所想,且我所想也不合情理,谁能解释一下这是为什麽呀?
于是我试验了一下,我编写了下列语句:
System.out.print("this should not be seen first !");
System.in.read();
当运行时,发现先出现 “this should not be seen first !”,然后才是我的输入。
按理说,“this should not be seen first !”应先输入缓冲区,待缓冲区满或有回车符键入才刷新缓冲区,可此时我并没有键入回车符,缓冲区也不可能满,所以,“this should not be seen first !”应并没有进入标准输出流,也就不应在控制台上显示。而当我输入完毕,程序将结束时,
强制刷新缓冲区时,才应在控制台上输出。
可事实并非如我所想,且我所想也不合情理,谁能解释一下这是为什麽呀?
...全文
相关推荐
java移动文件夹下所有文件
sourceDir.isDirectory()) { System.out.println("源文件夹不存在或不是文件夹"); return; } File[] files = sourceDir.listFiles
java使用缓冲流复制文件的方法
(); // 获取复制前的系统时间 copy(src, dst); long endTime = System.currentTimeMillis(); // 获取复制后的系统时间 System.out.println
java缓冲流、转换流、序列化流.docx
在创建缓冲流对象时,系统会自动创建一个内部的默认大小的缓冲区数组,数据的读写操作都是在这个缓冲区中进行,而不是直接与底层的物理设备交互。这样减少了实际的系统I/O操作次数,从而提高了读写效率。1.
Java流(文件读写操作)
缓冲流的一个重要特性是可以使用`mark()`和`reset()`方法来标记和重置读取位置。此外,对于输出缓冲流来说,数据会先在内存中缓存,当调用`flush()`方法时,才会将缓存的数据立即写入。
JAVA基础
这种处理方式简化了程序设计,使得程序员可以专注于业务逻辑的实现,而不是数据传输的细节。6. 标准的输入流System.inSystem.in是InputStream类的一个对象实例,用于实现标准输入。


Web 开发
