8

このコードを試してください -

public class WhitespaceTest
{
    public static void main(String[] args)
    {
        int x = 0;
        char c = (char) x;
        System.out.println("c-->"+c+"<---this doesn't print?");
    }
}

出力は -

c-->

System.out.println() が ASCII コード 0 で終了するのはなぜですか?

Windows 7のJCreator LEでこれを試しました。

4

2 に答える 2

18

それはあなたのコンソールが何をするか(または他の何を扱っているかSystem.out)に依存します。System.outすべての情報が問題なく伝播され、コンソールが U+0000 に特別な意味を持たない場合は、すべて問題ありません。ただし、多くの UI コントロールそれを終了文字として扱います。これは Java の「せい」ではなく、UI コントロール自体に問題があります。

(参考までに、Windows 7 の Windows コマンド プロンプト内でそのコードを実行しても問題ありません。)

于 2012-06-18T15:34:32.010 に答える
2

C/C++ スタイルの文字列では、文字列の末尾は、終端のヌル文字 (この場合のように値が 0 の文字) の位置によって決まります。ほとんどの場合、System.out.println()呼び出しは文字列を OS に逐語的に渡します。OS は、文字列がヌル文字で終了したと見なし、その時点までのみを出力します。

于 2012-06-18T15:35:28.590 に答える