此代码不起作用:
String name = "Bob";
String name1 = "Anne";
if name = name1;
System.out.println ("Hello");
我是 Java 的初学者,请帮助我们完成这段代码。我正在尝试比较两个字符串。
你需要:
if (name.equals(name1))
请注意,您不想要
if (name == name1)
这在语法上是正确的,但会比较两个字符串引用的相等性,而不是比较所涉及的对象是否表示相同的字符序列
此外,请注意,即使是顶级版本也只会对字符串中的 UTF-16 代码单元进行序号比较。如果两个字符串在逻辑上表示相同的字符,但形式不同,则可能无法获得预期的结果。如果要进行区分区域性的比较,则应查看Collator
。
此外,我建议如果你真的是Java的新手,你从控制台应用程序和/或单元测试开始探索语言而不是JSP - 它会给你一个更平滑的循环,同时你学习基础知识,以及一个更简单的工作环境。
更重要的是,如果 name
是空引用,则顶部给出的代码将抛出NullPointerException
。您应该考虑此时要发生的情况 - 如果字符串为 null 无论如何都会表示错误,那么异常可能是合适的;否则,您可能需要更改代码。番石榴(里面装满了好东西(的一个有用方法是Objects.equal
:
if (Objects.equal(name, name1))
如果两个参数都为 null,则该方法返回 true;如果只有一个参数为 null,则返回 false;如果它们都是非 null,则调用 equals()
的结果。非常方便。
你的错误:
-
您正在使用
"="
运算符来比较字符串。它不是条件运算符,而是赋值运算符。Java 中的条件运算符是"=="
,用于比较两个值是否相等。您甚至不能将这个用于字符串。 -
你这样写:
if name = name1; System.out.println ("Hello");
您在 if 语句的末尾放置了一个分号。所以它什么也不做(如果你的条件应该是正确的,在这种情况下不是(,但是条件是真的还是假的。
-
您缺少围绕 if 语句中给出的条件的参数。
Synatx of if statement is : if(condition)
因此,必须围绕您的病情写"()"
。
现在,为了比较字符串,String 类为我们提供了如下方法:
stringOne.equals(stringTwo)
它检查完全相同的字符串。
或
stringOne.equalsIgnoreCase(stringTwo)
它将忽略大写小写字母大小写。
您必须像这样比较这两个变量
if (name.equals(name1))
这应该有效,而不是您这样做的方式!!
if(name.equals(name1))
System.out.println("Hello");
== 仅在比较 int 或 long 等基元时才有效。如果你想比较字符串,你必须使用equals((或compareTo((。Single = 是一个赋值,而不是通过执行 name=name1 进行比较,您本质上将字符串 name1 分配给变量名称。
你发布的代码并不是真正的Java。 此外,不要将"=="与赋值运算符"="进行比较。 最后,要正确比较"对象"或从Object
后代的任何内容,您需要使用 .equals(...)
方法。
与==
比较意味着"是同一对象",而不是"是具有相同值的对象"。 差异似乎很小;但是,如果您选择按其值比较对象,则它一点也不小。 可以使用相同的"值"创建两个Object
,只有.equals(...)
允许您将这两个Object
视为相同。