java - 一行java代码及其作用?

标签 java string equals setter

所以我购买了《Java for Dummies》第 4 版,我必须说这可能是我花 30 美元买的最值的一本书。我对编码并不陌生,如果我自己这么说的话,我实际上相当擅长。

但是,我遇到了一行让我有点困惑的代码:

public void setName(String n)
{
     if(!n.equals(""))
     {
          name = n;
     }
}

我的问题出现在第三行,if(!n.equals("")) 部分……我知道 if 循环是如何工作的(即:if(this == that){do stuff}),但我之前没有看到 !n.equals("") 设置。谁能给我解释一下?

PS:只是猜测一下。是否与:

public void setName(String n)
{
     if(n != "")
     {
          name = n
     }
}

我认为这只是一种确保如果用户不输入名称(即 myAccount.setName = ""; )它不会返回错误并像正常一样运行的方法,但我不是确定。

在此先感谢您的帮助!

编辑:改变了我的“myAccount.name = “”;”到“myAccount.setName =”“;”,很抱歉造成混淆。

谢谢:转至 Asaph,感谢您的回答!和Lucas Aardvark一样,他也回答了,但是Asaph先在他自己的回答中回答了我的验证评论,谢谢大家!

最佳答案

在java中,字符串是不可变的但不是内部的,所以 if(""==n) 对于另一个字符串可能为真,也可能不为真 其中“”.equals(n) 为真。

只是让你更加困惑,这是糟糕的代码,它会得到一个 NullPointerException 如果以 null 作为参数调用。应该写成".equals(n)

关于java - 一行java代码及其作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1501723/

相关文章:

java - ConcurrentHashMap 是否会复制自身?

java - 覆盖 hashcode 和 equals 时要考虑的数据成员

java - 如何使用 @Resource WebServiceContext 注入(inject) Spring 的 @Transactional

java - 如何在java中处理复数?

java - 自定义 HashMap 在插入几次后停止工作

c - 我怎样才能从c中的一行中提取单词?

javascript - 如何在javascript中删除字符串中的数据

Java - 替换单引号而不影响多个单引号

java - 为什么 .equals() 方法没有被 Java 中的基元数组覆盖?

Java - 基类和子类中的 equals 方法