AlanJiang_NLP 2017-09-28 11:09 采纳率: 54.5%
浏览 957
已结题

PrintStream打印流的print(int a)的源码理解

api中解释,PrintStream打印流的print(int a)方法是通过调用String.valueOf(int a)方法将a转换为String,再将String转换为字节数组,调用write(byte[])方法将字节数组中的字节写入目的设备中。但是查看print(int a)源码显示如下:
public void print(int i) {
write(String.valueOf(i));
}

    //write(String s)的源码
    private void write(String s) {
    try {
        synchronized (this) {
            ensureOpen();
            textOut.write(s);
            textOut.flushBuffer();
            charOut.flushBuffer();
            if (autoFlush && (s.indexOf('\n') >= 0))
                out.flush();
        }
    }
    catch (InterruptedIOException x) {
        Thread.currentThread().interrupt();
    }
    catch (IOException x) {
        trouble = true;
    }
}

源码中并不是按照write(byte[] s)写入的,而是直接用字符流的write(String s)写入的,这是为什么啊,该以哪个为准啊,求大神解惑,感谢!

  • 写回答

2条回答 默认 最新

  • threenewbee 2017-10-05 01:43
    关注

    这个要看textOut.write内的实现,它肯定是转换成字节才能写入

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题