可能重複:
Why do we usually use||
not|
, what is the difference?OR運算符||之間的區別和|在Java中?
任何一個可以解釋之間和在Java中的使用或操作(||
和|
)的區別。感謝
e.g:
if(a || b) {
// Do something.
}
和
if(a | b) {
// Do something.
}
可能重複:
Why do we usually use||
not|
, what is the difference?OR運算符||之間的區別和|在Java中?
任何一個可以解釋之間和在Java中的使用或操作(||
和|
)的區別。感謝
e.g:
if(a || b) {
// Do something.
}
和
if(a | b) {
// Do something.
}
這很簡單。 http://www.roseindia.net/help/java/o/java-operator.shtml說:
OR運算符是一種有條件的運算符,它由 代表|符號。它根據變量的狀態 返回true或false值,即在兩個布爾表達式之間執行的使用條件運算符的操作是 。
OR運算符(|)類似於條件OR運算符(||),並且 返回true,如果其操作數的某個或另一個爲true。
注意:在||
操作,如果有一個以上的條件,如果忽略第一個條件return true
那麼其他的條件,但在運營商|
所有條件考試系統。
上有http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
如果您使用操作|| JVM不會單獨評估右手操作數。
該||運算符是一個布爾運算符
它可以用簡單的英語解釋爲......
if (a is true or b is true)
{
//do soemthing
}
的|運營商是一個邏輯運算符
它僅適用於整數類型如int,焦炭等..
它是在兩個操作數的按位或運算
例如:
bool a = true;
bool b = false;
bool c = a | b;
//c will be true
if(a | b)
{
}
is same as
c = a | b;
if (c == true)
{
do something;
}
第一個是一個邏輯或更多的信息。運營商的雙方都處理爲boolean
值,結果爲boolean
。如果所討論的變量本身不是boolean
,那麼它們將變爲false,如果它們是0
或null
。
第二個是按位或操作符。這通常只適用於整數。我將這兩個值逐位進行比較並給出結果編號。例如:
5 | 6 = 7 (decimal)
101 | 110 = 111 (binary)
進一步的細節看看Wikipedia: Logical disjunction
首先是一個邏輯或,後者按位或。但是,如果兩個運算符(您的示例中的a和b)是布爾型的,則按位或 - 被視爲邏輯或不短路。有時這可能會很方便。
例如,考慮:
boolean getTrue() {
System.out.println("getTrue() called");
return true;
}
public static void main(String[] args) {
boolean a = getTrue() || getTrue();
System.out.println("Result: " + a);
}
上面將只打印「getTrue()稱爲」一次作爲邏輯 - 或(||)可以立即確定該表達式的結果,而不調用getTrue( )第二次。更改爲按位或(即boolean a = getTrue()| getTrue();)將導致兩次調用getTrue()。
使用按位運算和getFalse()方法會產生類似的結果。
要考慮的另一方面是位邏輯運算符在邏輯運算符之前獲得偏好。因此,不建議將它們混合爲按位或在邏輯和之前執行,這可能會導致不需要的行爲。它可以使用括號()來修復,但我認爲應該避免。
作爲一個便箋,我不同意你的問題的反對票,這是一個有效的,很好的問題! (給它一個+1)
前者是邏輯OR運算符,後者是按位或運算符。或多或少,主要區別在於邏輯單元評估爲布爾型,按位取決於ORed類型。還有一些其他的區別。 – BigMike 2012-04-10 07:09:50
類似的問題已經回答了http://stackoverflow.com/questions/7101992/why-do-we-usually-use-not-what-is-the-difference – 2012-04-10 07:11:12