В чем отличие String a; от String a = new String();
Ответы
Ответ 1
Согласно @Pavel Parshin, в первом случае переменная a не инициализирована (она н
равна даже null). Ее дальнейшее использование невозможно, иначе произойдет ошибка компиляции error: variable a might not have been initialized. Пример.
Во втором случае, согласно en-SO, создаётся новый объект типа String с пустой строкой внутри ""
Sting a;
TextUtils.isEmpty(a); //ошибка компиляции - переменная не инициализирована.
a = new String();
TextUtils.isEmpty(a); //true
Ответ 2
Выше даны хорошие ответы, но если не понятно, то String - название класса, Strin
a; - создание указателя на переменную класса String, он говорит нам, что по этому указател
будет доступна переменная этого класса, но пока это только указатель, который ни н
что конкретное не указывает. new String() - это создание конкретного объекта в памяти, под который отводится место, и для доступа к которому может использоваться тот же указатель а, таким образом данная конструкция String a = new String(); говорит нам, что указатель а будет указывать на этот конкретный объект в памяти new String().
Ответ 3
При написании String b - вы просто создаёте переменную b, которая является ссылкой на объект типа string (но пока что она ни на что не указывает).
Когда вы пишите String b = "Hello world", вы инициализируете объект сразу же, фактически, подставляется new. И присваиваете нашей ссылке b ссылку на этот объект.
Комментариев нет:
Отправить комментарий