System.out.printlnの意味がよくわかりません。

色々と参考書などを読むと、「Systemのフィールド変数outは、PrintStreamクラスのインスタンスを参照している。」との記述がありました。
ならばと、直接io パッケージからPrintStream 、outを呼び出すため、
“java.io.PrintStream.out. println();”と書きましたが、「outが不可視です」とのエラーが出ます。
このコマンドのどこが間違っているのでしょうか。

また、何故、Systemから、他のパッケージにあるメソッドを呼び出すのでしょうか。
わざわざSystemから、ioパッケージにあるout 、println() を呼び出す必要があるのでしょうか。
他の呼び出し方はないのでしょうか。;

このQ&Aに関連する最新のQ&A

A 回答 (4件)

あなたは「フィールド」「インスタンス」「パッケージ」「メソッド」などをどのように認識しているのでしょうか? そして, 「オブジェクト指向」についてどの程度わかっているのでしょうか?


なんとなく曖昧になっているような気がします. まあ, 私自身も「オブジェクト指向とは何か」と聞かれると答えに困るわけですが....
    • good
    • 3

まず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()をつかっておいて、分かるようになってから考えればいいと思います。

頑張ってください。
    • good
    • 3

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

    • good
    • 0

まずprintln() がStatic な関数であれば呼び出せます。

上記のエラーですと、どうやらそうではないようですね。(ドキュメントを確認ください)

この場合、コンソールに対する出力用としてPrintStream が最初から準備(インスタンス化されていて、出力先は標準出力コンソールに設定されている)という訳です。System.out がまさにそれです。

いわゆるStream 系は出力先やら設定を保持する必要があるので、オブジェクトをインスタンス化して使う事を想定しています。そしてSystem.out はデフォルトで用意(つまりJava サイドで勝手にインスタンス化)されているって事です。

あなたが別の出力先(例えばファイルなど)を指定したいのなら、インスタンス化したオブジェクトのprintln() を呼ぶ事になるでしょう。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QOperation system not foundとは?

 富士通ノートパソコンNB16CAでWINDOWSXPを使っていますが、AVGが巡回中に突然、WINDOWSXPがなくなって(?)このメッセージがでます。いったいこのメッセージは何を意味していて、パソコンは、どういう状態になっているのでしょうか?
 何とかセーフティモードで立ち上げてシステムの復旧をして使えているのですが、またなるのではないかと心配しています。そのうち、パソコンが壊れるのではないかと不安です。なにぶん、無知なもので、どうか、これからの対策もありましたら教えていただけたらと思います。

Aベストアンサー

>Operation system not found

 これは、HDが認識できないという意味ですね

 原因は2つです。HDの接触が悪くなってるか、HDが壊れかかっているか、どっちかです。

 また、HDが熱を持ったときに、なる事も有りますし、傷が入って読み込めない事も有りますし...

 どちらにしても、早めに大切なデータは早めに、保存しておく事です。

QSystem.err. printlnとSystem.out.printlnはどう違うんでしょうか?

 初心者なので今までSystem.out.println文しか見たことがなかったのですが、テキストで急にIOExceptionのcatch文の中にSystem.err. println文が出てきました。
 errをoutに書き換えてもエクリプスではチェックされなかったのですが、どういう違いがあるのでしょうか?

Aベストアンサー

出力先が「標準出力」か「標準エラー出力」かの違いです。

Windows環境ですと、
標準出力はコンソール(コマンドプロンプト、もしくはDOS窓のこと)に出力されます。
標準エラー出力も同じくコンソールに出ます。

ただし、リダイレクト機能を使ったときに違いが表れます。
リダイレクトとは、
>program > a.txt
のように、標準出力をするプログラムの出力を、
テキストファイルに書き出すことです。
Javaでも、コンソールへのテキスト出力をするプログラムだったら、
>java nantoka > a.txt
で、a.txtにテキストが書き込まれると思います。
試してみてください。

それで、「標準エラー出力」の方は、
リダイレクトをしてもリダイレクトされず、
コンソールにテキストが書き出されます。
標準エラー出力は、通常、エラーが起こったときの
表示に使うもので、
これまでリダイレクトされてしまうと、
ユーザーがエラーを検知できなくなるからです。

ためしに
System.out.println("ABCD");
System.err.println("いろはに");
System.out.println("EFG");
System.err.println("ほへと");
と出力するtestプログラムを作って、

>java test

>java test > a.txt
として、動作の違いをたしかめてみてください。

(付記:どうしてもエラー出力をリダイレクトしたい場合、
>のかわりに2>を使うことによって可能です。
Linux系ではシェルによって違いがあります)

出力先が「標準出力」か「標準エラー出力」かの違いです。

Windows環境ですと、
標準出力はコンソール(コマンドプロンプト、もしくはDOS窓のこと)に出力されます。
標準エラー出力も同じくコンソールに出ます。

ただし、リダイレクト機能を使ったときに違いが表れます。
リダイレクトとは、
>program > a.txt
のように、標準出力をするプログラムの出力を、
テキストファイルに書き出すことです。
Javaでも、コンソールへのテキスト出力をするプログラムだったら、
>java nantoka > a.txt
で、a.tx...続きを読む

Qvolumeとは何ですか?

Yahooファイナンスでチャートを見るとチャートの下にvolumeなる棒グラフがありますがこれは何を表していますか?

Aベストアンサー

売買高(出来高)と言い、日足チャートなら1日に売買が成立した株数の事です。
1000株の売り注文を出した人がいて、それを誰かが買うと出来高1000株となります。出来高の多い銘柄は売買が活発で、売り買いしやすいですが、出来高が少ない銘柄だと売ろうと思ってもすぐに売れなかったり、値動きが荒くなる事があります。

QSystem.out.printlnの出力先

System.out.printlnはデフォルトでコンソール出力になっていますが、ファイルなどへ出力先を変更することはできますか?

Aベストアンサー

System.outは「標準」出力を示すオブジェクトです。
デフォルトではコンソールになっています。
そこで、この「標準」を変更するために
System#setOut(PrintStream out)
が用意されています。

PrintStream ps=new PrintStream("hoge.txt");
System.setOut(ps);
System.out.println("Hello");
ps.close();

などとすればファイルに出力されます。

Qchiral information とは?

To go beyond such stoichiometric chiral information transmission, catalytic turnover is required.

という英語を訳そうとしています。ここで

"chiral information transmission"

とあるのですが、直訳するとキラル情報ですよね?

化学量論的にキラル情報が移動することを超えるために、触媒的なターンオーバー数が必要?

キラル情報という言葉があるのか、またその意味を教えてください。

Aベストアンサー

化学で「キラル情報」という用語は使います。
同じ種類の原子が結合してても立体的な位置関係が違うものがあることを
キラルといいます。手袋や靴の右・左のようなものです。
手袋や靴は通常一対で使いますが、ネジは、ほとんど右ネジですよね。

反応で、原料物質が右100%のとき、反応生成物が
→右100%のとき・・キラル情報は完全にそのまま保存されるといいます。
→右50%+左50% のとき・・ キラル情報は完全に失われるといいます。
→左100%のとき・・キラル情報は完全に反転して保存されるといいます。
(キラル情報は、反応前後など、分子間で行なわれるものです。)

キラル情報が失われそうな反応で、相性のいいキラルな触媒を用いて
キラル情報を保存できます。(右手と右の手袋のように)
(原理的には、2001年に野依良治先生がノーベル化学賞を受賞した
「キラル触媒による不斉反応の研究」と同じです。)
ただし、触媒が100倍反応をしやすくするとしても、触媒以外の反応が
1/100起こるので、キラル情報が失われる反応も起こるわけです。
したがって、キラル情報の保存の効率もあるわけです。


訳しているのは、↓ですよね。
Catalytic enantioselective reactions driven
by photoinduced electron transfer
一応、前の数センテンスは、読みました。

化学で「キラル情報」という用語は使います。
同じ種類の原子が結合してても立体的な位置関係が違うものがあることを
キラルといいます。手袋や靴の右・左のようなものです。
手袋や靴は通常一対で使いますが、ネジは、ほとんど右ネジですよね。

反応で、原料物質が右100%のとき、反応生成物が
→右100%のとき・・キラル情報は完全にそのまま保存されるといいます。
→右50%+左50% のとき・・ キラル情報は完全に失われるといいます。
→左100%のとき・・キラル情報は完全に反転して保存されるといいます。
(キラル...続きを読む

Aベストアンサー

LN=LINE

lineの略ではないでしょうか
begin a new line (行を改める)で
改行ではないかと

Qこの場合のsystemとは?

Most of the measurements were made at the lowest temperature of the system, about 0.4K.
上記の文章中でのsystemがどういう和訳になるのか分かりません。
教えてください。よろしくお願いします。

Aベストアンサー

the system は「測定系」ということでしょう.
何かのサンプルを低温にして dI/dV を磁場を変えながら測定しているのですが,
その測定系で実現できる温度が 0.4K ということです.

0.4K が最低到達温度というと,液体ヘリウム3を使って冷却していると思われます
(希釈冷凍ではなさそう).
超伝導体のジョセフソン効果関連の実験かな?
他にももちろん可能性はありますけれど.

QSystem.out.println(new 文)て?

javaを勉強しています。カレンダーを作ろうと思い、以下のURLのカレンダーのコードを勉強していたのですが、タイトルのSystem.out.println(new文)の意味が分かりません。
下記のコードで言うと、;のつく文では一番下の文です。
よろしくお願いします。

http://www7a.biglobe.ne.jp/~java-master/samples/datetime/MonthlyCalendar.html

Aベストアンサー

>System.out.println(new文)の意味が分かりません。
System.out.println( (new MonthlyCalendar(currentYear, month)).toString() );
という意味。マニュアルくらい読もうぜ。

QPCV(Packed cell volume)とは何ですか?

多分とても初歩的な事だと思うのですが、この用語の意味を教えてください。
文献にPCVという略語が出てきました。
色々と調べてみると、どうやらPacked cell volumeという用語の略のようで、回収した細胞の量を示す単位らしいのですが、この量は一体どうやって測るものなのでしょうか?

Aベストアンサー

一般的にはヘマトクリット値と呼ばれているものと同じです。
血液を細い管に入れて遠心分離すると細胞成分と血漿成分に分離しますが、これがどれだけの割合になるかで測ります。脱水だと細胞成分が多くなったりします。

QJSPやサーブレットでSystem.out.println()などでコンソールに出力できますでしょうか?

はじめまして。
質問タイトルの通りです。よろしくお願いします。

Aベストアンサー

サーブレットではそのまま
System.out.println()を
JSPでは
<%= System.out.println() %>(←少し間違えがあるかも知れません)
と記述すれば、できます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報