输出流,没有本质区别,err是运行期异常和错误反馈的输出流的方向。 但是 有两点比较重要,楼主要注意的是: (1)System.out.println 能重定向到别的输出流,这样的话你在屏幕上将看不到打印的东西了,如输出到 一个txt的log日志中. (2)而System.err.println只能在屏幕上实现打印,即使你重定向了也一样。 要说 最直接的区别的话: 就是 如果 你使用err打印出的 字符串,再eclipse的console会显示成红色的哦。 :-) 希望我的回答 对你有帮助!:-)
当向控制台输出信息时,开发者有两个选择:System.out和System.err。使用者更倾向于输出的是System.out,而如果是System.err则输出“error”。尽管这看起来是显而易见的,但很多开发者都不了解为什么出错和调试时使用System.err。 当输出一个流时,JVM和操作系统共同决定何时输出这个流。也就是说,尽管开发者键入了: System.out.print_ ("Test Output:"); JVM和操作系统的组合体并不会立即输出这个流。相反,它将保持等待状态直到将要输出的东西达到一定的量。 假设输入以下指令: System.out.println("Debugging Info."); JVM可能同意输出;然而,操作系统可能决定暂不输出。 由于这个原因,在调试程序时想要发现出错的位置就有可能成为问题。考虑以下的程序: for(int i=0; i<56; i++) { System.out.println(i); ... // containing an error } 错误可能出现在i等于54时,但是可能JVM在i等于49时就结束输出了。50到54仍然存在于缓存中,结果也就丢失了。 使用System.err来报告错误、调试程序就可以避免这种情况出现,它将使每一次操作的结果都输出出来。例如以下程序: for(int i=0; i<56; i++) { System.err.println(i); ... // containing an error } 在每一次i等于54时都将显示错误信息。