Страницы

Поиск по вопросам

вторник, 26 ноября 2019 г.

Разница между String и new String?


В чем отличие 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 ссылку на этот объект.

Комментариев нет:

Отправить комментарий