㈠ java & &&
首先&既可以做位運算又可以做邏輯運算 &&只能做邏輯運算
作為邏輯運算符時:
表達式1 = 邏輯1 && 邏輯2
表達式2 = 邏輯3 & 邏輯4
&&:
如果邏輯1=FALSE 由於&& 就不會去判斷邏輯2了 因為既然是與判斷 邏輯1已經是FALSE了 表達式1自然為FALSE 不管邏輯2是FALSE還是TRUE 沒必要判斷了 如果邏輯1為TRUE 才會去判斷邏輯2的結果 邏輯2為TRUE 表達式1就為TRUE 邏輯2為FALSE 表達式就為FALSE
&:
如果邏輯3為FALSE 由於是& 雖然是與判斷 表達式2已經為FALSE了 但仍然會去判斷邏輯4 盡管無法改變表達式2的結果了 這就是區別於&&的地方 如果邏輯3為TRUE 就和&&一樣 繼續判斷邏輯4以求表達式2的結果
最後&作為位運算符的時候進行的是位運算 就是二進制運算 兩邊的值都是二進制數 結果也是位運算的結果 自然不會是簡單的0/1 做邏輯運算時兩邊的值都是0/1 它別無選擇 所以結果只能是0/1 關鍵是區別&什麼時候做的是位運算 什麼時候做的是邏輯運算
㈡ JAVA邏輯運算符短路的疑問!!!!!求達人幫忙
短路問題:
&&(和) 運算符
|| (或) 運算符
&& 運算符的優先順序高於 || 運算符
(你的表達式寫的不規范哦,最好是加上小括弧(),雖然你這里達到了同樣的效果)
假設兩個條件: P Q
&& 運算||運算
P TTFFPTTFF
Q TFTFQTFTF
TFFFTTTF
現在來看我們的 if 條件
flag = (x>='a' && x<='z') || (x>='A' && x<='Z')
因為 有 小括弧 () 所以優先順序最高
先看 || 運算 前面一段
即:flag1 = (x>='a' && x<='z')
因為:x = 'Z' ; 所以: x>='a' 就為 F
根據上面的&&運算表,我們可以看出
只要有一個條件為F,整個條件都F
(因為前面的條件(x>='a')為F,所以後面的條件(x<='z')是否正確,
計算機都不會去執行它了,這里就發生了短路)
即整個條件都為 flag1 = F
b. 接著我們來看 flag2 =(x>='A' && x<='Z')
因為:x = 'Z' ; 所以: x>='A' 就為 T
根據 && 運算符
前面為T,(我們才有執行下一個條件的可能性,而條件(x>='A')條件為T,所以程序 會去判斷後面的條件(a=『Z』),所以第二次沒有發生短路)
根據條件,後面也為 T
所以: flag2 = T
c . 最後我們根據 ||運算表, 我們可以得出結果
flag = flag1 || flag2 = ( F || T) = T
在||運算中,只要有一個為T,那麼整個表達式都是為T的。
所以:如過flag1為T,那麼無論flag2是否是T,計算機都不會在去執行flag2,這里也就發生了短路。
希望您能明白(思路有點亂)!
㈢ java裡面的短路是什麼意思
運算符書上說:「在java中的邏輯與和邏輯或運算符採用「短路」方法進行計算,先求出運算符左邊的表達式的值,對或運算如果為true,則整個表達式的結果為true,不必對運算符右邊的表達式進行計算。同樣,對與運算,如果左邊的表達式的值為false,則不必對右邊的表達式的值進行計算,整個表達式的值為false,」
㈣ JAVA中的邏輯運算符!
三、邏輯運算符:
&(與)
|(或)
!(反)
&:當兩邊同時為真時,結果為真,否則為假
|
:當兩邊有一邊為真時,結果為真,否則為假
!
:真值變假值,假值變真值
學JAVA也有不短的時間了,現在開發也有1年多了,不過你說的那些基礎知識我也記不得。我一開始也一樣害怕,學了就忘記了
不過告訴你,JAVA不是背出來的,是邏輯。
記憶方面,你只需要知道到哪裡去查閱。
這就是為什麼有那麼多API
reference等的原因啊,因為大家都記不得。
㈤ JAVA中&&和&、||和|(短路與和邏輯與、短路或和邏輯或)的區別是什麼
首先名稱是不同的 &&邏輯與 ||邏輯或 它們都是邏輯運算符 & 按位與 | 按位或 它們都是位運算符 if(a==1&&b==2) 這是說既要滿足a=1也要滿足b=2 if(a==1||b==2) 這是說或者滿足a=1或者要滿足b=2 而a&b或者a|b則是二進制的與或運算 &同為1時為1,否則為0 |同為0時為0,否則為1 3&5則 0011 &0101 0001 等於1 3|5則 0011 |0101 0111 等於7 明白了吧O(∩_∩)O~ 補充: && 邏輯與 也叫做短路與 因為只要當前項為假,它就不往後判斷了,直接認為表達式為假|| 邏輯或 也叫做短路或 因為只要當前項為真,它也不往後判斷了,直接認為表達式為真
㈥ 問一下java的一些問題
1 可以。聲明方較其它法沒有任何不同。比如Return a[]; 2 每個StringBuffer對象都能 夠存儲由其容量指定的字元。如果超出了StringBuffer對象的容量,則容量就會自動地擴大,以容納多出來的字元,這里的容量指內存空間,長度就是指字元串長了。 當使用邏輯操作符時,我們會遇到一種「短路」現象。即一旦能夠明確無誤地確定整個表達式的值,就不會再計算表達式剩餘的部分了。因此,整個邏輯表達式靠後的部分有可能不會被運算。 System.out.println(false||true);//輸出true,||不存在短路現象,表達式中有任意一部分為true就返回true,所以||邏輯操作符必須要將整個表達式運算完畢才能得出結果。 System.out.println(false&&true);//輸出false。表達式中有任意一部分為false,整個表達式就返回false。不必將整個表達式運算完畢。
㈦ java語言中關於或與短路或的問題。
換成邏輯運算符後,x++==1
是真,所以運算符後面的運算式不再執行,所以y=1
㈧ java中的短路與(&&)、短路或(||) 與 邏輯與(&)、邏輯或(|)有什麼區別啊
首先名稱是不同的:
&&邏輯與||邏輯或它們都是邏輯運算符
&按位與|按位或它們都是位運算符
if(a==1&&b==2)這是說既要滿足a=1也要滿足b=2
if(a==1||b==2)這是說或者滿足a=1或者要滿足b=2
而a&b或者a|b則是二進制的與或運算
&同為1時為1,否則為0
|同為0時為0,否則為1
3&5則
0011
&0101
0001
等於1
3|5則
0011
|0101
0111
等於7
&&邏輯與也叫做短路與因為只要當前項為假,它就不往後判斷了,直接認為表達式為假
||邏輯或也叫做短路或因為只要當前項為真,它也不往後判斷了,直接認為表達式為真
㈨ 打擾,JAVA中&&是邏輯運算符,表示邏輯與(and)還是短路與都是網上說的,不知道哪個是對的了。
短路與 第一個為假,後面的將不執行 直接返回假
ps:你可以寫一個來測試一下 比如if(1<2&&i++) 你看看i的值是否變了不就明白了
㈩ java短路邏輯與和短路邏輯或
額,&&是兩邊同時為真則為真,如果左邊為假,右邊不計算。 || 是只要有一邊為真 結果就為真,左邊為真,右邊不計算。