出于好奇,可以制作一个在参数中打印字符串的方法 我没有理由这样做我只是想知道out.print和out.println幕后发生了什么
consoleString("Hello World!");
public consoleString(string stringForConsole) {
stringForConsole = What would go here to print this into the console?;
}
答案 0 :(得分:1)
非常基本的问题,但
public consoleString(String stringForConsole) {
System.out.println (stringForConsole);
}
如果你使用像Eclipse这样的IDE,你可以进入代码并看看它在做什么。
例如,如果单击out
,您将看到它正在使用PrintStream并使用
* @see java.io.PrintStream#println()
* @see java.io.PrintStream#println(boolean)
* @see java.io.PrintStream#println(char)
* @see java.io.PrintStream#println(char[])
* @see java.io.PrintStream#println(double)
* @see java.io.PrintStream#println(float)
* @see java.io.PrintStream#println(int)
* @see java.io.PrintStream#println(long)
* @see java.io.PrintStream#println(java.lang.Object)
* @see java.io.PrintStream#println(java.lang.String)
答案 1 :(得分:1)
这是特定于平台的,但在Linux系统(和其他* nix系统)上,您可以打开/dev/stdout
并写入它。像,
PrintStream ps = new PrintStream(new FileOutputStream(new File("/dev/stdout")));
ps.println("Hello, World");
答案 2 :(得分:0)
问:强> 在out.print和out.println
的幕后发生了什么 答强>
这是一个棘手的问题。我不确定,但您实际上可以看到System.out.println(...)
的源代码,并从那里开始跟踪其代码路径。
Java源代码可从JDK
包中获得,可以在Oracle的Java下载页面here上获取。
- 这适用于Linux x64软件包.--
解压缩包,您将在其中看到名为src.zip
的另一个嵌套zip包。解压缩源代码。
System.out代码路径
签出文件lang/System.java
文件,您将看到println()
的实施。
万一你懒得做上面的步骤。这就是它的样子。
public final class System {
...
public final static PrintStream out = null;
...
}
所以System.out
实际上是PrintStream
类。所以现在......你需要看一下PrintStream类......
Blah Blah和故事从PrintStream
课继续。
你最终会看到这段代码。
public void write(...) {
try {
synchronized (this) {
ensureOpen();
out.write(b);
if ((b == '\n') && autoFlush)
out.flush();
}
}
catch (InterruptedIOException x) {
Thread.currentThread().interrupt();
}
catch (IOException x) {
trouble = true;
}
}
注意。这不是故事的结尾......代码仍在继续,直到您在屏幕上看到输出。