public class SampleClass
{
int a = 10; // loaded into memory for every object creation
int b = 11; // loaded into memory for every object creation
ExtraClass extraClass = new ExtraClass(); // loaded into memory for every object creation
static int c; // loaded when class is loaded into memory
{
// IIB
System.out.println(a);
System.out.println(b);
System.out.println(extraClass);
}
public SampleClass()
{
super();
// call to IIB
System.out.println("===============");
System.out.println(a);
System.out.println(b);
System.out.println(extraClass);
}
public static void main(String[] args)
{
SampleClass obj = new SampleClass();
}
}
class ExtraClass
{
}
a
とb
の両方は、オブジェクトが作成されたときにのみ読み込まれます。SampleClass
です。しかし私は自分のコードのどの部分がメモリにロードされているかをチェックしていましたか?私は自分の出力から何の結論も得られなかった。コード非static変数のどの部分をメモリにロードしますか?
10
11
[email protected]
===============
10
11
[email protected]
適用[JLSの一部](http://docs.oracle.com/javase/specs/jls/se8/html/jls-12。 html#jls-12.5) – RealSkeptic