Я должен установить начальные Строковые значения Java от пустого указателя до “”?

Если у Вас есть фоновая задача, которая будет жить в течение долгого времени, как в течение всего времени жизни Вашего приложения, то создание Вашего собственного потока является разумной вещью. Если у Вас есть короткие работы, которые должны делаться в потоке, затем использовать объединение потока.

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

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

47
задан Jim Ferrans 23 July 2010 в 17:07
поделиться

9 ответов

Я не согласен с другими плакатами. Допустимо использование пустой строки. Я предпочитаю использовать его, когда это возможно.

В подавляющем большинстве случаев пустая строка и пустая строка представляют одно и то же - неизвестные данные. Представляете ли вы это с помощью null или пустой строки - это вопрос выбора.

8
ответ дан 26 November 2019 в 19:13
поделиться

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

73
ответ дан 26 November 2019 в 19:13
поделиться

Абсолютно нет. Пустая строка и пустая строка - это совершенно разные вещи, и вы не должны их путать.

Для дальнейшего пояснения:

  • «null» означает «Я не инициализировал эта переменная, или она не имеет значения "
  • " пустая строка "означает" Я знаю, что это за значение, оно пустое ".

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

51
ответ дан 26 November 2019 в 19:13
поделиться

Имеет ли смысл в конкретном случае использовать значение до того, как оно будет установлено в другом месте, и в этом случае вести себя как пустая строка? т.е. действительно ли пустая строка является правильным значением по умолчанию, и имеет ли смысл вообще иметь значение по умолчанию?

Если ответ положительный, то установка в объявлении значения "" будет правильным решением. Если нет, то это рецепт, который усложнит поиск и диагностику ошибок.

9
ответ дан 26 November 2019 в 19:13
поделиться

Как правило, этого лучше избегать. Пара причин:

  1. Получение исключения NullPointerException обычно является хорошим предупреждением о том, что вы используете переменную раньше, чем должны, или что вы забыли ее установить. Установка его в пустую строку избавит от исключения NullPointerException, но, скорее всего, вызовет другую (и которую будет труднее отследить) ошибку в дальнейшем в вашей программе.

  2. Может быть допустимая разница между нулем и "". Нулевое значение обычно указывает на то, что значение не было установлено или значение неизвестно. Пустая строка означает, что она была намеренно пуста. В зависимости от вашей программы это небольшое различие может быть важным.

7
ответ дан 26 November 2019 в 19:13
поделиться

Ни за что. Почему ты хочешь это сделать? Это даст неверные результаты. нули и "" "- не одно и то же.

1
ответ дан 26 November 2019 в 19:13
поделиться

Null лучше, поэтому они называются непроверенными исключениями {исключение нулевого указателя}. Когда генерируется исключение, оно сообщает вам, что вы должны инициализировать его некоторым ненулевым значением, прежде чем вызывать какие-либо методы для него.

Если вы выполняете

private String field1 = "";

, вы пытаетесь подавить ошибку. Позже будет сложно найти ошибку.

0
ответ дан 26 November 2019 в 19:13
поделиться

Я бы этого не делал, вам нужно знать, правильно ли заполняются ваши экземпляры данными.

1
ответ дан 26 November 2019 в 19:13
поделиться

Я бы не советовал ни того, ни другого.

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

public class Foo { 
    private final String field1; 
    private final String field2;
    public Foo(String field1, String field2) {
       this.field1 = field1;
       this.field2 = field2;
    }
    // etc. 
} 

Не нужно присваивать значения "я еще не инициализирован". Просто присвойте им начальные значения.

4
ответ дан 26 November 2019 в 19:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: