Сравнение символов в массивах

126
25 августа 2021, 12:40

корректно будет использовать оператор "==" для сравнения двух символов из двух массивов? Не адреса в памята а именно совпадение знаков(если так можно сказать)

char[] alphabetArr = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'g', 'k'}// тут должен быть весь алфавит
String word = reader.readLine();
char [] arrayOfLetersFromWord = word.toCharArray();
char [] arrayForKeepLeters = new char[word.length()];
 if(arrayOfLetersFromWord[0] == alphabetArr[randomLeter]) //randomLeter привязана к выборке рандомного символа

Я понимаю, что для этого используют .equals() но компилятор против. Сообщает мне : Error:(45, 45) java: char cannot be dereferenced и не " собирает" проект. Что это значит?

Answer 1

Как уже написали в комментах, всё зависит от того, что используется, примитивы или их обертки. Примитивы можно сравнивать через '=='. Equals естественно для них не работает, поскольку это не объекты. Если начинаете сравнивать объекты через '==', то, конечно, начинают проверяться уже ссылки. Конкретно в вашем случае: ДА - char сравниваются через '=='; Если используется обертка Character, как было написано выше, то необходимо уже использовать equals, либо для Character-объекта вызвать метод charValue и применить операцию '=='. По мне, проще работать с примитивами, но опять же, всё зависит от задачи

READ ALSO
Не заходит в метод с аннотацией @PostConstruct (javax)

Не заходит в метод с аннотацией @PostConstruct (javax)

Можно ли вызвать определенный метод инициализация сразу после вызова конструктора с помощью аннотаций из javax?

84
Как отключить фоновый процесс?

Как отключить фоновый процесс?

Я делаю приложение на CordovaСтояла задача: создать плагин, который бы создавал фоновый процесс, который в свою очередь каждые 30 секунд отправлял...

281
Метод equals в классе Object и в моем

Метод equals в классе Object и в моем

Вот метод equals() в классе Object:

114