04 Java語言基礎2-邏輯、位與、三元、if、switch

邏輯/位與/三元/if/switch

邏輯運算符的基本用法

  • A:邏輯運算符有哪些

    • &,|,^,!分別是邏輯與、邏輯或、邏輯異或、邏輯非(前面三個都是至少有兩個參數比較)。
    • &&,||
      邏輯異或^兩邊相同爲false,不同爲true,可以看成是異性戀,同性就不行,會pass掉
  • 注意事項:

    • a:邏輯運算符一般用於連接boolean類型的表達式或者值。
    • b:表達式:就是用運算符把常量或者變量連接起來的符合java語法的式子。
      • 算術表達式:a + b
      • 比較表達式:a == b(條件表達式)
  • C:結論:
  • &邏輯與:有false則false。
  • |邏輯或:有true則true。
  • ^邏輯異或:相同爲false,不同爲true。
  • !邏輯非:非false則true,非true則false。
    • 特點:偶數個不改變本身。

邏輯運算符&&和&的區別

  • A:案例演示
    • &&和&的區別?
      • a:最終結果一樣。
      • b:&&具有短路效果。左邊是false,右邊不執行。
      • &是無論左邊是false還是true,右邊都會執行
  • B:同理||和|的區別?(學生自學)
  • C:開發中常用誰?
    • &&,||,!

位運算符的基本用法

  • A:位運算符有哪些
    • &,|,^,~ ,>>,>>>,<<
    • 位與,位或,位異或
  • B:案例演示

    • 位運算符的基本用法1

    • &,|,^,~ 的用法把0看成false.1看成true

    • &:有0則0
    • |:有1則1
    • ^:相同則0,不同則1
    • ~:按位取反(原碼取反減去1在去反碼,得到原碼)

位異或運算符的特點及面試題

  • A:案例演示

    • 位異或運算符的特點

    • ^的特點:一個數據對另一個數據位異或兩次,該數本身不變。(比如5^7^7=5)

  • B:面試題:

    • 請自己實現兩個整數變量的交換
      開發中常常是有第三種個變量來參與
      面試中要求兩個變量,那麼就要塑造一個僞小三,
      第一種答案(有弊端,加減有可能超過int的取值範圍)
      x=2;y=4
      x=x+y;
      y=x-y;
      x=x-y
      或者:x=3;y=9;
      x=x-y;
      y=x+y;
      x=y-x
      第二種答案:利用異或的特性:一個數據對另一個數據位異或兩次,該數本身不變
      x=x^y;
      y=x^y;
      x=y^x
      延伸題:如何用5L和3L的玻璃杯測出4L的水;

把3升裝滿倒入空5升瓶裏,再把3升裝滿倒入5升瓶裏這時3升瓶裏還剩1升。把1升倒進空5升瓶裏,再把3升裝滿倒進5升瓶裏,得到4升水

位運算符的基本用法2及面試題

  • A:案例演示 >>,>>>,<<的用法:
    • <<:左移 左邊最高位丟棄,右邊補齊0
    • >>:右移 最高位是0,左邊補齊0;最高爲是1,左邊補齊1
    • >>>:無符號右移 無論最高位是0還是1,左邊補齊0
    • 最有效率的算出2 * 8的結果

三元運算符的基本用法

  • A:三元運算符的格式
  • a(關係表達式) ? 表達式1 : 表達式2;
  • B:三元運算符的執行流程 賦值
  • 如果表達式爲真,則a=1,a=2

三元運算符的練習

  • A:案例演示
    • 比較兩個整數是否相同
  • B:案例演示
    • 獲取三個整數中的最大值

順序結構語句

  • A:什麼是流程控制語句
    • 流程控制語句:可以控制程序的執行流程。
  • B:流程控制語句的分類
    • 順序結構
    • 選擇結構
    • 循環結構
  • C:執行流程:
    • 從上往下,依次執行。

選擇結構if語句格式1及其使用

  • A:選擇結構的分類
    • if語句
    • switch語句
  • B:if語句有幾種格式
    • 格式1
    • 格式2
    • 格式3
  • C:if語句的格式1

  • if(比較表達式) {
    語句體;
    }
  • D:執行流程:
    • 先計算比較表達式的值,看其返回值是true還是false。
    • 如果是true,就執行語句體;
    • 如果是false,就不執行語句體;

選擇結構if語句注意事項

  • A:案例演示
    • a:比較表達式無論簡單還是複雜,結果必須是boolean類型
    • b:if語句控制的語句體如果是一條語句,大括號可以省略;
      • 如果是多條語句,就不能省略。建議永遠不要省略。
    • c:一般來說:有左大括號就沒有分號,有分號就沒有左大括號

選擇結構if語句格式2及其使用

  • A:if語句的格式2

  • if(比較表達式) {
    語句體1;
    }else {
    語句體2;
    }
  • B:執行流程:
    • 首先計算比較表達式的值,看其返回值是true還是false。
    • 如果是true,就執行語句體1;
    • 如果是false,就執行語句體2;
  • C:案例演示

    • a:獲取兩個數據中較大的值
    • b:判斷一個數據是奇數還是偶數,並輸出是奇數還是偶數

    • 注意事項:else後面是沒有比較表達式的,只有if後面有。

if語句的格式2和三元的相互轉換問題

  • A:案例演示
    • if語句和三元運算符完成同一個效果
  • B:案例演示

    • if語句和三元運算符的區別

    • 三元運算符實現的,都可以採用if語句實現。反之不成立。

    • 什麼時候if語句實現不能用三元改進呢?

      • 當if語句控制的操作是一個輸出語句的時候就不能。
      • 爲什麼呢?因爲三元運算符是一個運算符,運算符操作完畢就應該有一個結果,而不是一個輸出。

選擇結構if語句格式3及其使用

  • A:if語句的格式3:

  • if(比較表達式1) {
    語句體1;
    }else if(比較表達式2) {
    語句體2;
    }else if(比較表達式3) {
    語句體3;
    }

    else {
    語句體n+1;
    }
  • B:執行流程:

    • 首先計算比較表達式1看其返回值是true還是false,
    • 如果是true,就執行語句體1,if語句結束。
    • 如果是false,接着計算比較表達式2看其返回值是true還是false,

    • 如果是true,就執行語句體2,if語句結束。

    • 如果是false,接着計算比較表達式3看其返回值是true還是false,

    • 如果都是false,就執行語句體n+1。

  • C:注意事項:最後一個else可以省略,但是建議不要省略,可以對範圍外的錯誤值提示

選擇結構if語句的嵌套使用

  • A:案例演示
    • 需求:獲取三個數據中的最大值
    • if語句的嵌套使用。

選擇結構switch語句的格式及其解釋

  • A:switch語句的格式
  • switch(表達式) {
          case 值1:
            語句體1;
            break;
            case 值2:
            語句體2;
            break;
            …
            default:    
            語句體n+1;
            break;
    }
    
  • B:switch語句的格式解釋

  • C:面試題
    • byte可以作爲switch的表達式嗎?
    • long可以作爲switch的表達式嗎?
    • String可以作爲switch的表達式嗎?
      * 在Java7之前,switch只能支持 byte、short、char、int或者其對應的封裝類以及Enum類型。在Java7中,也支持了String類型。double沒門
  • C:執行流程
    • 先計算表達式的值
    • 然後和case後面的匹配,如果有就執行對應的語句,否則執行default控制的語句

選擇結構switch語句的注意事項

  • A:案例演示
    • a:case後面只能是常量,不能是變量,而且,多個case後面的值不能出現相同的
    • b:default可以省略嗎?
      • 可以省略,但是不建議,因爲它的作用是對不正確的情況給出提示。
      • 特殊情況:
        • case就可以把值固定。
        • A,B,C,D多值
        • switch (i)
          {
          case 1:case 2:case 3:case 4:
          Console.WriteLine("ok!**********");
          break;
          case 5:
          Console.WriteLine("wrong!*******");
          break;
          default:
          Console.WriteLine("default case!*********");
          break;
          }
          }
    • c:break可以省略嗎?
      • 最後一個可以省略,其他最好不要省略
      • 會出現一個現象:case穿透。
      • 最終我們建議不要省略
    • d:default一定要在最後嗎?
      • 不是,可以在任意位置。但是建議在最後
    • e:switch語句的結束條件
      • a:遇到break就結束了
      • b:執行到switch的右大括號就結束了

選擇結構if語句和switch語句的區別

  • A:總結switch語句和if語句的各自使用場景
  • switch建議判斷固定值的時候用
  • if建議判斷區間或範圍的時候用

201611080027

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