- Выберите утверждение TRUE.
- a) Этот код не скомпилируется. Возникнет ошибка:
Возможно, локальная переменная c не была инициализирована - b) Этот код скомпилируется, но если вы попытаетесь его запустить при этом возникнет следующее исключение во время выполнения:
NullPointerException - c) Этот код скомпилируется и запустится. Он отобразит ноль.
Код: Выделить всё
public class Runner{
public static void main( String [] args ){
int [] c;
met( c );
}
private static void met( int[] a ){
System.out.println( a.length );
}
}
Итак, вот мой вопрос: массивы являются ссылочными типами, верно? Если да, то почему целочисленный массив c выше не "указывает" на ноль, когда в приведенном ниже коде класс Sack имеет частную переменную экземпляра s, которой ДЕЙСТВИТЕЛЬНО присваивается значение null при вызове конструктора (что, как ни странно для меня, позволяет выполнить и распечатать строку 6 "
Код: Выделить всё
null
Если я ошибаюсь насчет того, что массивы являются ссылочными типами, то:
- Что на самом деле означает быть ссылочным типом?
- Какой «тип» представляют собой массивы?
- Что происходит в классе Runner, когда я объявляю int[] c? Разве c не должен «указывать» на null?
- В обоих примерах рассматриваемый массив не является «локальной» переменной. Но один работает, а другой нет. Что делает s локальной переменной? не относится к c? Быть экземпляром класса?