Основы Java о String - PullRequest
       16

Основы Java о String

1 голос
/ 30 августа 2009

К какому значению автоматически инициализируется переменная типа String?

Ответы [ 10 ]

8 голосов
/ 30 августа 2009

null

Если только он не внутри метода (локальной переменной), в этом случае он не объявлен ни для чего.

5 голосов
/ 30 августа 2009

Вот краткое изложение ответов Мартина против Лёвиса и шелковистых .

Мы можем сказать следующее об инициализации String объекта:

  • Если String является локальной переменной, она не будет инициализирована.
  • Если String является переменной класса, переменной экземпляра или компонентом массива, то он будет инициализирован в null.

Аргументация следующая:

Как переменная с типом String является ссылочным типом, согласно Спецификация языка Java, третье издание , Раздел 4.12.5: Начальные значения переменных говорит следующее:

Каждая переменная в программе должна иметь значение до его использования

Далее говорится об инициализации ссылочных типов:

  • Каждая переменная класса, переменная экземпляра или компонент массива инициализируется значением по умолчанию, когда это создано (§15.9, §15.10):
    • [удалена информация о несущественной информации]
    • Для всех ссылочных типов (§4.3) значением по умолчанию является null.

И, наконец, следующее о локальных переменных:

  • Локальная переменная (§14.4, §14.14) должна получить явное значение перед используется при любой инициализации (§14.4) или присвоение (§15.26), в способ, который может быть проверен компилятор использует правила для определенных назначение (§16).
3 голосов
/ 30 августа 2009

Если переменная является переменной класса, переменной экземпляра или компонентом массива, она инициализируется равной null (поскольку значением по умолчанию для ссылочного типа является null)

Если переменная является локальной переменной, то ей должно быть дано значение явно (т. Е. В этом случае она не имеет значения по умолчанию).

2 голосов
/ 30 августа 2009

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

2 голосов
/ 30 августа 2009

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

1 голос
/ 30 августа 2009

ноль

0 голосов
/ 10 ноября 2017
  1. Любая переменная, объявленная в классе, автоматически инициализируется.
  2. Любая переменная, объявленная в методе, должна быть инициализирована, иначе это вызовет ошибку.
  3. Строки инициализируются нулем, целые числа равны 0 и т. Д.

Проверьте эту страницу для получения дополнительной информации ...

0 голосов
/ 28 октября 2017

Если переменная типа String находится внутри метода, она не будет автоматически инициализироваться. В противном случае он будет инициализирован с нулем в качестве значения.

0 голосов
/ 24 августа 2015

строковое значение должно быть NULL по умолчанию, не нужно его инициализировать. Строковые объекты класса по умолчанию имеют значение NULL, только если они определены как атрибуты уровня класса, в противном случае строковые объекты не имеют никакого значения по умолчанию, которое им нужно инициализировать для explicity.

0 голосов
/ 30 ноября 2011

String str=null означает, что str является объектом класса String, который ни на что не указывает ... но когда мы говорим о выделении памяти, память будет выделена для str, как только она появится ... Вы можете проверить количество памяти, используя опцию профилирования в NetBeans.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...