Sou*_*lly 7 java string setter equals
所以我已经购买了"Java for Dummies"第4版,我必须说这可能是我花在书上的最好的30美元.我不是新编码,如果我自己这样说,我实际上相当不错.
但是,我遇到了一行让我感到困惑的代码:
public void setName(String n)
{
if(!n.equals(""))
{
name = n;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题出现在第三行,if(!n.equals(""))部分......我知道if循环是如何工作的(即:if(this == that that){do stuff}),但是我之前没见过!n.equals("").有人可以向我解释一下吗?
PS:只是想猜一猜.它是否相同:
public void setName(String n)
{
if(n != "")
{
name = n
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这只是一种方法,以确保如果用户没有输入名称(即myAccount.setName ="";)它不会回复错误并像正常一样运行,但我不确定.
在此先感谢您的帮助!
编辑:改变了我的"myAccount.name ="";" 到"myAccount.setName ="";",抱歉混淆.
谢谢你:去Asaph,感谢答案!和Lucas Aardvark一样,他回答说,但Asaph先回答了我在他自己的回答中的验证评论,感谢所有人!
在java中,字符串是不可变的但不是实例化的,因此如果(""== n)对于".equals(n)为真的另一个字符串可能会或可能不成立.
只是为了让你更加困惑,这是错误的代码,如果调用null作为参数,它将获得NullPointerException.它应该写成"".equals(n)
if(!n.equals(""))
{
name = n;
}Run Code Online (Sandbox Code Playgroud)
表示如果n不是空String,则将其值赋给name.
在Java中,每个Object都有一个equals(Object o)方法来测试与另一个Object的相等性.==运算符通常用于比较基元.它也可以用于比较对象的"相同性".即.这两个对象实际上是同一个实例.这对于诸如字符串之类的不可变类型以及诸如Integer和Long之类的基本类型的所有Object包装器都很方便.