Инициализация локальных переменных

236
22 октября 2017, 19:56

Как корректнее всего инициализировать пустые локальные переменные разных типов? Например,

int a = 0;
int a = null;
String s = "";
String s = null;
List l = null;
List l = new ArrayList();

и т.д...

Answer 1

Не всё так однозначно. Во-первых, стоит почитать доки.

Во-вторых, это не всегда вопрос удобства.

public class Main {
    public static void main(String[] args) {
        int a;
        System.out.println(a);
    }
}

Не скомпилируется с ошибкой:

The local variable a may not have been initialized

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

public class Main {
    static int a;
    public static void main(String[] args) {
        System.out.println(a);
    }
}

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

Answer 2

Если говорить именно об инициализации локальных переменных, то:

  • во-первых, их всегда нужно инициализировать, иначе программа просто не скомпилируется, как и было сказано в другом ответе;
  • во-вторых, переменные примитивных типов не получится инициализировать значением null (что тоже вполне логично);
  • ну и в-третьих, самое главное - какими значениями инициализировать?
    Ответ на этот вопрос будет следующим - такими, какие имеют смысл в вашем коде. Например, если метод возвращает строку, формируемую некоторыми способом на основании параметров и при этом имеет смысл возвращаемый методом null - заполняйте именно таким значением, а если в любом случае должна быть какая-то строка, пусть и пустая - инициализируйте пустой строкой. Точно так же со списком: если после инициализации вы хотите его заполнять - есть ли смысл инициализировать его значением null? Логично предположить, что стоит всё же создать список. И т.д, можно продолжить...
READ ALSO
как удалить по ID (deleteById(long id) и delete(Developer developer)

как удалить по ID (deleteById(long id) и delete(Developer developer)

Дана сущность Developer Необходимо реализовать консольное приложение со следующим функционалом:

198
Не получается обратиться к базе данных на сервере

Не получается обратиться к базе данных на сервере

Проект vaadin+h2+hibernate+tomcat пытаюсь обратиться к базе данных, но на этапе конфигурации выдает ошибку

222
Как в hibernate использовать rowset из jdbc?

Как в hibernate использовать rowset из jdbc?

Возможно вопрос неправильный и я бы его не задал, если бы не нужно было через три дня сдавать задание - crud-приложение с пагинациейПо условию...

184