Локальные переменные не инициализируются по умолчанию.
Примитивные типы –инициализируются нулями. Ссылочные значения поля класса инициализируются – null. Инициализировать поля можно:
1) явно
public class Init {
byte b = 47;
char ch = ‘x’;
Depth d = new Depth ();
}
2) инициализация конструктором
public class Counter {
int i;
Counter () {i=7;}
}
…
new Counter (); // в этот момент i получит 7, но перед этим i=0.
Порядок инициализации
Переменные-поля при явной инициализации инициализируются до вызова любого метода -даже конструктора (несмотря на порядок описания внутри класса). Очередность инициализации определяется порядком следования переменных-полей внутри класса.
Статические данные инициализируются при необходимости:
1) при создании первого объекта;
2) при первом обращении к статическим данным класса