Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >System.out.println与System.err.println的区别

System.out.println与System.err.println的区别

作者头像
张张
发布于 2019-12-26 07:43:36
发布于 2019-12-26 07:43:36
1.8K00
代码可运行
举报
运行总次数:0
代码可运行

System.out.println能重定向到别的输出流,这样的话你在屏幕上将看不到打印的东西了, 而System.err.println只能在屏幕上实现打印,即使你重定向了也一样。 当向控制台输出信息时,开发者有两个选择:System.outSystem.err。使用者更倾向于输出的是System.out,而如果是System.err则输出“error”。尽管这看起来是显而易见的,但很多开发者都不了解为什么出错和调试时使用System.err

当输出一个流时,JVM和操作系统共同决定何时输出这个流。也就是说,尽管开发者键入了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	System.out.print("Test   Output:");

JVM和操作系统的组合体并不会立即输出这个流。相反,它将保持等待状态直到将要输出的东西达到一定的量。

假设输入以下指令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
System.out.println("Debugging Info.");

JVM可能同意输出;然而,操作系统可能决定暂不输出。

由于这个原因,在调试程序时想要发现出错的位置就有可能成为问题。考虑以下的程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for(int   i=0;   i<56;   i++)   {   
    System.out.println(i);   
    ...   
    //   containing   an   error   
}

错误可能出现在i等于54时,但是可能JVM在i等于49时就结束输出了。50到54仍然存在于缓存中,结果也就丢失了。使用System.err来报告错误、调试程序就可以避免这种情况出现,它将使每一次操作的结果都输出出来。例如以下程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for(int   i=0;   i<56;   i++)   {   
     System.err.println(i);   
     ...   
     //   containing   an   error   
}

在每一次i等于54时都将显示错误信息。

System.out.println可能会被缓冲,而System.err.println不会.

System.err和System.out就是错误输出和标准输出。如果你用LOG4J记录日志的话,且设定错误等级的话,System.err的输出是将记录到日志中。

输出设备是一样的所以你看到的是一样的System.setErr()System.setOut()是重定向两个流的方法。

System.err.println()是要缓冲的,所以优先级会高点,而System.out.println()是不需要缓冲的,所以优先级会低点.

另外,特别的,当你使用MyEclipse和Tomcat6以上时,输出System.err.println("aaaa")到控制台是红色显示的,在控制台很显眼,一下就能找到,非常适合输出调试信息,这个我个人比较喜欢用,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) {
    System.err.println("aaaaaaaaaaaaaaaa");
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
java 标准输出与标准错误 out与 err 区别 用法 联系 java中的out与err区别 System.out和System.err的区别 System.out.println和Sy
java 标准输出与标准错误    out与 err 区别 用法 联系  java中的out与err区别  System.out和System.err的区别 System.out.println和System.err.println的区别 Java重定向System.out和System.err
noteless
2018/09/11
1.7K0
java 标准输出与标准错误    out与 err 区别 用法 联系  java中的out与err区别  System.out和System.err的区别 System.out.println和Sy
我敢打赌绝大多数程序员没有这么深入研究过 System.out.println()!
System.out.println 是一个 Java 语句,一般情况下是将传递的参数,打印到控制台。
良月柒
2019/07/16
8430
我敢打赌绝大多数程序员没有这么深入研究过 System.out.println()!
[Java IO]04_系统标准IO
该文介绍了Java编程思想中的I/O处理,包括标准I/O、文件I/O和字符流。首先介绍了I/O的概念和分类,然后详细讲解了标准I/O流和文件I/O流的使用,最后介绍了字符流的处理。
静默虚空
2018/01/05
5530
【Java 基础篇】Java 标准输出流详解:输出你的程序之美
Java 编程中,标准输出流是一个重要的概念。它允许我们将程序的输出信息显示在终端或控制台上,这对于调试、用户界面和与用户的交互非常重要。在这篇文章中,我们将深入探讨 Java 的标准输出流,了解如何使用它以及一些常见的用法和技巧。
繁依Fanyi
2023/10/12
1.1K0
【Java 基础篇】Java 标准输出流详解:输出你的程序之美
GO语言中println和fmt.println()区别
标准错误输出:在Linux中是stderr,在JAVA中是System.err,在Golang中是Print()/Println()
似水流年o
2021/12/23
1.8K0
灵魂拷问:你真的理解System.out.println()打印原理吗?
这应该是刚开始学习Java时用到最多一段代码,迄今为止,与它算是老朋友了。既然是老朋友,就应该多去深入了解下其“内心”深处的“真正想法”。
朱季谦
2020/10/28
2.7K0
灵魂拷问:你真的理解System.out.println()打印原理吗?
Java IO学习笔记七
文章目录 1. System对IO的支持 1.1. System.out 1.2. System.in 1.3. System.err 1.4. System.exit 1.5. 参考文章 System对IO的支持 System是系统的类,其中的方法都是在控制台的输入和输出,但是通过重定向也是可以对文件的输入输出 System中定义了标准输入、标准输出和错误输出流,定义如下: static PrintStream err “标准”错误输出流。 static InputStream in
爱撒谎的男孩
2019/12/31
3490
第8次文章:其他流
使用方法:read(byte[] b,int off,int len) +close()
鹏-程-万-里
2019/09/27
4780
第8次文章:其他流
掌握Java编程的关键:深入解析System类,有两下子!
咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE相关知识点了,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~
bug菌
2024/07/04
5350
掌握Java编程的关键:深入解析System类,有两下子!
打印流
原有System.out.println 现改为PrintStream类型的实例.println以完成输出到文件
shimeath
2020/07/30
6130
(58) 文本文件和字符流 / 计算机程序的思维逻辑
上节我们介绍了如何以字节流的方式处理文件,我们提到,对于文本文件,字节流没有编码的概念,不能按行处理,使用不太方便,更适合的是使用字符流,本节就来介绍字符流。 我们首先简要介绍下文本文件的基本概念、与二进制文件的区别、编码、以及字符流和字节流的区别,然后我们介绍Java中的主要字符流,它们有: Reader/Writer:字符流的基类,它们是抽象类。 InputStreamReader/OutputStreamWriter:适配器类,输入是InputStream,输出是OutputStream,将字节流转
swiftma
2018/01/31
2.3K0
(58) 文本文件和字符流 / 计算机程序的思维逻辑
try-catch-finally中的4个大坑,不小心就栽进去了!
在 Java 语言中 try-catch-finally 看似简单,一副人畜无害的样子,但想要真正的“掌控”它,却并不是一件容易的事。别的不说,咱就拿 fianlly 来说吧,别看它的功能单一,但使用起来却“暗藏杀机”,若您不信,咱来看下面的这几个例子...
磊哥
2021/02/02
1K0
安卓应用安全指南 4.8 输出到 LogCat
在 Android 中有一种名为 LogCat 的日志机制,不仅系统日志信息,还有应用日志信息也会输出到 LogCat。 LogCat 中的日志信息可以从同一设备中的其他应用中读出 [17],因此向L ogcat 输出敏感信息的应用,被认为具有信息泄露的漏洞。 敏感信息不应输出到 LogCat。
ApacheCN_飞龙
2022/12/01
5840
夯实Java基础系列16:一文读懂Java IO流和常见面试题
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看
Java技术江湖
2019/10/08
1.5K0
Java基础17:Java IO流总结
本文介绍了Java IO流的基本概念,使用方法,以及使用的注意事项等。帮助你更好地理解和使用Java的IO流。
程序员黄小斜
2019/04/07
1.1K0
慎用System.out.println!!!
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
林老师带你学编程
2019/10/24
3.1K0
【小家java】聊聊Java中的System类
Java程序在不同操作系统上运行时,可能需要取得平台相关的属性,或者调用平台命令来完成特点功能。Java提供了System类和Runtime类来与程序的运行平台进行交互。
YourBatman
2019/09/03
5590
【小家java】聊聊Java中的System类
重学SpringBoot3-Spring WebFlux之Reactor事件感知 API
在现代应用中,响应式编程逐渐成为处理高并发、异步非阻塞任务的首选编程范式。在 Spring Boot 3 中,响应式编程通过 Reactor 库得到了广泛应用,提供了强大的流式数据处理能力。为了增强对流式数据流的调试和处理能力,Reactor 提供了一组非常重要的事件感知(side-effect)API,也就是我们常听到的 doOnXxx 系列方法。
CoderJia
2024/10/28
5300
重学SpringBoot3-Spring WebFlux之Reactor事件感知 API
sonarqube之Replace this usage of System.out or System.err by a logger.
如何不断提升自身的编码能力是程序员应该关注的问题,sonarqube就像一位严师,当我们编码不符合规则时就会被指出来,俗话说:无规矩无以成方圆,我们在编码以及设计系统架构时需要严格要求自己,好了废话不说了,下面直接入题:
johnhuster的分享
2022/03/28
4040
Java - IO System类支持和缓冲流
System.err 是 PrintStream 类对象,此对象专门负责进行错误信息的输出操作
Mirror王宇阳
2020/11/12
5650
推荐阅读
相关推荐
java 标准输出与标准错误 out与 err 区别 用法 联系 java中的out与err区别 System.out和System.err的区别 System.out.println和Sy
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档