遇到问题去查看jdk。
首先
system.out中的定义
out
public static final PrintStream out“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
对于简单独立的 Java 应用程序,编写一行输出数据的典型方式是:
System.out.println(data)
请参阅 PrintStream 类中的 println 方法。
这是jdk的解释,也就是说system.out是一个PrintStream对象,而printStrem是一个打印流
为什么一个字节流能输入字符呢?
去查看printStrem的源码得知
public void print(String s) {
if (s == null) {
s = "null";
}
write(s);
}
也就是调用了
public void write(String s) {
write(s, 0, s.length());
}
这个方法。
而之后又调用了
public void write(String s, int off, int len) {
try {
synchronized (lock) {
ensureOpen();
out.write(s, off, len);
}
}
在这里调用了
Writer out;
的write方法
void write(String str, int off, int len)
写入字符串的某一部分。
转成了字符流去输出,明白了吗??
多看看源码有好处
|