Null чи не null
Пишемо клас та конструктор.
public class Cat
private String name;
private String color;
private int age;
Public Cat (String name, String color, int age)
Усі, як один, кажуть, що змінним класу потрібно обов'язково надавати стартові значення.
Тобто. потрібно оголошувати змінні класу як
private String name = null;
private String name;
Але при використанні останнього запису змінної автоматично надаєтьсяnull. Тоді у чому різниця?
Дублікати не знайдено
Це актуально лише для C/C++, в інших нормах перед виділенням пам'яті вона й так зануляється, отже змінним автоматично присвоюється null.
До локальних змінних методів це не відноситься, але, знову ж таки, в інших нормах компілятор тебе налає, якщо ти спробуєш використовувати неініціалізовані значення.
І взагалі, якщо ті, хто "як один, говорять" самі не можуть нормально відповісти на це питання, то більше їх не слухай – вони ідіоти.
Впевнений? Я сам плюси не знаю, але ЕМНІП, якщо виділити пам'ять для Cat за допомогою new, то там можуть бути залишки від об'єктів, які були раніше в осередках пам'яті (ну, тобто, сміття). Я помиляюся?
У плюсах сміття буде не ініціалізованих змінних примітивних типів (int, double і т.д.). Рядкам це не загрожує тому що це клас із конструктором.
Ну і заразом: немає різниці як створювати через new або на стеку - проблема може бути в обох випадках.
А, ну ок. Дякую за просвітництво :)
Все добре сказав крім цього "нормальних інших мовах". З дуже нормальний якщо що, і там ініціалізація змінних обґрунтована нюансами роботи зпам'яттю, і є цілком логічною. Я не чіпляюся, чесслово, просто припікає від новомодного хайпа поливати батька всіх мов (це я про С/С якщо що, якою майже все читання написано. ) говном через те, що на ньому незручно, як на шарпах наприклад. Сам бачив купу коду від якого плакати хочеться, але це не проблема мови ж. Любою мовою писати куєво можна. Ще раз - без образ :) Накипіло.