Java 字符和字符串之间的比较不像我期望的那样工作。我做错了什么?

Java 字符和字符串之间的比较不像我期望的那样工作。我做错了什么?,java,string,comparison,character,string-comparison,Java,String,Comparison,Character,String Comparison,我正在尝试比较字符串和字符(将其转换为字符串后)。代码没有像我期望的那样工作 package main; import java.lang.Character; public class Main { public static void main(String[] args) { char myChar = 'a'; String myString = "a"; if(myString == Character.toString(myC

我正在尝试比较字符串和字符(将其转换为字符串后)。代码没有像我期望的那样工作

package main;
import java.lang.Character;

public class Main {
    public static void main(String[] args) {
        char myChar = 'a';
        String myString = "a";
        if(myString == Character.toString(myChar)) {
            System.out.println("This SHOULD work! But it doesn't.");
        } else {
            System.out.println("This SHOULDN'T work! But it does.");
        }
    }
}
我做错了什么?

使用:

if(myString.equals(Character.toString(myChar)))
而不是:

if(myString == Character.toString(myChar))

=
测试两个引用是否指向内存中的同一对象,而
equals
方法检查指向同一对象的两个引用是否具有相同的内容。

使用:

if(myString.equals(Character.toString(myChar)))
而不是:

if(myString == Character.toString(myChar))


=
测试两个引用是否指向内存中的同一对象,而
equals
方法检查指向同一对象的两个引用是否具有相同的内容。

不使用==运算符来比较字符串。虽然嵌入到源代码中的字符串文字可以与此运算符进行比较,但这种方法不适用于字符串对象,而是动态地获取

这是因为==比较对象的引用,而不是对象值


使用
String.equals()
方法比较字符串对象。

不要使用==运算符比较字符串。虽然嵌入到源代码中的字符串文字可以与此运算符进行比较,但这种方法不适用于字符串对象,而是动态地获取

这是因为==比较对象的引用,而不是对象值


使用
String.equals()
方法比较字符串对象。

要比较字符串的相等性,我们使用equals()方法。java中有两种比较方法。一个是“==”运算符,另一个是“equals()”方法。“==”比较字符串对象的引用值,而equals()方法存在于java.lang.object类中。此方法比较字符串对象的内容


所以在您的例子中,最好使用.equals(),如果“==”

要比较字符串的相等性,我们使用equals()方法。java中有两种比较方法。一个是“==”运算符,另一个是“equals()”方法。“==”比较字符串对象的引用值,而equals()方法存在于java.lang.object类中。此方法比较字符串对象的内容


因此,在您的情况下,如果字符串比较的一般规则是“==”,则最好使用.equals()

  • =
    比较引用(如果您来自C,则使用某种类型的指针)
  • equals
    比较内容
在本例中,您将两个不同的引用与两个不同的对象进行比较,这就是为什么它返回
false
您期望的
true

对于字符串比较,始终使用
string.equals()
方法

字符串比较的一般规则:

  • =
    比较引用(如果您来自C,则使用某种类型的指针)
  • equals
    比较内容
在本例中,您将两个不同的引用与两个不同的对象进行比较,这就是为什么它返回
false
您期望的
true

对于字符串比较,请始终使用
string.equals()
方法

我认为这样做需要一个功能,如果一个问题包含单词“string”以及“compare”、“comparison”或“equals”,那么会出现一个巨大的闪烁红色框,告诉您使用
equals
而不是
=
@yshavit,几乎每天都有人问这个问题:)如果这个问题已经被问到了,我很抱歉。我试着找它,但找不到。谢谢你的回答。我认为这需要有一个功能,如果一个问题包括“字符串”以及“比较”、“比较”或“等于”,那么会出现一个巨大的闪烁的红色框,告诉你使用
equals
而不是
=
@yshavit,几乎每天都有人问这个问题:)如果这个问题已经被问到了,我很抱歉。我试着找它,但找不到。谢谢你的回答。可能重复:可能重复: