首先,我很遗憾,因为我提出了一个非常基本和奇怪的问题;但是我对Java和编程都很陌生。我研究了system.out.println()中的“out”是系统类的一个对象。可以将“out”替换为系统类的任何其他对象吗?如果是这样的成员和如何?我们可以在System.out.println()中替换“out”吗?
回答
您可以致电println()
任何PrintStream
。如果您查看System
javadoc,您会发现another PrintStream
static field,即System.err
。例如:
System.err.println("This goes to POSIX standard error!");
如果要真正地替换为自己的输出流标准输出,您可以将流传递到System.setOut(PrintStream)
或相应System.setErr(PrintStream)
是
System.setOut(out)
做到了这一点。可以是PrintStream
的任何实例。
例如:
System.setOut(System.err);
将设置默认输出流是相同的作为默认的错误流。
“可以 “走出去” 与其他任何替换系统类的对象?“,而不是”我可以用我自己的对象替换吗?“ – hexafraction 2014-11-24 11:28:20
是,例如ERR
但我会下载任何的Java IDE(IntelliJ IDEA的或Ecliplse)的,创建一个新的Java项目,新的阶级,新的主要方法,类型System.out和按Ctrl +空格,看看会发生什么
你为什么要专门声明使用IDE(其中有时文件有时挑剔以提高和键盘映射不同)?标准的javadoc不够吗? – hexafraction 2014-11-24 11:30:31
你可以玩IDE。他是一个新手。 – user831217 2014-11-24 14:20:29
是。你可以使用不同的关键词作为System.err.println()或system.in和不同的,你可以在这个链接中得到完整的视图http://javapapers.com/core-java/system-out-println/你可以为你提供一个完整的教程。
这里有2个非常有用的链接(希望这有助于)
这里是低于它的简短描述:
Structure of System.out.println
以下是JDK源代码中的System.out.println的骨架结构。通过这个代码片段,重要部分被突出显示,并给出更好的理解。
public final class System {
static PrintStream out;
static PrintStream err;
static InputStream in;
...
}
public class PrintStream extends FilterOutputStream {
//out object is inherited from FilterOutputStream class
public void println() {
...
}
变化出的System.out.println
对象的‘out’
可以定制。 out在启动时被java运行时环境初始化,并且它可以在开发过程中由开发人员更改。 而不是标准输出,在默认情况下,当您通过命令行运行程序时,输出将在相同的命令窗口中打印。我们可以使用setOut方法更改该行为,如下所示。
在下面的例子
public class ChangeOut {
public static void main(String args[]) {
try {
System.setOut(new PrintStream(new FileOutputStream("log.txt")));
System.out.println("Now the output is redirected!");
} catch(Exception e) {}
}
}
https://docs.oracle.com/javase/7/docs/api/java/lang/System.html – 2014-11-24 11:27:52