• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:標準入力 System.in について)

標準入力 System.inについて

このQ&Aのポイント
  • 標準入力についての質問です。標準入力からデータを入力し、表示させるプログラムを作成したいと考えています。
  • 上記のソースコードでは、System.inという記述がありますが、これはjava.io.InputStreamのオブジェクトです。
  • また、System.inを使えるのは、java.langパッケージは明示的にimportしなくても使用できるためです。

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

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.2

>ということは、 >System.in は、InputStream のオブジェクトとして作りつけられているということなのでしょうか? はい、そうです。JavaのAPIドキュメントを見るとわかりますが、 クラスSystemの「フィールド」の中に、in、out、errがあります。 inはInputStream、outとerrはPrintStreamとして宣言されています。 なお、「フィールド」でも、通常のフィールドはnewの必要がありますが、 Systemのinやoutは、APIドキュメントに「すでに開いていて」とあるとおり、 プログラムが動いた時点でもう初期化とオープンが済んでいる約束になっているのです。 >でも、明示的に import しなくても使えるのは、java.lang 配下にあるからなんですよね…? そうです。「java.langの(publicな)クラスは自動的にインポートされる」ためです。

daisy_k
質問者

お礼

liar_adan さん、ご回答ありがとうございました。 大変参考になりました。 Java では、API がいろいろと便利なものを用意してくれていて、 それを利用することでプログラムが効率的に組めたりする、 ということは十分承知しているのですが… お恥ずかしながら、イマイチ API の有効的な使い方(調べ方)が分かっていません。 慣れの問題なのでしょうか、もっと頑張って勉強しようと思います。 ありがとうございました。

その他の回答 (1)

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

>それとも、in は System クラスのフィールド(=定数?) なので、使えるのでしょうか? >(java.lang のクラスである System クラスは、明示的に import しなくても使えるから) その通りです。System.in、System.outは、すでに作りつけなので newしなくても使えるのです。

daisy_k
質問者

お礼

liar_adan さん、早速のご回答ありがとうございます。 System.in が new 演算子で生成しなくても使える理由は分かりました。 もともと「作りつけ」なので、新たに生成する必要がない、ということですよね? ということは、 System.in は、InputStream のオブジェクトとして作りつけられているということなのでしょうか? でも、明示的に import しなくても使えるのは、java.lang 配下にあるからなんですよね…? 申し訳ありません、よろしければ補足説明頂けますでしょうか。 宜しくお願い致します。

関連するQ&A

専門家に質問してみよう