Null или не null?

Пишем класс и конструктор.


public class Cat {


private String name;

private String color;

private int age;


public Cat (String name, String color, int age) {


this.name = name;

this.color = color;

this.age = age;

}

}


Внимание вопрос!

Все, как один, говорят, что переменным класса нужно обязательно присваивать стартовые значения.

Т.е. нужно объявлять переменные класса как


private String name = null;


а не просто


private String name;


Но ведь при использовании последней записи переменной автоматически присваивается null. Тогда в чем разница?

Вы смотрите срез комментариев. Показать все
10
Автор поста оценил этот комментарий

Это актуально только для C/C++, в нормальных остальных языках перед выделением памяти она и так зануляется, так что переменным автоматически присваевается null.

К локальным переменным методов это не относится, но, опять же, в нормальных остальных языках компилятор тебя наругает, если ты попробуешь использовать неинициализированные значения.


И вообще, если те, кто "как один, говорят" сами не могут нормально ответить на этот вопрос, то больше их не слушай - они идиоты.

раскрыть ветку (7)
2
Автор поста оценил этот комментарий
В этом примере и в плюсах не нужно приравнивать нулю.
раскрыть ветку (3)
1
Автор поста оценил этот комментарий

Уверен? Я сам плюсы не знаю, но ЕМНИП, если выделить память для Cat с помощью new, то там вполне могут быть остатки от объектов, которые были раньше в ячейках памяти (ну, то есть, мусор). Я ошибаюсь?

раскрыть ветку (2)
Автор поста оценил этот комментарий

В плюсах мусор будет в не инициализированных переменных примитивных типов (int, double и т.д.). Строкам это не грозит так как это класс с конструктором.


Ну и заодно: нет разницы как создавать через new или на стеке - проблема может быть в обоих случаях.

раскрыть ветку (1)
Автор поста оценил этот комментарий

А, ну ок. Спасибо за просвещение :)

Автор поста оценил этот комментарий
а вот щас обидно было
1
Автор поста оценил этот комментарий

Все хорошо сказал кроме вот этого "нормальных остальных языках". С очень даже нормальный если что, и там инициализация переменных обоснована ньюансами работы с памятью, и является вполне логичной. Я не придираюсь, чесслово, просто припекает от новомодного хайпа поливать отца всех языков (это я про С/С если что, на котором почти всё очтальное написано...) говном из-за того что на нем неудобненько, как на шарпах к примеру. Сам видел кучу кода от коиорого плакать хочеться, но это не проблема языка же... На люблм языке писать куево можно. Еще раз - без обид :) Накипело...

Автор поста оценил этот комментарий
Все понял
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку