我有大代码和这样的行:
System.out.println(car.getName());
System.out.println(car.getName() == null);
第一行打印输出: 空
但第二行打印输出为false,所以null == null为false?
我也试过System.out.println(car.getName() == "null");
,因为getName返回String但结果相同
答案 0 :(得分:4)
说到String,您需要使用equals
方法:
System.out.println("null".equals(car.getName());
如果它实际返回的字符串“null”与null
不同。
为什么使用equals
代替==
,我找不到比one更简单的解释:
要比较字符串是否相等,请不要使用==。 ==运算符检查两个对象是否完全相同。两个字符串可以是不同的对象,但具有相同的值(在它们中具有完全相同的字符)。使用.equals()方法比较字符串是否相等。
答案 1 :(得分:1)
如果我不得不猜测,你的代码中就有这样的内容:
public String getName()
{
return "null";
}
所以,当你运行测试时,
System.out.println(car.getName() == null);
它正在使用值"null"
测试字符串对象null
,这确实是错误的。
答案 2 :(得分:1)
结果是“null”,而不是null
,因此您的代码将是:
System.out.println(car.getName().equals("null"));