بلاک استاتیک، تنها یک بار در موقع load شدن کلاس (با اولین access به کلاس، کلاس load میشود) فراخوانی میشود. در درون این بلاک، معمولا initialization های پیچیدهتر (که در یک خط نمیتواند انجام شود) انجام میشود. مثال:
public class DateUtils
{
private static Map<String,String> months = new HashMap<String,String>();
static
{
months.put("01","farvardin");
months.put("02","ordibehesht");
// ...
}
}
هرچند کار بالا رو میتوان با یک تابع private و استاتیک نیز انجام داد:
public class DateUtils
{
private static Map<String,String> months = initializeMonths();
private static Map<String,String> initializeMonths()
{
Map<String,String> months = new HashMap<String,String>();
months.put("01","farvardin");
months.put("02","ordibehesht");
// ...
return months;
}
}