2016-10-08 41 views
0

字符串中的空操作符的工作是什么, 上的连接输出是null + string为什么? 该prg是。当字符串与null连接时会发生什么?

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只是一个值。而不是运营商。这是一个隐含的价值来表明没有一个对象。

希望这会有所帮助!

相关问题