Java基礎學習(五)

問:&和&&的區別

&和&&都可以用作邏輯與的運算符,表示邏輯與(and)。當運算符兩邊的表達式的結果都爲true的時候,整個運算結果才爲true,否則,只要有一方爲false,則結果爲false。

&&還具有短路的功能,即如果第一個表達式爲false,則不再計算第二個表達式,例如,對於if(str!=null&&!str.equals(“”))表達式,當str爲null時,後面的表達式不會執行,所以不會出現NullPointerException如果將&&改爲&,則會拋出NullPointerException異常。
if(x==33&++y>0)y會增長,if(x==33&&++y)不會增長。

&還可以用作位運算符,當&操作符兩邊的表達式不是boolean類型時,&表示按位與操作,我們通常使用0x0f來和一個整數進行&運算,來獲取該整數的最低4個bit位,例如,0x31&0x0f的結果爲0x01.

問:在Java中怎麼跳出當前的多重循環?

1.可以使用標號。

2.讓外層循環的循環條件表達式的結果可以受到裏層循環代碼的控制。例如:

int array[][]={{1,2,3},{4,5,6,7},{8,9}};
boolean found=false;
for(int i=0;i<array.length&&!found;i++){
  for(int j=0;j<array[i].length;j++){
    System.out.println("i="+i+",j="+j);
    if(array[i][j]==5){
       found=true;
       break;
    }
  }
}

問:switch語句能否直接作用在byte上,能否直接作用在long上,能否直接作用在String上?

在switch(expr1)中,expr1只能是一個整數表達式或者枚舉常量,整數表達式可以是int基本類型或者Integer包裝類型。由於byte,short,char都可以隱含轉換爲int,所以這些類型以及這些類型的包裝類型也是可以的。顯然,long和String類型都不符合switch的語法規定,並不能被隱含轉換爲int,所以他們不能用於switch語句。

問:short s1=1;s1=s1+1;有什麼錯?short s1=1;s1+=1;有什麼錯?

對於short s1=1;s1=s1+1;由於s1+1運算時會自動提升表達式類型,所以結果是int型,再賦值給short類型的s1時,編譯器將報告需要強制轉換類型的錯誤。

對於short s1=1;s1+=1;由於+=是java語言規定的運算符,java編譯器會對它進行特殊處理,因此可以正確編譯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章