下面的代码测试字符串myStr和newStr是否包含相同的值。我预计结果是相等的,但令我惊讶的是,String newStr = null
行似乎导致newStr将"null"作为实际文本。这是正确的吗?
我希望它只是被赋给一个不指向任何东西的引用,导致在那一点上没有值。
String myStr = "java";
char[] myCharArr = {'j', 'a', 'v', 'a'};
String newStr = null; // not an empty reference but assigning the text "null"?
for (char value : myCharArr) {
newStr = newStr + value;
}
System.out.println(newStr == myStr); // results in false: newStr is 'nulljava' and myStr 'java'
请注意,当将"String newStr = null"
更改为String newStr = new String()
时,您将获得一个空引用,并且newStr最终将只是"java"
表演
newStr = newStr + value;
将newStr
中的null
转换为字符串,即"null"
。您应该记住的另一件事是==
比较引用,为了比较String
本身,您应该使用str1.equals(str2)
。