ちくやらアーカイブ

このブログは気分よって構成されています。 BGMも気分で流してます。 あなたの忍耐に感謝します。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告|
  3. トラックバック(-)|
  4. コメント(-)

static

メソッドやクラスを特定のインスタンスだけではなく
クラス全体に適用されることを示すために使う。

staticメソッドはstatic変数をアクセスするために使う。
また他のstaticメソッドを呼び出すためにも使う。
ただし、非staticの変数やメソッドを使うには
それらに関するインスタンスを指定する必要がある。
(つまり、クラス参照でやりとりするということ)


class Foo{
static int count = 0;
public Flag(){
count++;
}

public static void main(String [] args){
new Flag();
new Flag();
new Flag();
System.out.println(count + "");
}
}

を実行すると
3
がでる。

staticは一番最初に呼ばれた時は初期化して
二度目以降は値そのままになっているという話。

ここで、
static int count = 0;

int count = 0;
だったら、System.out.println(count + "");でエラーになる。
mainメソッドがstaticなのに対してcountがただのインスタンス変数なので
アクセスできない。




●static初期化子(イニシャライザ)

クラスが最初にロードされた時に処理を行うために使用する。
逆に言うと、一度しか実行されない。

static{

}
で記述する。


class Question{
static int i = 1;
static{
++i;
}

public static void main(String [] args){
plus(i, 5);
display(i);
}

static void plus(int n, int m)
{
n += m;
}

static void display(int n){
System.out.print(n);
}

static{
++i;
}
}

を実行すると、
まずstatic初期化子が先に実行されるので、
i=3
plusメソッドは意味ないので
結果として"3"が表示される。



・メソッド内でstatic変数はつかえない。
 つまり、ローカル変数でstaticはアウツ。

スポンサーサイト
  1. 2005/04/02(土) 14:10:25|
  2. 資格:SJC-P|
  3. トラックバック:0|
  4. コメント:0
<<配列変数 | ホーム | mainメソッド>>

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://runark.blog6.fc2.com/tb.php/17-e2f5d90f

ルナーク

Category

Recent Comments

Recent Entries

Recent Trackbacks

Archives

Links

Search

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。