![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
いつもお世話になっております。
標準入力についての質問です。
標準入力からデータを入力し、そのデータを表示させる以下のプログラムを作りました。
------
import java.io.*;
class InputTest{
public static void main(String args[]) throws IOException{
String moji;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
System.out.print("文字列を入力してください。 文字 = ");
moji = br.readLine();
System.out.println("\n入力した文字列は" + moji + "です。");
}
}
------
上記のソースの「System.in」なのですが、私が参考にしているテキストには
「InputStream クラスのオブジェクト」という説明になっていました。
これまで、オブジェクトは new 演算を使って生成しないと使えないと思っていたのですが…
ここでは、事前に java.io を import しているから使えるのでしょうか?
それとも、in は System クラスのフィールド(=定数?) なので、使えるのでしょうか?
(java.lang のクラスである System クラスは、明示的に import しなくても使えるから)
いずれにしても、「java.lang.System.in が、java.io.InputStream のオブジェクト」
ということが理解できません。
分かりにくい説明で申し訳ありませんが、ご教授お願い致します。
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な)クラスは自動的にインポートされる」ためです。
liar_adan さん、ご回答ありがとうございました。
大変参考になりました。
Java では、API がいろいろと便利なものを用意してくれていて、
それを利用することでプログラムが効率的に組めたりする、
ということは十分承知しているのですが…
お恥ずかしながら、イマイチ API の有効的な使い方(調べ方)が分かっていません。
慣れの問題なのでしょうか、もっと頑張って勉強しようと思います。
ありがとうございました。
No.1
- 回答日時:
>それとも、in は System クラスのフィールド(=定数?) なので、使えるのでしょうか?
>(java.lang のクラスである System クラスは、明示的に import しなくても使えるから)
その通りです。System.in、System.outは、すでに作りつけなので
newしなくても使えるのです。
liar_adan さん、早速のご回答ありがとうございます。
System.in が new 演算子で生成しなくても使える理由は分かりました。
もともと「作りつけ」なので、新たに生成する必要がない、ということですよね?
ということは、
System.in は、InputStream のオブジェクトとして作りつけられているということなのでしょうか?
でも、明示的に import しなくても使えるのは、java.lang 配下にあるからなんですよね…?
申し訳ありません、よろしければ補足説明頂けますでしょうか。
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
同じクラスにならない確率を教...
-
A・B・Cクラスとは?
-
3年間同じクラスになる確率
-
eclipseのパッケージって何?
-
main()を持つクラスが2つ以上...
-
オブジェクト指向プログラミン...
-
IPアドレスのクラスAを取得して...
-
「天声人語」をインターネット...
-
進学校通ってたんですけど、眼...
-
体育祭クラス全員参加のムカデ...
-
クラスの行数は?
-
和暦クラスについて
-
クラスオブジェクトの参考書
-
C# テキストボックスにマウスが...
-
マイクロsdカードのV30と4Kどち...
-
日本工業規格について
-
配列の重複する値とその個数を...
-
ドキュメントクラスの取得方法
-
汎化と特化
-
Java「デフォルトのパッケージ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の重複する値とその個数を...
-
どこからも呼ばれていない無意...
-
java eclipse 型に解決できません
-
「天声人語」をインターネット...
-
main()を持つクラスが2つ以上...
-
1 つのヘッダファイルに複数の...
-
IPアドレスのクラスAを取得して...
-
同一パッケージにあるクラスが...
-
同じクラスにならない確率を教...
-
重複エラーを解決するには
-
共通で使う関数を集めたクラス...
-
3年間同じクラスになる確率
-
同じパッケージ、クラス名が含...
-
複数のクラスで共通した関数を...
-
A・B・Cクラスとは?
-
自作のクラスファイルがインポ...
-
ATLとMFCの違いは何でしょうか?
-
eclipse でクラスに色
-
コンボボックスのマウスホイー...
-
UMLのクラス図はmain()も含むん...
おすすめ情報