由于字符串是一个对象,因此您需要使用string.equals(string)
方法来确认两个字符串相等。
但是,为什么使用==
来检查两个字符是否相等,char1 == char2
而不是char1.equals(char2)
?
答案 0 :(得分:0)
这取决于使用基本类型,char,int等,以及使用诸如String之类的对象。像int这样的原始类型可以进行1 == 1的比较,如果将2个对象彼此检查为ObjectA!= ObjectB。
在此处查看以下答案:Primitive vs Object type in Java 或在此处:https://chortle.ccsu.edu/java5/Notes/chap09C/ch09C_2.html
报价:
原始数据类型使用少量内存来表示一个 单项数据。同一原始类型的所有数据都相同 大小。
例如,原始类型int使用32位表示整数。所有 int类型的变量使用32位。
Java中只有八种原始数据类型:字节,短型,整型, long,float,double,char和boolean。 Java程序无法定义 任何其他原始数据类型。
对象是一大块内存,可能包含一个 大量数据以及要处理的方法(小的程序) 该数据。有成千上万个标准的对象类 使用Java,程序员可以轻松创建其他类。 (尽管有成千上万的标准课程, 只需熟悉一打左右的课程即可。)
其中2个字符串是2个不同的对象。因此,不同的对象和不同的字符串。虽然字符可能相同。
答案 1 :(得分:0)
基本上,Java具有基本类型(int,char,short,long,byte等。) 和由其他原语和对象组成的参考数据类型/对象。
equals()是所有Java对象的方法。但是char不是Java中的Object类型,它是原始类型,它没有任何方法或属性,因此要检查是否相等,可以使用==
equals运算符。
答案 2 :(得分:0)
也许,这将有助于理解==
与equals
的区别。
@Test
public void testCharacterEquals() {
//primitive type uses == operator for equals comparasion
char a1 = 'A';
char a2 = 'A';
if (a1 == a2) {
System.out.println("primitive type comparasion: it's equal");
}
//From Java doc; The Character class wraps a value of the primitive type char in an object. An object of type Character contains a single field whose type is char.
//Object type uses equals method for equals comparasion
Character character1 = 'A';
Character character2 = 'A';
if (character1.equals(character2)) {
System.out.println("object type comparasion: it's equal");
}
}
答案 3 :(得分:0)
由于char
是原始类型,并且没有实现equals
,因此==
在这种情况下直接比较char
的值。其中String
是对象,因此为了进行对象比较,将等于运算符应用于对象的引用,而不是它们所指向的对象。当且仅当两个引用指向同一个对象或两个指向空时,两个引用才相等。
如果要比较字符串(以查看它们是否包含相同的字符),则需要使用等号比较字符串。
因此,运算符==
检查基本类型上的值是否相等。但它检查对象的引用相等性。如果两个对象被相等的引用引用。 Java中的引用和对象不同。
答案 4 :(得分:0)
如果需要,您也可以使用比较器。
public static boolean compareChars(char c1, char c2){
int comp = Character.compare(c1, c2);
if(comp>0){
return false;
}else{
return true;
}
}
public static void main (){
boolean b1 = compareChars('A', 'A') //return true;
boolean b2 = compareChars('A', 'C') //return false;
}