& 和& & 的區(qū)別
& 和& & 的區(qū)別
我想很多人在學(xué)習(xí)java的時(shí)候,或者其他語(yǔ)言(如:C#,.Net等)都會(huì)遇到&和&&。然而,如果你沒有真正的理解& 和& &的意思,這會(huì)給你思路上面帶來(lái)很大的麻煩,下面,小編給大家介紹& 和& & amp的區(qū)別,一起來(lái)看看小編為大家準(zhǔn)備的java中&和&&的區(qū)別例子吧。
&的意思
"&"就是'&'
因?yàn)?amp;是轉(zhuǎn)義符號(hào),沒有什么特別的意思
& = &
在HTML中的&用& 來(lái)表示
比如你要得到' '的字符串,而不是空格,那就用
&&的意思
&&是在編程中使用的一種符號(hào)。在Java和PHP,bat,c++,c語(yǔ)言中分別有著不同的含義。
1:&&在Java和PHP以及c#中都是邏輯操作符,也叫條件操作符。
2:&&在bat中順序執(zhí)行多條命令,執(zhí)行過程中如命令出錯(cuò)則停止執(zhí)行之后的命令。
3:c++中也會(huì)用&&來(lái)指定一個(gè)rvalue的引用類型。
4:c語(yǔ)言中&&是一種雙目運(yùn)算符,表示與運(yùn)算,而當(dāng)左邊所給表達(dá)式或變量為0時(shí),不再計(jì)算右側(cè),整個(gè)表達(dá)式為零。
&和&&的意義區(qū)別
&和&&都可以用作邏輯與的運(yùn)算符,表示邏輯與(and),當(dāng)運(yùn)算符兩邊的表達(dá)式的結(jié)果都為true時(shí),整個(gè)運(yùn)算結(jié)果才為true,否則,只要有一方為false,則結(jié)果為false。
&&還具有短路的功能,即如果第一個(gè)表達(dá)式為false,則不再計(jì)算第二個(gè)表達(dá)式,例如,對(duì)于if(str != null && !str.equals(“”))表達(dá)式,當(dāng)str為null時(shí),后面的表達(dá)式不會(huì)執(zhí)行,所以不會(huì)出現(xiàn)NullPointerException如果將&&改為&,則會(huì)拋出NullPointerException異常。If(x==33 & ++y>0) y會(huì)增長(zhǎng),If(x==33 && ++y>0)不會(huì)增長(zhǎng)
&還可以用作位運(yùn)算符,當(dāng)&操作符兩邊的表達(dá)式不是boolean類型時(shí),&表示按位與操作,我們通常使用0x0f來(lái)與一個(gè)整數(shù)進(jìn)行&運(yùn)算,來(lái)獲取該整數(shù)的最低4個(gè)bit位,例如,0x31 & 0x0f的結(jié)果為0x01。
& 和& &的使用區(qū)別
1、先看看&&,它是我們?cè)诔绦蛟O(shè)計(jì)中經(jīng)常用到的一個(gè)操作符,和||相對(duì)應(yīng),表示boolean的邏輯運(yùn)算,當(dāng)使用&&運(yùn)算符時(shí) 如果第一表達(dá)式為假就不再判斷第二表達(dá)式的真假,直接返回false;
例子:2>1 && 3>2返回true,2<1 && 100/0 == 1返回false;
2、在看看&,它是位運(yùn)算符,什么意思呢,看個(gè)例子:
2&3=2;
具體分析為:
2的二進(jìn)制為10
3的二進(jìn)制為11
邏輯&之后為10;
通過&運(yùn)算符還能解決一個(gè)問題:
現(xiàn)在給你一個(gè)數(shù)字,怎么判斷它是不是2的冪?
(b & (b-1)) == 0 就可以判斷
&運(yùn)算符也可做與運(yùn)算,但是它做與運(yùn)算時(shí)不管第一表達(dá)式成立不成立都會(huì)去運(yùn)算第二表達(dá)式;
例子:
1 > 2 & (5 - 1) > 6返回false;而2<1 & 100/0 == 1會(huì)拋出java.lang.ArithmeticException異常。
java中&和&&的區(qū)別舉例
1、java中&的示例
public class Test2{
public static void main(String[] args){
int i=3;
if((i++>5)&(i++<9)){
System.out.println(i);
System.out.println("恭喜,執(zhí)行完了條件語(yǔ)句!");
}
System.out.println(i);
}
}
從條件判斷語(yǔ)句來(lái)看,是不成立的,但是i是自加了兩次,有初始值3變成5。
2、java中&&的示例
public class Test2{
public static void main(String[] args){
int i=3;
if((i++>5)&&(i++<9)){
System.out.println(i);
System.out.println("恭喜,執(zhí)行完了條件語(yǔ)句!");
}
System.out.println(i);
}
}
從條件判斷語(yǔ)句來(lái)看是不成立的,變量i只自加了一次。
3、java中&和&&的區(qū)別總結(jié)
&和&&都是邏輯運(yùn)算符,都是判斷兩邊同時(shí)真則為真,否則為假;但是&&當(dāng)?shù)谝粋€(gè)條件不成之后,后面的條件都不執(zhí)行了,而&則還是繼續(xù)執(zhí)行,直到整個(gè)條件語(yǔ)句執(zhí)行完為止。如&&例子中的i++>5被執(zhí)行了,而i++<9并沒有被執(zhí)行,這就是他們的差別。&例子中的i++>5和i++<9都被執(zhí)行了。
編程的相關(guān)文章: