Java 有趣的布尔语法
我最近碰到了一些奇怪的事情。考虑以下方法:Java 有趣的布尔语法,java,boolean,Java,Boolean,我最近碰到了一些奇怪的事情。考虑以下方法: public boolean addAll(Collection<T> col) { boolean added = false; for(T t : col) added |= add(t); return added; } public boolean addAll(集合列){ 布尔加法=假; for(T:col) 添加|=添加(t); 增加了退货; } 虽然我知道这是什么意思,但如果它至
public boolean addAll(Collection<T> col) {
boolean added = false;
for(T t : col)
added |= add(t);
return added;
}
public boolean addAll(集合列){
布尔加法=假;
for(T:col)
添加|=添加(t);
增加了退货;
}
虽然我知道这是什么意思,但如果它至少超过一次(如果后面的元素失败),就不要将其更改为false。但这究竟意味着什么呢。它是怎么读的。在
boolean
中是否有类似的小工具 操作符|=
与此等价:
added = ( added | add(t) );
|=
运算符与此等效:
added = ( added | add(t) );
它是按位或与等号组合的 同样地,如果它之前被设置为true(即
1
),如果您使用它按位或true或false(1
或0
),您将始终返回true(1
)作为0或1=1
和1或1=1
它实际上与以下内容相同:
added = (added | add(t));
它是按位或与等号组合的 同样地,如果它之前被设置为true(即
1
),如果您使用它按位或true或false(1
或0
),您将始终返回true(1
)作为0或1=1
和1或1=1
它实际上与以下内容相同:
added = (added | add(t));
你是说
|=
?我不确定您的=|
语法是否有效。如果至少成功添加了一项,则添加的为真。。下次试试SymbolHound:你是说|=
?我不确定您的=|
语法是否有效。如果至少成功添加了一项,则添加的为真。。下次尝试SymbolHound:@MouseEvent:不确定这是否有效,但即使有效,|
也会被延迟计算,这意味着如果左值已经为true,则不会调用add()
函数,该函数是逻辑OR,其行为与按位OR不同。请参阅:@Mark:确实它是惰性计算的,逻辑OR会短路,而按位OR不会短路。@MouseEvent| |=
不是有效的运算符。我知道按位运算符,但从来不知道布尔值也是这样工作的…@MouseEvent:不确定这是否有效,但即使有效,|
是延迟计算的,这意味着如果左值已经为true,则不会调用add()
函数,该函数是逻辑OR,其行为与按位OR不同。请参阅:@Mark:确实它是惰性计算的,逻辑OR将短路,而按位OR将不会短路。@MouseeEvent| |=
不是有效的运算符。我知道按位运算符,但从来不知道布尔运算也是如此。。。