Эффект побитового оператора на булевской переменной в Java

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

, Таким образом, подписанный хороший общий выбор - даже когда Вы абсолютно уверенны, все числа положительны - если Вы собираетесь сделать арифметику на переменной (как в типичном для случая цикла).

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

Лично, мне нравится подписанный, потому что я не доверяю мне, чтобы остаться последовательным и постараться не смешиваться, два типа (как статья предостерегает от).

108
задан Daniel Bingham 4 February 2014 в 22:41
поделиться

3 ответа

Операторы &, ^ и | являются побитовыми операторами, когда операнды являются примитивными целочисленными типами. Они являются логическими операторами, когда операнды являются логическими, и их поведение в последнем случае указано. Подробности см. В разделе 15.22.2 Спецификации языка Java .

и | являются побитовыми операторами, когда операнды являются примитивными целочисленными типами. Они являются логическими операторами, когда операнды являются логическими, и их поведение в последнем случае указано. Подробности см. В разделе 15.22.2 Спецификации языка Java .

и | являются побитовыми операторами, когда операнды являются примитивными целочисленными типами. Они являются логическими операторами, когда операнды являются логическими, и их поведение в последнем случае указано. Подробности см. В разделе 15.22.2 Спецификации языка Java .

111
ответ дан 24 November 2019 в 03:31
поделиться

Использование побитового оператора позволяет обойти короткое замыкание:

boolean b = booleanExpression1() && booleanExpression2();
boolean b = booleanExpression1() & booleanExpression2();

Если booleanExpression1 () оценивается как false , то
booleanExpression2 ( ) не вычисляется в первом случае, а
booleanExpression2 () (и любые побочные эффекты, которые оно может иметь) вычисляется во втором случае,

81
ответ дан 24 November 2019 в 03:31
поделиться

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

http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#5228

3
ответ дан 24 November 2019 в 03:31
поделиться
Другие вопросы по тегам:

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