私の友人の一人が、最初に静的変数または静的ブロックをロードするかどうか尋ねました。最初に読み込まれる静的変数または静的ブロックはどれですか?
私の答えは静的変数を指しています。
そこで彼は私に二つの式を与え、
それらの間の最初の方程式
public class Some {
public static void main(String args[])
{
System.out.println(Some.x);
}
static {
System.out.println(Some.x);
}
static int x=90;
}
O/P区別するために言った:0 90
第2式
public class Some {
public static void main(String args[])
{
System.out.println(Some.x);
}
static int x=90;
static {
System.out.println(Some.x);
}
}
を
O/P:90 90
バイトコードを逆コンパイルしようとしたところ、上記の両方の式で同じことがわかりました。 それらを区別するのに手伝ってください。 静的変数が初期化されると混乱します。
スタティックスタッフは、クラス内で定義されている順番で順番に実行されます。 –
バイトコードは同じですか?私は宣言が異なる順序で出現することを期待していたでしょうし、@Sudhanshuが指摘しているように、宣言の順序は重要です。 –
@PatriciaShanahan ya両方の方程式のバイトコードは同じです。 – Hablu