!=
Оператор != сравнивает два объекта String с учётом регистра и возвращает true, если строки различаются хотя бы в одном символе.
Полная статья
Описание
Оператор != применяется к двум объектам String и возвращает true, когда строки не совпадают. Сравнение идёт посимвольно и учитывает регистр: "hello" и "HELLO" — это разные строки, потому что буквы в них записаны по-разному.
По сути это инверсия обычной проверки на равенство: там, где == вернёт true, оператор != вернёт false, и наоборот. Логически он эквивалентен вызову !myString.equals(otherString).
Синтаксис
myString1 != myString2
Параметры
myString1— первый объектString, левый операнд сравнения.myString2— второй объектString, правый операнд сравнения.
Возвращает
true— строки различаются хотя бы в одном символе.false— строки полностью совпадают.
Где применяется
Оператор != удобен, когда нужно отреагировать именно на изменение или несовпадение:
- Проверить, изменилась ли команда, пришедшая по Serial, по сравнению с предыдущей.
- Убедиться, что введённый пользователем пароль или код не совпадает с запрещённым значением.
- Отфильтровать дубликаты: пропускать обработку, только если новое значение отличается от старого.
- Сравнить метку или идентификатор устройства с ожидаемым эталоном.
Практические замечания
- Сравнение всегда чувствительно к регистру. Если источник строки — пользовательский ввод или Serial, стоит заранее привести обе строки к одному регистру или использовать
equalsIgnoreCase(). equalsIgnoreCase()возвращаетbool(совпадают / не совпадают), а не сигнализирует о различии, поэтому для проверки «не равно без учёта регистра» его нужно инвертировать:!myString.equals(otherString).- Объект
Stringв Arduino хранится в динамической памяти (heap). Частое создание временных строк для сравнения может фрагментировать RAM — там, где это критично, лучше работать сchar-массивами иstrcmp(). - Если одна из переменных не инициализирована, сравнение может дать непредсказуемый результат. Всегда инициализируйте
myString1иmyString2перед использованием. - Оператор
!=работает только между двумя объектамиString. СравниватьStringсchar-массивом напрямую через!=не рекомендуется — лучше явно преобразовать один из операндов.