我如何在Java中使用字符的equals()方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何在Java中使用字符的equals()方法相关的知识,希望对你有一定的参考价值。

由于字符串是一个对象,您需要使用string.equals(string)方法来确认两个字符串是否相等。

但是,为什么你使用==检查两个字符是否相等,char1 == char2,而不是char1.equals(char2)

答案

也许,这将有助于理解==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");
    }
  }
另一答案

它取决于使用基本类型,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中只有八种原始数据类型:byte,short,int,long,float,double,char和boolean。 Java程序无法定义任何其他原始数据类型。

对象是一大块内存,可能包含大量数据以及处理该数据的方法(小程序)。有数千个标准化Java的对象类,程序员可以轻松创建其他类。 (虽然有数以千计的标准课程,但对于本课程,您只需要熟悉十几个课程。)

其中2个字符串是2个不同的对象。因此不是相同的对象而不是相同的字符串。虽然人物可能是相同的。

另一答案

基本上Java具有基本类型(int,char,short,long,byte ....)和参考数据类型/由其他基元和对象组成的对象。

equals()是所有Java对象的方法。但char不是Java中的Object类型,它是原始类型,它没有任何方法或属性,因此要检查相等性,它们只能使用== equals运算符。

另一答案

因为char是原始类型并且没有实现equals,所以==在这种情况下直接比较char值。其中String是对象,因此对于对象比较,等于运算符应用于对象的引用,而不是它们指向的对象。当且仅当它们指向同一个对象或两者都指向null时,两个引用是相等的。

如果要比较字符串(以查看它们是否包含相同的字符),则需要使用equals比较字符串。

因此,运算符==检查基本类型的值的相等性。但它检查对象的引用相等性。如果两个对象由相同的引用引用。 java中的引用和对象是不同的。

以上是关于我如何在Java中使用字符的equals()方法的主要内容,如果未能解决你的问题,请参考以下文章

如何比较 Java 中的字符串?

如何比较 Java 中的字符串?

如何比较 Java 中的字符串?

如何比较 Java 中的字符串?

java中equals使用方法

Java 中 equals 和 == 的区别