Главная » Статьи » Java » Java Ranger Basic

День 18/21
Variables

Local Variables & Instance Fields Default Values

Поля (instance fields, fields) в Java по умолчанию инициализируются так: 7 примитивных типов = 0, только boolean = false, а ссылочные типы = null. Но это не относится к локальным переменным.
В Java компилятор не пропускает чтение неинициализированных локальных переменных. Это сделано для того, чтобы не прочитать случайные биты (которые могли при выделении памяти под локальную переменную остаться от предыдущей программы).
Есть три варианта поведения с неинициализированной переменной:
Там мусор – так действует С++;
Ее нельзя читать, компилятор запрещает – так работают локальные переменные в Джаве;
Виртуальная машина принудительно обнуляет все неинициализированные нами переменные – так поступает Джава относительно полей объектов.

Разница между полями и локальными переменными – StackOwerflow Link.

varargs

Начиная с 5 версии, в Java появились varargs (variable argument), аргументы переменной длины. Это – синтаксический сахар.
Синтаксический сахар – это дополнения синтаксиса языка программирования, которые не добавляют новых возможностей, а делают использование языка более удобным для человека.
С использованием varargs Без использования varargs

public static void main(String args) {
Node tail = genIter(0, 1, 2, 3);
}

public static Node genIter(int... values) {
...
}

public static void main(String args) {
Node tail = genIter(new int {0, 1, 2, 3});
}

public static Node genIter(int values) {
...
}

Если в сигнатуре метода несколько параметров, то varargs всегда должен стоять последним.
vararg также может быть нулевым. При этому arr – это будет ненулевой массив нулевого размера. То есть varagrs – это значения от нуля и больше.
Если в методе нужно получать от двух int и больше, то можно увидеть такой трюк:

void f(int first, int second, int... other) {}

null

null – нулевой указатель в Java.
Если класс Object является суперклассом для всех классов, то есть специальный тип, который является потомком всех классов (суперпотомком). Есть всего один элемент этого типа – это null. Это объяснение, почему один и тот же null можно присвоить любому типу. Поэтому null == null.
В книгах об этом не говорят, но в спецификации Java написано.

Null Object

Иногда перед программистом стоит выбор – что вернуть, если таблица/строка пустая: null или пустую таблицу/строку (пустая строка – “”). И то, и другое логически соответствует, что «ничего нет». Предпочтительно всегда возвращать пустую таблицу/строку. Эта идиома (некоторые считают шаблоном) называется Null Object.
Null Object – это готовый объект, который соответствует null, но не null. Null Object хорош тем, что у него есть методы (такие как size(), hashCode(), toString()). Таким образом, если мы возвращаем Null Object, мы не получаем NullPointerException, и мы можем не различать ситуацию, когда объект пустой и когда не пустой.



В следующей теме мы рассмотрим: Serialization

Источник: http://becomejavasenior.com/courses/?utm_source=Java+Email+Courses&utm_campaign=aa710df388-JavaRangerBasicIntro&utm_medi
Категория: Java Ranger Basic | (06.10.2015) W
Просмотров: 310 | Теги: Basic, ranger, java | Рейтинг: 0.0/0
Всего комментариев: 0
avatar