Рассмотрим следующий фрагмент кода в Java. Он не будет компилироваться.
package temppkg;
final public class Main
{
private String x;
private int y;
private void show()
{
String z;
int a;
System.out.println(x.toString()); // Causes a NullPointerException but doesn't issue a compiler error.
System.out.println(y); // Works fine displaying its default value which is zero.
System.out.println(z.toString()); // Causes a compile-time error - variable z might not have been initialized.
System.out.println(a); // Causes a compile-time error - variable a might not have been initialized.
}
public static void main(String []args)
{
new Main().show();
}
}
Почему члены класса (x и y), указанные в приведенном выше фрагменте кода, не выдают ошибку времени компиляции, даже если они явно не инициализированы, и для инициализации требуются только локальные переменные?