как использовать метод equals () персонажа в Java - PullRequest
0 голосов
/ 01 сентября 2018

Поскольку строка является объектом, вам необходимо использовать метод string.equals(string), чтобы подтвердить, что две строки равны.

Однако, почему вы используете ==, чтобы проверить, равны ли два символа, char1 == char2, а не char1.equals(char2)?

Ответы [ 4 ]

0 голосов
/ 01 сентября 2018

Поскольку char является примитивным типом и не реализует equals, == сравнивает значения char непосредственно в этом случае. где String является объектом, поэтому для сравнения объектов оператор равенства применяется к ссылкам на объекты, а не к объектам, на которые они указывают. Две ссылки равны, если и только если они указывают на один и тот же объект или обе указывают на ноль.

Если вы хотите сравнить строки (чтобы увидеть, содержат ли они одинаковые символы), вам нужно сравнить строки, используя равно.

Следовательно, оператор == проверяет равенство значений на примитивных типах,. но он проверяет равенство ссылок для объектов. если на два объекта ссылаются одинаковые ссылки. ссылка и объект разные в Java.

0 голосов
/ 01 сентября 2018

В основном у Java есть примитивные типы (int, char, short, long, byte ....) и справочные типы данных / объекты, состоящие из других примитивов и объектов.

equals () - это метод всех объектов Java. Но char не является типом Object в Java, это примитивный тип, у него нет методов или свойств, поэтому для проверки равенства можно просто использовать оператор == equals.

0 голосов
/ 01 сентября 2018

Возможно, это поможет понять разницу на == против 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");
    }
  }
0 голосов
/ 01 сентября 2018

Это зависит от использования примитивного типа, char, int и т. Д. И от использования таких объектов, как String. Примитивный тип, такой как int, можно сравнить 1 == 1, и если вы проверите 2 объекта друг с другом ObjectA! = ObjectB.

Проверьте этот ответ здесь: Примитив vs Тип объекта в 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 разных объекта. Поэтому не один и тот же объект и не одна и та же строка. Хотя символы могут быть одинаковыми.

...