• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:System.out.printlnの意味がよくわかりません。)

System.out.printlnの意味と使い方

このQ&Aのポイント
  • System.out.printlnとはJavaの標準出力にテキストを表示するメソッドです。
  • System.out.printlnはPrintStreamクラスのoutインスタンスを使用しています。
  • Systemから他のパッケージにあるメソッドを呼び出す理由や他の呼び出し方についても考えてみましょう。

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

あなたは「フィールド」「インスタンス」「パッケージ」「メソッド」などをどのように認識しているのでしょうか? そして, 「オブジェクト指向」についてどの程度わかっているのでしょうか? なんとなく曖昧になっているような気がします. まあ, 私自身も「オブジェクト指向とは何か」と聞かれると答えに困るわけですが....

その他の回答 (3)

  • ketuago65
  • ベストアンサー率50% (13/26)
回答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()をつかっておいて、分かるようになってから考えればいいと思います。 頑張ってください。

  • e00083
  • ベストアンサー率31% (25/80)
回答No.3

その疑問を本気で解決するなら、Sunからソースが公開されているので、それを読めば疑問は解けると思いますが。

noname#116136
noname#116136
回答No.1

まずprintln() がStatic な関数であれば呼び出せます。上記のエラーですと、どうやらそうではないようですね。(ドキュメントを確認ください) この場合、コンソールに対する出力用としてPrintStream が最初から準備(インスタンス化されていて、出力先は標準出力コンソールに設定されている)という訳です。System.out がまさにそれです。 いわゆるStream 系は出力先やら設定を保持する必要があるので、オブジェクトをインスタンス化して使う事を想定しています。そしてSystem.out はデフォルトで用意(つまりJava サイドで勝手にインスタンス化)されているって事です。 あなたが別の出力先(例えばファイルなど)を指定したいのなら、インスタンス化したオブジェクトのprintln() を呼ぶ事になるでしょう。

関連するQ&A