天天看點

java基礎學習_基礎文法(上)02_day03總結

=============================================================================

涉及到的知識點有:

0:基本概念概述

  1:運算

  2:運算符

  3:操作數

  4:表達式

1:運算符(掌握)

  (1)算術運算符(掌握)

  (2)指派運算符(掌握)

  (3)比較(關系)運算符(掌握)

  (4)邏輯運算符(掌握)

  (5)位運算符(了解)

  (6)三元(三目/條件)運算符(掌握)

2:鍵盤錄入(掌握)

3:流程控制語句

4:if語句(掌握)

  (1)三種格式:

  (2)注意事項:

  (3)案例:

  (4)三元運算符和if語句第二種格式的關系:

    對常量和變量進行操作的過程稱為運算。

    對常量和變量進行操作的符号稱為運算符。

    參與運算的資料稱為操作數

    用運算符把常量或者變量連接配接起來符合java文法的式子就可以稱為表達式。

    不同運算符連接配接的式子展現的是不同類型的表達式。

  舉例:

    int a = 3 + 4;

    這是做了一個加法運算。

    +就是運算符,且是算術運算符,我們還有其他很多的運算符。

    3,4就是參與運算的操作資料。

    3 + 4整體其實就是一個算數表達式。

-----------------------------------------------------------------------------

    A:+,  -,  *,  /,  %,  ++,  --

    B:+的用法:

      a:加法;

      b:正号;

      c:字元串連接配接(拼接)符。 例如:System.out.println("x="+x+",y="+y);

如下如圖所示00:

java基礎學習_基礎文法(上)02_day03總結

    C:/和%的差別:

      資料做除法操作的時候,/取得是商,%取得是餘數。

如下圖所示01:

java基礎學習_基礎文法(上)02_day03總結

    D:++和--的用法:

      a:他們的作用是:對變量進行自增1或者自減1。

      b:使用:

        **單獨使用時:

          放在操作資料的前面和後面效果是一樣。

            即:a++或者++a效果一樣。

        **參與操作使用時:

          放在操作數的前面時:先自增1或者自減1,再參與操作。

            int a = 10;

            int b = ++a;   //a = 11; b = 11;

          放在操作數的後面時:先參與操作,再自增1或者自減1。

            int b = a++;   //b = 10; a = 11;

如下圖所示02/03:

java基礎學習_基礎文法(上)02_day03總結
java基礎學習_基礎文法(上)02_day03總結

---------------------------------------

    A: 基本的指派運算符:=

      把=右邊的資料指派給左邊。

     擴充的指派運算符:+=,   -=,   *=,   /=,   %=,   等等。

      += 把左邊和右邊資料做加法後,然後将結果指派給左邊。

    B:=叫做指派運算符,也是最基本的指派運算符。

      int x = 10;    //把10指派給int類型的變量x。

    C:擴充的指派運算符的特點:

      擴充的指派運算符隐含了自動強制轉換。

      即:s += 1;

        不是等價于 s = s + 1;

        而是等價于 s = (s的資料類型)(s + 1);

      面試題:

        short s = 1;  //編譯有問題,報錯,可能損失精度。

        s = s + 1;     //short類型參與運算的時候預設轉換為int類型。而把int類型指派給short類型會有問題。

        short s = 1; //沒有問題。

        s += 1;        //因為+=隐含了自動強制轉換。

        請問上面的代碼哪個有問題?

    A:==,  !=,  >,  >=,  <,  <=,  instanceof(後面講)

    B:無論運算符兩端是簡單還是複雜最終結果是boolean類型。

    C:千萬不要把==寫成了=了。

    D:>=,  <=隻要有一個滿足即可,即:不管是大于,還是等于;或者不管是小于,還是等于。

如下圖所示04:

java基礎學習_基礎文法(上)02_day03總結

    A: &,    |,    ^,    !,    &&,   ||

如下圖所示05:

java基礎學習_基礎文法(上)02_day03總結

    B:邏輯運算符用于連接配接boolean類型的表達式,在java中不可以寫成3<x<6,而是應該寫成x>3&x<6。

      表達式:用運算符把常量或者變量連接配接起來符合java文法的式子就可以稱為表達式。

        例如:

          算術表達式:a + b

          比較表達式:a == b

    C:結論:

      邏輯與&:有false則false。

      邏輯或|:有true則true。

      邏輯異或^:相同則false,不同則true。

        舉例情侶關系:男男為false,女女為false,男女為true,女男為true。

      邏輯非!:非true則false,非false則true。

        偶數個歎号!不改變布爾類型,奇數個歎号!改變類型。

      邏輯雙與&&:最終的結果和&是一樣的,隻不過有短路效果。隻要左邊是false,右邊就不執行。

      邏輯雙或||:最終的結果和|是一樣的,隻不過有短路效果。隻要左邊是true,右邊就不執行。

        是以雙與(雙或)的效率更高!!!

      小結:在開發中常用的邏輯運算符為:&&, ||, ! 。

    因為我們一般是做十進制的運算的,而位運算是做的二進制的運算,是以我們一般不需要掌握,但是需要聽懂!

    因為在底層源碼中看大量看到位運算,因為我們的所有的操作在計算機底層都會變成為位運算。可以提高程式的效率。

如下如所示06:

java基礎學習_基礎文法(上)02_day03總結

    要做位運算,首先要把資料轉換為二進制。而且還得是補碼。

如下圖所示07:

java基礎學習_基礎文法(上)02_day03總結

    A:^異或位運算符的特殊用法:

      一個資料針對另一個資料位異或兩次,該資料本身不變。應用:可以對資料做一個簡單的加密。

如下圖所示08:

java基礎學習_基礎文法(上)02_day03總結

    B:面試題:

      以後講課過程中,若沒有明确說明資料類型的話,一般預設int類型。

      a:請實作兩個int變量的交換。int a = 10; int b = 20;

        法一:采用第三方變量(開發中用)。

          int c = a;

          a = b;

          b = c;

        法二:用位異或運算符(面試中用)。簡記為:等号左邊a,b,a 等号右邊a^b

          a = a ^ b;

          b = a ^ b;   //a ^ b ^ b = a = b

          a = a ^ b;   //a ^ b ^ a = b = a

        法三:用變量相加的方法。

          a = a + b;

          b = a - b;   //a + b - b = a = b

          a = a - b;   //a + b - a = b = a

        法四:一句話搞定。

          b = (a + b) - (a = b); //b = a + b - b = a

      b:請用最有效率的方式計算出2乘以8的結果

        2<<3

如下圖所示09/10:

java基礎學習_基礎文法(上)02_day03總結
java基礎學習_基礎文法(上)02_day03總結

    單目運算符:~3

    雙目運算符:3 + 4

    A:三目運算符格式:

      比較表達式? 表達式1 : 表達式2;

    B:執行流程:

      首先計算比較表達式的值,看是true還是false。

      如果是true,表達式1就是結果。

      如果是false,表達式2就是結果。

    C:案例:

      a:擷取兩個資料中的最大值。

        int max = ((x > y)? x : y);

      b:擷取三個資料中的最大值。

        法一: int tmpe = ((a > b)? a : b);

            int max = ((tmpe > c)? tmpe : c);

        法二: int max = (a > b)? ((a > c)? a : c) : ((b > c)? b : c);  //三目運算符的嵌套使用。

      c:比較兩個資料是否相等。

        法一: boolean flag = ((a == b)? true : flase);   //這樣寫太啰嗦了。

        法二: boolean flag = (a == b);

 如下圖所示11:

java基礎學習_基礎文法(上)02_day03總結

-----------------------------------------------------------------------------

  (1)實際開發中,資料是變化的,為了提高程式的靈活性,我們加入鍵盤錄入資料。

  (2)如何實作鍵盤錄入資料呢?目前就記住:

    A:導包:

      import java.util.Scanner;

      位置:在class定義的上邊。

    B:建立鍵盤錄入對象:

      Scanner sc = new Scanner(System.in);

    C:通過對象擷取資料:

      int x = sc.nextInt();

  (3)把三元運算符的案例加入鍵盤錄入改進。

  (1)順序結構:從上往下,依次執行。

  (2)選擇結構:按照不同的選擇,執行不同的代碼。

  (3)循環結構:做一些重複的代碼。

  選擇結構也稱為分支結構。Java語言提供了兩種選擇結構語句。

    1)if語句。

    2)switch語句。

    A:格式1:

    if(比較/關系表達式) {

      語句體;

    }

    執行流程:

      判斷比較表達式的值,看是true還是false。

      如果是true,就執行語句體。

      如果是false,就不執行語句體。

---------------------------------------

  B:格式2

    if(比較表達式) {

      語句體1;

    }else {

      語句體2;

    }

      如果是true,就執行語句體1。

      如果是false,就執行語句體2。

      if語句的第二種格式與三元運算符的差別如下圖所示12:

java基礎學習_基礎文法(上)02_day03總結

---------------------------------------

  C:格式3

    if(比較表達式1) {

    }else if(比較表達式2) {

    }else if(比較表達式3) {

      語句體3;

    }...

      ...

    }else if(比較表達式n) {

      語句體n;

    else {

      語句體n+1;

      判斷比較表達式1的值,看是true還是false。

      如果是false,就繼續判斷比較表達式2的值,看是true還是false。

      如果是true,就執行語句體2。

      如果是false,就繼續判斷比較表達式3的值,看是true還是false。

      如果都不滿足,就執行語句體n+1。

    A:比較表達式無論是簡單還是複雜,結果必須是boolean類型。

    B:if語句控制的語句體如果是一條語句,是可以省略大括号的;如果是多條語句,則不能省略。

      建議:永遠不要省略。

    C:一般來說:有左大括号就沒有分号,有分号就沒有左大括号。

如下圖所示13:

java基礎學習_基礎文法(上)02_day03總結

    D:else後面如果沒有if,是不會出現比較表達式的。

    E:三種格式的if語句其實都是一個語句,隻要有一個語句體執行,其他的語句體就不再執行。

    A:比較兩個數是否相等。

    B:擷取兩個數中的最大值。

    C:擷取三個數中的最大值(if語句的嵌套)。

    D:根據成績輸出對應的等級。

    E:根據月份,輸出對應的季節。

    F:根據x計算對應y的值并輸出。

如下圖所示14:

java基礎學習_基礎文法(上)02_day03總結

  (4)三元運算符和if語句第二種格式的關系:

    所有的三元運算符能夠實作的,if語句的第二種格式都能實作。

    反之不成立。

    如果if語句第二種格式控制的語句體是輸出語句,就不可以。

    因為三元運算符是一個運算符,必須要求有一個結果傳回。不能是一個輸出語句。

我的GitHub位址:

https://github.com/heizemingjun

我的部落格園位址:

http://www.cnblogs.com/chenmingjun

我的螞蟻筆記部落格位址:

http://blog.leanote.com/chenmingjun

Copyright ©2018 黑澤明軍

【轉載文章務必保留出處和署名,謝謝!】