Java 在if语句中使用字符串和逻辑运算符

Java 在if语句中使用字符串和逻辑运算符,java,string,Java,String,我是学Java的新手。我大约一周前开始学习,每天花大约10个小时学习,我不确定自己是否落后于“应该”的水平(我正在处理的另一个问题) 我知道我的代码可能不是最有效的,但我必须从某个地方开始,我从上周读到的大量信息中提取了大部分信息。现在,我正在尝试制作游戏或应用程序来帮助巩固编程概念。将我学到的知识用于实践,并使这些信息具有相关性 我的问题很重要,为什么我的“如果”语句直接指向“其他”呢 对于字符串比较,必须使用Object类的equals方法。 您的if语句将类似于-if(scanClass.

我是学Java的新手。我大约一周前开始学习,每天花大约10个小时学习,我不确定自己是否落后于“应该”的水平(我正在处理的另一个问题) 我知道我的代码可能不是最有效的,但我必须从某个地方开始,我从上周读到的大量信息中提取了大部分信息。现在,我正在尝试制作游戏或应用程序来帮助巩固编程概念。将我学到的知识用于实践,并使这些信息具有相关性

我的问题很重要,为什么我的“如果”语句直接指向“其他”呢


对于字符串比较,必须使用
Object
类的
equals
方法。 您的if语句将类似于-
if(scanClass.equals(“f”)…


请记住,
==
比较参考对象而不是实际对象。

对于字符串比较,必须使用
对象
类的
等于
方法。 您的if语句将类似于-
if(scanClass.equals(“f”)…


请记住,
=
比较的是引用对象,而不是实际对象。

始终使用
等于来比较字符串

  • ==比较引用

  • 另一方面,equals()比较这些值

    if ((scanClass.equals("f") || (scanClass.equals("F"))) 
    

始终使用
等于来比较字符串

  • ==比较引用

  • 另一方面,equals()比较这些值

    if ((scanClass.equals("f") || (scanClass.equals("F"))) 
    
您应该使用 if语句中的scanClass.equalsIgnoreCase(“f”)
,因为
=
运算符比较的是引用而不是值。

您应该使用
scanClass.equalsIgnoreCase(“f”)
在if语句中,因为操作符比较引用而不是值。

操作符==,测试两个对象引用变量是否引用对象的完全相同实例

方法.equals()测试被比较的两个对象是否相等,但它们不必是同一对象的完全相同的实例。所以

 if ((scanClass == "f") || (scanClass == "F")) 

计算结果为false,控制转到else块。

运算符==,测试两个对象引用变量是否引用对象的完全相同实例

方法.equals()测试被比较的两个对象是否相等,但它们不必是同一对象的完全相同的实例。所以

 if ((scanClass == "f") || (scanClass == "F")) 

计算结果为false,控制转到else块。

更好的方法是if(“f”.equals(scanClass)){}进一步改进它:if(“f”.equalsIgnoreCase(scanClass)…为您节省了两个比较中更笨重的方式。谢谢您,以及所有回答的人。对于这样一个noob问题,很抱歉,但我真的不记得看到过“equals”在我读过的任何在线文档中,尽管我可能弄错了。@Surlistyc如果你觉得你的问题得到了正确的回答,你可以通过点击下箭头下的右键来接受答案。@SajalDutta同意。:)更好的是如果(“f”.equals(scanClass)){}进一步改进:如果(“f”.equalsIgnoreCase(scanClass)…为您省去了两个比较中更笨重的方式。谢谢您,还有所有回答的人。对于这样一个noob问题,很抱歉,但我真的不记得看到过“equals”在我读过的任何在线文档中,尽管我可能弄错了。@Surlistyc如果您觉得您的问题得到了正确的回答,您可以通过单击向下箭头下的右标记来接受答案。@SajalDutta同意。:)在这个网站上,RPG标签指的是一种编程语言。使用前请阅读我们的标签信息。谢谢。在这个网站上,RPG标签指的是一种编程语言。使用前请阅读我们的标签信息。非常感谢。