В чем разница между XOR и NOT-EQUAL-TO?

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

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

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

26
задан S.L. Barth 17 July 2012 в 15:26
поделиться

4 ответа

Для логических значений они означают одно и то же - хотя для XOR есть составной оператор присваивания:

x ^= y;

Нет эквивалентного составного оператора присваивания для неравенства.

Что касается того, почему они оба доступны - было бы странно, если бы XOR не был доступен только потому, что он работает так же, как неравенство. Это должно быть логически, так оно и есть. Для не-булевых типов результат отличается, потому что это другой тип результата, но это не значит, что имеет смысл удалить XOR для boolean.

29
ответ дан Jon Skeet 17 July 2012 в 15:26
поделиться

Да, вы можете использовать XOR для проверки логических значений на (не) равенство, хотя код менее интуитивно понятен: if (x ^ y) против if (x != y).

4
ответ дан LukeH 17 July 2012 в 15:26
поделиться
  • 1
    В пользу сообщества я волновал восстановление/восстановление DB с помощью метода, обрисованного в общих чертах здесь: community.spiceworks.com/how_to/show/1468 у меня также были ежедневные резервные копии, и таким образом, этот потенциал ' О, sh*t' момент был превращен в относительно незначительное прерывание. – jefflunt 11 March 2011 в 18:04
  • 2
    В пользу сообщества я волновал восстановление/восстановление DB с помощью метода, обрисованного в общих чертах здесь: community.spiceworks.com/how_to/show/1468 у меня также были ежедневные резервные копии, и таким образом, этот потенциал ' О, sh*t' момент был превращен в относительно незначительное прерывание. – jefflunt 11 March 2011 в 18:04
  • 3
    В пользу сообщества я волновал восстановление/восстановление DB с помощью метода, обрисованного в общих чертах здесь: community.spiceworks.com/how_to/show/1468 у меня также были ежедневные резервные копии, и таким образом, этот потенциал ' О, sh*t' момент был превращен в относительно незначительное прерывание. – jefflunt 11 March 2011 в 18:04
  • 4
    В пользу сообщества я волновал восстановление/восстановление DB с помощью метода, обрисованного в общих чертах здесь: community.spiceworks.com/how_to/show/1468 у меня также были ежедневные резервные копии, и таким образом, этот потенциал ' О, sh*t' момент был превращен в относительно незначительное прерывание. – jefflunt 11 March 2011 в 18:04
  • 5
    В пользу сообщества я волновал восстановление/восстановление DB с помощью метода, обрисованного в общих чертах здесь: community.spiceworks.com/how_to/show/1468 у меня также были ежедневные резервные копии, и таким образом, этот потенциал ' О, sh*t' момент был превращен в относительно незначительное прерывание. – jefflunt 11 March 2011 в 18:04

С логическими значениями не должно быть никакой разницы. Вы должны выбрать тот, который больше подходит для вашего чувства работы.

Пример:

bool oldChoice = ...;
bool newChoice = ...;
if (oldChoice != newChoice)
    ...

Здесь XOR даст тот же результат, но не будет отражать реальное намерение кода.

3
ответ дан Vlad 17 July 2012 в 15:26
поделиться

Они должны быть практически одинаковыми в этом случае.

0
ответ дан Jerry Coffin 17 July 2012 в 15:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: