• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Java ストリームでの文字列の扱いについて)

Javaストリームでの文字列の扱いについて

このQ&Aのポイント
  • Javaのストリームを勉強している際に、文字列の扱いについて疑問が生じました。
  • 具体的には、ユーザが入力した文字をint型の変数に代入する仕組みや、read()メソッドの戻り値について疑問があります。
  • また、出力時に文字として表示するためにchar型にキャストされる仕組みについても教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

>System.out.print((char)b); >とありますが、変数bには数値が入っていると考えられます。 >これは、変数bの整数が、(char)でキャストされる事によって、 >再び、文字に「変換」されているのでしょうか? これはとても手抜きなやり方です。 標準入力から読み込まれた文字列が「1文字=1バイト」で表せる文字だけに限られていてしかもその文字コードがUnicodeの文字コードと一致する場合だけ期待した出力が得られます。 ASCIIの範囲内の英数字や記号類であればこの条件を満たすため、たまたま動いているように見えるだけです。

その他の回答 (1)

  • helonpa
  • ベストアンサー率38% (108/278)
回答No.1

> (1)ユーザが入力した文字(整数ではない)が、何故、int型の変数に代入出来るのでしょうか? http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/InputStream.html#read() 「System.in.read()」(InputStream)は標準入力をバイトで扱い、戻り値がint型だからです。 また標準入力は文字とは限りません。 > (2)read()メソッドはint型の戻り値を持つようですが、EOFの"-1"以外の時は、  どんな数値が返されているのでしょうか? リファレンスを読んだ方が正確で分かりやすいですね。 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/InputStream.html#read() > これは、変数bの整数が、(char)でキャストされる事によって、 > 再び、文字に「変換」されているのでしょうか? キャストは単に型を合せるだけですが、文字に変換といえば、まぁそうですね。 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/PrintStream.html#print(char)

関連するQ&A