ちくやらアーカイブ

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

スポンサーサイト

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

変数初期化関係

● インスタンス変数

インスタンス変数は自動で初期化される。
	
boolean false
char '\u0000'
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
参照型 null




ただし、インスタンス変数でもfinal変数だったら自分で初期化が必要。
それをしないとコンパイルエラー。



● 配列変数の初期化

配列変数は生成時に自動的に初期化される。


boolean [] b = new boolean[3];
System.out.println(b[0]);
→false

int [] c = new int[3];
System.out.println(c[0]);
→0

float [] f = new float[3];
System.out.println(f[0]);
→0.0


String [] s = new String[3];
System.out.println(s[0]);
→null



● ローカル変数

ローカル変数は基本的に自分で初期化が必要。
ただ、ローカル変数は初期化しなくてもコンパイルエラーにはならないが、
初期化してないローカル変数を使おうとするとコンパイルエラーになる。


ローカル変数でstaticはつけることができない。



● その他

Class Date{int d;}

class Sample{
int x;
Date y;

public static void main(String [] args){
Sample s = new Sample();
System.out.println(s.x);
System.out.println(s.y);
}
}

これを実行すると
0
null
が表示される。
Date yが生成されてなさそうで、nullで初期化されている。
s.y.dだったらぬるぽだが、s.yはnullを参照しているのでnullが表示される。








Class Date{int d;}

class Sample{
public static void main(String [] args){
int x;
Date y;
Sample s = new Sample();
System.out.println(s.x);
System.out.println(s.y);
}
}

こっちだとコンパイルエラーになる。
理由は「初期化されていないのにs.xとs.yを使おうとしている」
注意するのは別に初期化しなくてもエラーにはならないということ。
初期化されていないのを使おうとするとエラーになる。





Class Date{int d;}

class Sample{
public static void main(String [] args){
Date [] da = new Data[3];
System.out.println(da);
System.out.println(da[0]);
System.out.println(da[0].d); //実行時にぬるぽ
}
}

配列変数で初期化される。この時はnullで初期化。
だからdaとda[0]は参照値であるnullがでる。





スポンサーサイト
  1. 2005/04/02(土) 13:49:01|
  2. 資格:SJC-P|
  3. トラックバック:0|
  4. コメント:0
<<識別子とリテラル | ホーム | 基本データ型と演算精度など>>

コメント

コメントの投稿

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

トラックバック

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

ルナーク

Category

Recent Comments

Recent Entries

Recent Trackbacks

Archives

Links

Search

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