Код: Выделить всё
11. Select the TRUE statement.
a) This code will not compile.The error will be:
local variable c may not have been initialized
b) This code will compile but if you try to run it, the following run-time exception will occur:
NullPointerException
c) This code will compile and run. It will display a zero.
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? Быть экземпляром класса?