何をしますか:
System.in.read()
戻る ?ドキュメントには次のように書かれ ています:
戻り値:データの次のバイト、またはストリームの終わりに達した場合は-1。
しかし、例えば、私が入力した場合:10
私は戻ってき49
ます。何故ですか ?
49
charのASCII値です1
。これは最初のバイトの値です。
コンソールまたは端末で入力したときに生成されるバイトのストリームには、3バイトが含まれています(私のMacでは、システムによっては、10ではなく10、12または12で終わる場合があります)。10Enter{49,48,10}
したがって、単純なスニペットの出力
int b = System.in.read();
while (b != -1) {
System.out.println(b);
b = System.in.read();
}
10を入力してEnterキーを押した後、(私のマシンでは)
49
48
10
System.in.read()
1 バイトだけを読み取ります。
49は1のUnicodeポイント値です。
印刷してみてください:
System.out.println((char)49);
これにより、より理解を深めることができます。
を入力する10
と、整数としてではなく、文字列、またはより正確にはバイト配列として読み取られます。
49 は、文字の ASCII コードです1
。