作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
class Test {
public static void main() {
String s1 = null + null; //shows compile time error
String s1 = null;
String s2 = s1 + null; //runs fine
}
}
谁能解释一下这种行为的原因?
最佳答案
这段代码:
String s1 = null + null;
尝试对两个null
进行加法运算,无效。
在这里:
String s1 = null;
String s2 = s1 + null;
您将 null
分配给 s1
。然后执行 s1
和 null
的串联。 s1
的类型是String
,所以s1 + null
中的null
会被转换成"null "
字符串按照字符串转换规则,如JLS §15.1.11 - String Conversion:
If the reference is null, it is converted to the string
"null"
(four ASCII charactersn, u, l, l
).Otherwise, the conversion is performed as if by an invocation of the
toString
method of the referenced object with no arguments; but if the result of invoking thetoString
method isnull
, then the string"null"
is used instead.
和连接将作为 - s1 + "null";
关于Java 字符串的细微差别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22969348/
我是一名优秀的程序员,十分优秀!