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,几乎每天都有人问这个问题:)如果这个问题已经被问到了,我很抱歉。我试着找它,但找不到。谢谢你的回答。可能重复:可能重复: