こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Java Silverサンプル問題について

Java SE 7 Programmer Iの資格取得に向け、勉強中です。
下記サンプル問題1ですが、「x y c g」と出力されるようですが、
どうして「y」が「c」より先に出力されるのでしょうか?
どうぞご教授の程、宜しくお願い致します。

------------------------
public class Sequence {
Sequence() { System.out.print("c "); }
{ System.out.print("y "); }
public static void main(String[] args) {
new Sequence().go();
}
void go() { System.out.print("g "); }
static { System.out.print("x "); }
}

投稿日時 - 2014-06-10 11:45:23

QNo.8631404

暇なときに回答ください

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

xはスタティックイニシャライザ
yはインスタンスイニシャライザ
cはコンストラクタ

といいます。
スタティックイニシャライザは、クラスのロード時に呼ばれます。
インスタンスイニシャライザは、コンストラクタの前に動作します。
よって、x、y、cの順に出力されます。

主に無名クラスのコンストラクタの代わりに使用するらしいです。が、使ったことはありません。
スタティックイニシャライザは、主にネイティブライブラリのロード処理に使用します。

参考URL:http://d.hatena.ne.jp/satosystems/20120905/1346805620

投稿日時 - 2014-06-10 23:57:55

お礼

teketon様

ご回答ありがとうございます。

インスタンスイニシャライザは初めて知りました。
ご説明いただきました内容ですっきり!理解できました。


参考URLも大変参考になりました。
ありがとうございました。

投稿日時 - 2014-06-16 10:33:52

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)