System.out.printlnの意味がよくわかりません。
色々と参考書などを読むと、「Systemのフィールド変数outは、PrintStreamクラスのインスタンスを参照している。」との記述がありました。
ならばと、直接io パッケージからPrintStream 、outを呼び出すため、
“java.io.PrintStream.out. println();”と書きましたが、「outが不可視です」とのエラーが出ます。
このコマンドのどこが間違っているのでしょうか。
また、何故、Systemから、他のパッケージにあるメソッドを呼び出すのでしょうか。
わざわざSystemから、ioパッケージにあるout 、println() を呼び出す必要があるのでしょうか。
他の呼び出し方はないのでしょうか。;
No.1
- 回答日時:
まずprintln() がStatic な関数であれば呼び出せます。
上記のエラーですと、どうやらそうではないようですね。(ドキュメントを確認ください)この場合、コンソールに対する出力用としてPrintStream が最初から準備(インスタンス化されていて、出力先は標準出力コンソールに設定されている)という訳です。System.out がまさにそれです。
いわゆるStream 系は出力先やら設定を保持する必要があるので、オブジェクトをインスタンス化して使う事を想定しています。そしてSystem.out はデフォルトで用意(つまりJava サイドで勝手にインスタンス化)されているって事です。
あなたが別の出力先(例えばファイルなど)を指定したいのなら、インスタンス化したオブジェクトのprintln() を呼ぶ事になるでしょう。
No.2ベストアンサー
- 回答日時:
あなたは「フィールド」「インスタンス」「パッケージ」「メソッド」などをどのように認識しているのでしょうか? そして, 「オブジェクト指向」についてどの程度わかっているのでしょうか?
なんとなく曖昧になっているような気がします. まあ, 私自身も「オブジェクト指向とは何か」と聞かれると答えに困るわけですが....
No.4
- 回答日時:
まずAPIを読めば書いてありますが、PrintStreamのフィールドのoutはアクセス修飾子がprotectedです。
つまりPrintStreamを継承したクラスからしかアクセスできません。
そのためPrintStream.outと記述してもoutが見ることができないと怒られます。
また、System.outが参照しているのはPrintStreamのインスタンスでSystem.out.println()というのはPrintStreamnクラスのprintln()というメソッドを呼び出しています。
上のような記述だとPrintStreamクラスのフィールドのoutが参照しているインスタンスのprintln()メソッドを呼び出すという意味になります。
しかしながらPrintStreamクラスのフィールドのoutはOutputStreamクラスのインスタンスを参照しています。
このOutputStreamクラスにはprintln()メソッドは定義されていません。
したがってoutが例え可視の状態にあってもprintln()なんてないから呼び出せませんとコンパイラにエラーを出されてしまいます。
二番目の質問に対してですが、恐らくパッケージに対しての認識がちょっと間違っていると思いますので、参考書を読みながらしっかり理解されることをお勧めします。
SystemからPrintStreamのprintlnを呼び出すのは簡単に標準出力を行うためです。
PrintStreamのインスタンスを作ってprintln()を呼び出してという作業を自分でしなくてもSunが準備してくれたものを使えば簡単にできますよということです。
オブジェクト指向には一回作ったものを再利用しようという考え方があります。
よく使う処理を毎回毎回プログラマが作っていたら面倒ですよね?
それを回避するために最初から簡単にできるようなものをSunが作ってくれたってことです。
これらを理解するにはオブジェクト指向やJavaに対する知識がある程度必要なので、とりあえず今はおとなしくSystem.out.println()をつかっておいて、分かるようになってから考えればいいと思います。
頑張ってください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- 英語 この英文の意味を教えてください 3 2023/07/07 20:36
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- 英語 home where you've rented one out for a week? 4 2022/08/06 09:13
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- 英語 文の構造をご教示ください 2 2023/01/01 18:03
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- 英語 私は一週間のうち三日間働いています の英訳について I work three days out of 2 2023/01/28 11:32
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
Systemクラスはインスタンスが作れない?
Java
-
Excel関数で休日出勤日数を計算
Excel(エクセル)
-
newしないインスタンス?実体化しなくてもいいの?
Java
-
-
4
インスタンス生成で、○○.xxx();といった手法の意味
Java
-
5
IF関数で、時間を条件にしたい場合の式について
Access(アクセス)
-
6
複数の休憩時間がある場合の休憩時間の算出方法
Excel(エクセル)
-
7
標準入力 System.in について
Java
-
8
IOException ってどういうときに起こるのでしょうか?
Java
-
9
public static void main (String args[])
Java
-
10
System.out.print
Java
-
11
COUNT関数で0.5カウントはできますか?
Access(アクセス)
-
12
System.out.printlnの出力先
Java
-
13
シンボルが見つかりませんというエラーが理解できません。
Java
-
14
エクセルで勤怠管理表で休憩時間を計算させるには
Excel(エクセル)
-
15
エクセルで勤怠表 土日祝と平日と分けてそれぞれの合計を出したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Log4jで機能毎に別ファイルへ出...
-
flush()とclose()について
-
Javaで改行などが出来ないのです。
-
System.err. printlnとSystem.o...
-
1~100までの数字を表示し、か...
-
system.out.printが出力されない
-
StringBufferで改ページ処理を...
-
Eclipseのコンソールを常に表示...
-
JAVAのServletで、画像表示につ...
-
eclipseでコンソールのピン留め...
-
PrintWriterとBufferedWriterの...
-
1~100までの数字を表示したい
-
switch分が機能しません。
-
数字文字列をパック10進数に変...
-
HashMapの内容
-
ダブルクォーテーション(””)...
-
VBAでEUC-JPのHTMLソースを取得...
-
javaのwhile文で九九の表
-
一定のスペースを空けて端を揃...
-
VBSエラー"オブジェクト型の変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.err. printlnとSystem.o...
-
1~100までの数字を表示し、か...
-
Javaで改行などが出来ないのです。
-
Log4jで機能毎に別ファイルへ出...
-
1~100までの数字を表示したい
-
flush()とclose()について
-
System.out.printlnの出力先
-
ジャバスクリプトについて。
-
system.out.printが出力されない
-
Eclipseのコンソールを常に表示...
-
System.out.printlnの意味がよ...
-
一定のスペースを空けて端を揃...
-
switch分が機能しません。
-
Tomcatが無応答となる現象が起...
-
javaのwhile文で九九の表
-
Javaの問題なのですが、 永久ル...
-
JavaScriptの変数をjavaのメソ...
-
テキストエリアで改行する
-
StringBufferで改ページ処理を...
-
VBSエラー"オブジェクト型の変...
おすすめ情報