加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java中的outputstream出乎意料的结果

发布时间:2020-12-15 08:49:28 所属栏目:Java 来源:网络整理
导读:我正在尝试一个简单的程序来打印字符.当我这样做: import java.io.*;public class listit { public static void main(String[] args) { for (int i = 32; i 127; i++) { System.out.write(i); // break line after every eight characters. if (i % 8 == 7)
我正在尝试一个简单的程序来打印字符.当我这样做:

import java.io.*;

public class listit {

  public static void main(String[] args) {

    for (int i = 32; i < 127; i++) {
      System.out.write(i);
      // break line after every eight characters.
      if (i % 8 == 7) System.out.write('n');
      else System.out.write('t');
    }
    System.out.write('n');
   }
}

我得到了预期的结果,即打印出ASCII字符集的可打印子集.但是,当我尝试类似的东西时:

import java.io.*;
public class listit {
public static void main(String[] args) {
int i = 122;
System.out.write(i);
}
}

我完全没有输出,而我期待z.如果没有循环,这个程序与上面的程序有什么不同?

解决方法

PrintStream支持在换行符上自动刷新或刷新.

System.out已启用自动刷新,但对于System.out.write(‘A’),它只会在您写入换行符时自动刷新.注意:如果您执行System.out.write(“A”.getByte())将自动刷新.

PrintStream.write(int)的Javadoc说明

Writes the specified byte to this stream. If the byte is a newline and
automatic flushing is enabled then the flush method will be
invoked.

这意味着您需要自动刷新并写入换行符.

注意:PrintStream.print(char)状态

these bytes are written in exactly the manner of the write(int) method.

这并不清楚冲洗是不同的.
如果您有自动刷新或写入新行,它将刷新.

System.out.print('a');
System.out.write('b');

只打印

a

我怀疑这种不一致是一个长期存在的错误,而不是一个功能(换句话说,它不会被修复).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读