ここから本文です

javaにおけるSystem.out.printlnについてなんですが・・・

nir********さん

2010/10/614:41:11

javaにおけるSystem.out.printlnについてなんですが・・・

javaの授業なんですが、System.out.plintlnにおけるoutとprintlnの働きがいまいちわかりません。インスタンスメンバ?スタティックメンバ?うーん・・・という感じです。クラスとインスタンスについてはわかるのですが、メンバ?・・・。

どなたか詳しい方、outとprintlnの働きとインスタンスメンバとスタティックメンバについて教えていただけないでしょうか?

閲覧数:
611
回答数:
1

違反報告

ベストアンサーに選ばれた回答

mar********さん

編集あり2010/10/616:06:16

■メンバとは
メンバ、というのは、別の言い方で言うと、
クラスのフィールドです。
class Hoge{
int a;
}
aはHogeクラスのメンバであり、フィールドです。
static修飾子の付いていないメンバ(フィールド)のことを、
「インスタンスフィールド(メンバ)」、とも言います。
インスタンスフィールドにアクセスする場合は、Hogeクラスのインスタンスを作り、
インスタンスからアクセスします。

Hoge hoge = new Hoge();
hoge.a = ...
(インスタンス.インスタンスフィールド名)

■staticメンバとは
staticメンバというのは、そのメンバがstaticであるメンバです。
static修飾子が付いたメンバですね。
class Hoge{
//static修飾子が付いてる
static int a;
}
この場合、aはHogeクラスのstaticメンバであり、staticフィールドです。
staticメンバには、以下のようにアクセスできます。
インスタンスフィールドのように、インスタンスを作成する必要はありません。

Hoge.a
(クラス名.static変数名)

■本題
本題です。
System.out.println
は、
Systemクラスのstaticメンバ(staticフィールド)にあるoutと言う名前の変数
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/System.html
を参照し、(outはPrintStreamクラスのインスタンスだから)PrintStreamクラスのprintlnメソッドを呼び出しています。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/PrintStream.h...


つまり、こういう風に分解できます。
PrintStream ps = System.out;
ps.println();

Systemクラスのなかは、大まかに言うとこうなっていると言う事です↓。

class System{
public static PrintStream out ;
}

もっと知りたい場合は、Systemクラスのソースがjdkに入ってますので、
見てみるといいですよ。

■インスタンスメンバとスタティックメンバの違い
インスタンスメンバとスタティックメンバは、
そのメンバがインスタンスに属するものか、クラスに属するものかの差があります。

・インスタンスメンバ
インスタンスメンバは、「インスタンス」に属するメンバです。
インスタンスごとに異なるメンバといってもいいでしょう。
人クラスの名前、人クラスの年齢のように、
人一人ひとりに固有の情報はインスタンスメンバとして定義します。
各インスタンスに付き、一つなのがインスタンスメンバです。


・スタティックメンバ
スタティックメンバは、そのクラスに属するメンバです。
そのクラス全体で一つの情報を表すときに使用します。
人クラスがあったとすれば、人口などがそうです。
人口は人一人ひとりには固有ではありませんね。
人クラス全体で管理するフィールドです。
クラス全体で一つなのが、スタティックフィールドです。

お解りいただけましたでしょうか。

質問した人からのコメント

2010/10/13 13:13:01

降参 詳しい解説ありがとうございました。助かりました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる