フォーラムの質問を見て連想したJAVAの知識点。

679 ワード

http://bbs.csdn.net/topics/390420249
public class TestCodeSeg
{
	static
	{
		System.out.println("1");
	}
	{
		System.out.println("2");
	}
	public TestCodeSeg()
	{
		System.err.println("3");
	}
	public static void main(String[] args)
	{
		new TestCodeSeg();
	}
}
出力結果3出力位置が不確定です。1の位置は必ず2の前にあります。
知識点:
標準出力と標準エラーの違いは、標準出力はよくキャッシュされていますが、標準エラーはキャッシュされていません。標準エラーで印刷されたものはすぐに画面に表示されますが、標準出力で印刷されたものはあといくつの文字を蓄積してから一緒にプリントできます。アプリケーションで標準出力と標準出力を混ぜて使うとこの違いが見られます。全体的には、system.outは正常な出力、つまりプログラムが本当に出力したい内容に使用されます。system.errはエラーメッセージの出力に使います。つまり、あなたはもともと見ているものを期待していません。
テキストは『JAVA達人真経プログラミング基礎巻』第9章、269ページから来ています。