2014-08-28 3 views
-3

В моей программе я использую строки, как, как следующие:Есть ли разница в использовании этих строк в java?

  1. String s1=null; и
  2. String s1=new Sting();

Для первой строки позже в некоторых, где я изменю s1="Demo Test". может ли кто-нибудь вести меня, какой способ лучше всего использовать String?

ответ

1
String s1 = new String(); 

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

String s1 = null; 

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

String s1; 

обычно делать только штрафом.

+0

'Строка s1;' = 'Строка s1 = NULL ; 'в области метода. –

+0

@Peter: Нет, это точно. Я добавил дополнительную информацию (надеюсь) уточнить. – Keppil

0

Второй вариант

String s1=new Sting(); 

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

С другой стороны, во втором варианте строка существует, и вы можете делать вещи с ним, например, сцепить другую строку к нему:

s1 = s1 + " bla bla"; 

Если вы используете первый вариант:

String s1=null; 
s1 = s1 + " bla bla"; 

вы получите исключение NullPointerException.

Кроме этого нет различий, которые я вижу.

0

Я понимаю, что при создании строкового объекта с использованием нового String() он создает пустую строку.

См Java документ http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

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

Когда вы используете String s1 = null; однако он создает переменную String, которая указывает на ничего. Следовательно, вы не можете вызывать его как s1.length (это приводит к исключению NullPointerException), пока вы фактически не присвоите значение s1.

0

Если вы собираетесь изменить строку в цикле или в условной ситуации и нужны результаты вне скобок, вам может потребоваться использовать String s1 = null;

Например:

boolean test = true; 
String s1 = null; 
if (test) { 
    s1 = "true"; 
} else { 
    s1 = "false"; 
} 
System.out.println("Results is: " + s1); 

Если вы не определяете s1 как нуль до состояния, вы будете иметь ошибки при печати

Смежные вопросы