Я был рад найти хороший разговор на этом предмете, поскольку я действительно не дал его, очень думал прежде.
, Таким образом, подписанный хороший общий выбор - даже когда Вы абсолютно уверенны, все числа положительны - если Вы собираетесь сделать арифметику на переменной (как в типичном для случая цикла).
, Если Вы собираетесь сделать поразрядные вещи как маски, неподписанные запуски, чтобы иметь больше смысла. Или, если Вы отчаянно пытаетесь получать тот дополнительный положительный диапазон путем использования в своих интересах знакового бита.
Лично, мне нравится подписанный, потому что я не доверяю мне, чтобы остаться последовательным и постараться не смешиваться, два типа (как статья предостерегает от).
Операторы &, ^ и | являются побитовыми операторами, когда операнды являются примитивными целочисленными типами. Они являются логическими операторами, когда операнды являются логическими, и их поведение в последнем случае указано. Подробности см. В разделе 15.22.2 Спецификации языка Java .
и | являются побитовыми операторами, когда операнды являются примитивными целочисленными типами. Они являются логическими операторами, когда операнды являются логическими, и их поведение в последнем случае указано. Подробности см. В разделе 15.22.2 Спецификации языка Java . и | являются побитовыми операторами, когда операнды являются примитивными целочисленными типами. Они являются логическими операторами, когда операнды являются логическими, и их поведение в последнем случае указано. Подробности см. В разделе 15.22.2 Спецификации языка Java .Использование побитового оператора позволяет обойти короткое замыкание:
boolean b = booleanExpression1() && booleanExpression2();
boolean b = booleanExpression1() & booleanExpression2();
Если booleanExpression1 ()
оценивается как false
, то
booleanExpression2 ( )
не вычисляется в первом случае, а
booleanExpression2 ()
(и любые побочные эффекты, которые оно может иметь) вычисляется во втором случае,
Даже если это сработает, не надо этого делать. Спецификации языка определяют побитовые операторы только тогда, когда оба операнда имеют примитивные целочисленные типы или оба имеют логический тип. Я бы сказал, что в любом другом случае результаты не определены:
http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#5228