
Сравнительная таблица
Основа для сравнения | & | && |
---|---|---|
оператор | Это «побитовый оператор». | Это «Логический оператор». |
оценка | Он оценивает как левую, так и правую часть выражения. | Он оценивает только левую часть выражения. |
Работает на | Он работает с «логическим типом данных», а также с «битами». | Он работает только на «логическом типе данных». |
использование | Используется для проверки логического состояния, а также используется для маскировки определенных битов, таких как биты четности. | Используется только для проверки логического состояния. |
Определение & (Побитовое И)
Этот оператор «&» используется как логический (&) оператор и как побитовый оператор. Он работает как с булевыми, так и с двоичными данными. Когда & оператор используется в качестве логического & оператора, то это приводит к «истине», если обе стороны выражения оценки истинны, в противном случае он возвращает «ложь». Это позволяет компилятору оценивать обе стороны выражения. То есть, даже если левая часть выражения приводит к ложному результату, она оценивает правую часть выражения.
Позвольте нам понять это на примере.
int a = 4, b = 5; system.out.println ((a == 6) & (b ++ == 6)); system.out.println ("b =" + b); // вывод ложь b = 5
Здесь при оценке левой части выражения (a == 6) это приводит к значению false, а оператор & затем вычисляет правую часть выражения (b ++ == 6), в результате значение b увеличивается на единицу.
Когда «&» используется как «побитовый оператор», он сначала преобразует оба операнда в двоичную форму, а затем работает с ним, используя & оператор, побитовый бит. После операции полученный результат находится в двоичной форме, которая затем преобразуется в десятичную. Любой бит, равный 0 в любом из операндов, приводит к 0. Если оба бита операндов равны 1, то результирующий бит равен 1. Битовый оператор & определяется той же таблицей истинности, что и его логический оператор &.
Давайте посмотрим на побитовую операцию оператора &.
int a; а = 3 и 4; // 011 & 100 = 000 system.out.println ("a =" + a); // выводим a = 0
Здесь десятичные значения 3 и 4 первоначально преобразуются в их двоичную форму, а затем оператор & bitwise выполняет операцию & над ними побитно. Полученный результат находится в двоичной форме, которая затем снова преобразуется в десятичную форму.
Определение && (Короткое замыкание И)
Этот оператор && работает полностью как логический оператор. Он работает только с логическим типом данных. Это также называется оператором короткого замыкания. Так как он проверяет только левую часть выражения. Если левая часть выражения приводит к значению false, тогда она не беспокоится об оценке правой части выражения.
Позвольте нам понять работу оператора && на примере.
int a = 4, b = 5; system.out.println ((a == 6) && (b ++ == 6)); system.out.println ("b =" + b); // вывод ложь b = 4
Здесь, поскольку условие (a == 6) ложно, оператор && не оценивает выражение (b ++ == 6) в результате, значение b не увеличивается.
Ключевые различия между & и &&
- Оператор & является логическим, а также побитовым оператором, поскольку он работает как с логическими, так и с двоичными данными, тогда как оператор && является только логическим оператором, поскольку он работает только с логическим типом данных.
- Оператор & вычисляет обе стороны выражения, чтобы получить конечный результат, тогда как оператор && оценивает только левую часть выражения, и если получится false, он даже не оценивает правую часть выражения.
Замечания:
При оценке логического типа данных оба оператора выдают «true», только если оба операнда имеют значение «истина», в противном случае возвращается «ложь».
Заключение:
Операторы & и && оба используются для оценки логического условия, тогда как оператор & также используется для побитовой операции. Когда нам требуется оценить обе стороны выражения, используется оператор &, иначе мы можем использовать оператор &&.