"Hello, Amigo! Saya dengar Rishi menerangkan sesuatu yang baru dan menarik kepada awak?!"

"Betul, Kim."

"Topik saya juga tidak kurang menariknya. Saya ingin memberitahu anda tentang cara kelas dimuatkan ke dalam ingatan."

Kelas dalam Java ialah fail pada cakera yang mengandungi bytecode, yang disusun kod Java.

"Ya saya ingat."

Mesin Java tidak memuatkannya jika tidak perlu. Sebaik sahaja terdapat panggilan ke kelas di suatu tempat dalam kod, mesin Java menyemak untuk melihat sama ada ia dimuatkan. Dan jika tidak, maka ia memuatkan dan memulakannya.

Memulakan kelas melibatkan pemberian nilai kepada semua pembolehubah statiknya dan memanggil semua blok permulaan statik.

"Itu nampaknya serupa dengan memanggil pembina pada objek. Tetapi apakah blok permulaan statik?"

"Jika anda perlu melaksanakan kod kompleks (contohnya, memuatkan sesuatu daripada fail) untuk memulakan objek, kami boleh melakukannya dalam pembina. Walau bagaimanapun, pembolehubah statik tidak mempunyai peluang ini. Tetapi memandangkan keperluan masih kekal, anda boleh tambah blok atau blok permulaan statik pada kelas. Ia pada asasnya bersamaan dengan pembina statik."

Begini rupanya:

Kod Apa sebenarnya yang berlaku
class Cat
{
public static int catCount = 0 ;
public static String namePrefix;

static
{
Properties p = new Properties();
p.loadFromFile("cat.properties");
namePrefix = p.get("name-prefix");
}

public static int maxCatCount = 50;

static
{
Properties p = new Properties();
p.loadFromFile("max.properties");
if (p.get("cat-max") != null)
maxCatCount = p.getInt("cat-max");
}

}
class Cat
{
public static int catCount;
public static String namePrefix;
public static int maxCatCount;

//Static constructors aren't allowed in Java,
//but if they were, everything
//would look like this
public static Cat()
{
catCount = 0;

Properties p = new Properties();
p.loadFromFile("cat.properties");
namePrefix = p.get("name-prefix");

maxCatCount = 50;

Properties p2 = new Properties();
p2.loadFromFile("max.properties");
if (p2.get("cat-max")!=null)
maxCatCount = p2.getInt("cat-max");
}
}

Ia sama seperti apa yang berlaku apabila pembina dipanggil. Saya juga telah menulisnya sebagai pembina statik (tidak wujud).

"Ya, saya faham."

"Sangat bagus."