2016-10-08 2 views
0

Какова работа оператора null в строке, при конкатенации вывод null + string почему? прг есть.Что происходит, когда строка конкатенирована с нулевым значением?

public static void main2() 
{ 
    String s1=null; 
    String s2=""; 
    System.out.println(s1); 
    System.out.println(s2); 
    s1=s1+"jay"; 
    s2=s2+"jay"; 
    System.out.println(s1); 
    System.out.println(s2); 
} 

что здесь происходит?

+2

'null' не является оператором. Это значение. –

+1

Я не могу объяснить это лучше, чем это: http://stackoverflow.com/a/802371/2392193 – Law

+0

@Law этот вопрос - это Javascript, а не Java. Не будем путать вещи. –

ответ

1

null не является оператором. null - это буква, представляющая ссылку null, которая не относится ни к одному объекту. null - значение по умолчанию для ссылочных типов переменных. Это означает, что строковая переменная или ваша другая переменная типа объекта не указывают нигде в памяти.

И когда вы соединяете его с другой строкой. Он будет добавлен к этой строке. Зачем? потому что если ссылка null, она преобразуется в строку "null".

String s1=null; 
String s2=""; 
System.out.println(s1); 
System.out.println(s2); 
s1=s1+"jay"; 
s2=s2+"jay"; 

// compiler convert these lines like this, 
// s1 = (new StringBuilder()).append((String)null).append("jay").toString(); 
// s2 = (new StringBuilder()).append((String)"").append("jay").toString(); 

System.out.println(s1); 
System.out.println(s2); 

Это напечатает nulljay

+0

OP уже знает, что такое 'null' и что произойдет, когда вы соедините его со строкой. Он спрашивает, почему. Это не отвечает на вопрос. – Tibrogargan

+0

во второй строке я ответил. Вы читали ответ? – Pirate

+0

Это еще не ответ на вопрос. – Tibrogargan

0

Как уже упоминалось, null это значение. Подобно высказыванию 1 является значением целочисленного типа или "XYZ" является примером типа String.

Когда вы выполняете конкатенацию строки и другого типа, другое значение просто преобразуется в представление «String» и добавляется к первой строке.

Например:

"XYZ" + 1 

Становится

"XYZ1" 

Аналогично,

"Jay" + null 

Становится

"Jaynull" 

Суть в том, что null - это просто значение. И не оператор. Это неявное значение, указывающее на отсутствие объекта.

Надеюсь, это поможет!

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