Назад к вопросам
JuniorТеорияЧасто
Что произойдёт при компиляции и запуске программы?
public class Main {
public static void main(String[] args) {
Point p = new Point();
Point q = p;
p = null;
System.out.println(q.x);
System.out.println(p.x);
}
}
class Point { int x; }Выведет 0, затем исключение NullPointerException
- Ждать исключение сразу:
p = nullстирает ссылку только вp, аqпо-прежнему ведёт к точке, поэтому сначала печатается0. - Ждать
0дважды или ошибку компиляции: чтение поля черезnullбросаетNullPointerExceptionпри запуске, а javac этого не проверяет.
- Как изменить последнюю строку, чтобы при
p, равномnull, она ничего не печатала, а не бросала исключение? - Что напечатает
System.out.println(p), еслиpравнаnull?