首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >console.writeline和System.out.println

console.writeline和System.out.println
EN

Stack Overflow用户
提问于 2010-10-24 02:11:54
回答 3查看 456.1K关注 0票数 130

console.writelineSystem.out.println之间的技术区别到底是什么?我知道System.out.println会写入标准输出,但这与控制台不是一回事吗?

我不完全理解console.writelinedocumentation

EN

回答 3

Stack Overflow用户

发布于 2010-10-24 02:55:02

首先,我担心你的问题包含一个小错误。类Console中没有方法writeline。相反,类Console提供了返回PrintWriter的方法编写器()。此打印编写器具有println()。

现在有什么区别呢?

代码语言:javascript
复制
System.console().writer().println("hello from console");

代码语言:javascript
复制
System.out.println("hello system out");

如果你从命令行运行你的应用程序,我认为没有区别。但是如果控制台不可用,当System.out仍然存在时,System.console()返回null。如果调用应用程序并执行STDOUT到文件的重定向,可能会发生这种情况。

下面是我刚刚实现的一个示例。

代码语言:javascript
复制
import java.io.Console;


public class TestConsole {
    public static void main(String[] args) {
        Console console = System.console();
        System.out.println("console=" + console);
        console.writer().println("hello from console");
    }
}

当我从命令提示符运行应用程序时,我得到了以下结果:

代码语言:javascript
复制
$ java TestConsole
console=java.io.Console@93dcd
hello from console

但当我把STDOUT重定向到文件...

代码语言:javascript
复制
$ java TestConsole >/tmp/test
Exception in thread "main" java.lang.NullPointerException
        at TestConsole.main(TestConsole.java:8)

第8行是console.writer().println()

下面是/tmp/test的内容

代码语言:javascript
复制
console=null

我希望我的解释能有所帮助。

票数 10
EN

Stack Overflow用户

发布于 2010-10-24 02:48:36

在Java中没有Console.writeline。它在.NET中。

控制台和标准输出不同。如果您阅读mentioned的Javadoc页面,您将看到应用程序只有在从命令行调用时才能访问控制台,并且输出不会像这样被重定向

代码语言:javascript
复制
java -jar MyApp.jar > MyApp.log

其他类似的情况在SimonJ的回答中也有涉及,尽管他没有提到没有Console.writeline

票数 4
EN

Stack Overflow用户

发布于 2022-02-16 14:38:12

System.out引用PrintStream的一个实例。

System.console.writer引用PrintWriter的一个实例。

请参阅System.out.println vs PrintWriter

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4005378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档