1. 程式人生 > >Java基礎系列--02_運算符和程序的語句

Java基礎系列--02_運算符和程序的語句

temp 跳轉 循環 基本 mismatch 另一個 對象 鍵盤錄入 底層

運算符:
  (1)算術運算符:
      +,-,*,/,%,++,--(加、減、乘、除、取余、自增,自減)
    ++和--的註意事項:
      a:他們的作用是自增或者自減
      b:使用
        1.單獨使用
          放在操作數據的前面和後面效果一樣。
          a++或者++a效果一樣。
        2.參與操作使用
          放在操作數的前面:先自增或者自減,再參與操作

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

1 int a = 10;
2 int
b = ++a; //b=11,a=11 3 int a = 10; 4 int b = a++; //b=10,a=11

  (2)賦值運算符
    A:=,+=,-=,*=,/=,%=(等於,加等於,減等於,乘等於,除等於,取摸等於)
    B:=叫做賦值運算符,也是最基本的賦值運算符
      舉例:int x = 10; 把10賦值給int類型的變量x。
    C:擴展的賦值運算符的特點
        隱含了自動強制轉換。
    舉例代碼:

1 short s = 1;//聲明變量s,並將常量1賦值給變量s
2 s = s + 1; //
Type mismatch: cannot convert from int to short short ss = 1; 3 short ss += 1; //ss變量加上常量值1 4 /*s = s + 1; s轉換為int型,在參與運算,得到的結果仍然是int型, 5 *而ss是short型無法將int轉換為short,所以報錯。 6 */

  (3)比較運算符
    A:==,!=,>,>=,<,<=
    B:無論運算符兩端簡單還是復雜最終結果是boolean類型。
    C:千萬不要把==寫成了=(==表示比較,=是賦值)
  (4)邏輯運算符


    A:常用的:!,&&,||   不常用:&,|,^,
    B:邏輯運算符用於連接boolean類型的式子,得到的結果也是boolean類型
    C:結論
      !:非true則false,非false則true
      &&:結果和&是一樣的,都表示與運算,只不過有短路效果,即判斷左邊的表達式可以確定整個表達式的值,就不再運算其他部分表達式,而&要運算全部的表達式。

        舉例:(1 !=1 && a > b)左邊是false,右邊不執行。
      ||:結果和|是一樣的,只不過有短路效果。左邊是true,右邊不執行。
      &:有false則false
      |:有true則true
      ^:相同則false,不同則true。(異或)
  (5)位運算符
    ^的特殊用法
      一個數據針對另一個數據位異或兩次,該數不變
  舉例:
    1.實現兩個變量的交換:
      A:采用第三方變量
      B:用位異或運算符

 1 /*實現兩個變量的交換*/
 2 //方式一:采用第三方變量
 3 //方式二:巧用位異或運算符
 4 int a=0;             //0000
 5 int b=10;           //1010
 6 //方式一:
 7 int temp =  0;
 8 temp = a;
 9 a = b;
10 b = temp;
11 //方式二:
12 a = a^b;     //a=1010->10 使用異或操作符不僅節省了代碼量,還可以讓程序更加快速,更加專業,因為異或的底層是二進制的運算

   2.最有效率的方式計算出256乘以8和256除以16的結果
    256<<3 = 2048(二進制碼右移3位補0),256>>4 = 16(二進制碼左移4位補0)
     <<,>>是移位操作符,一個是右移,一個是左移。每向右移動一位都相當於是乘2,每向左移動一位都相當於是除2
  (6)三元運算符
    A:格式
      比較表達式?表達式1:表達式2;
    B:執行流程:
      首先計算比較表達式的值,看是true還是false。
      如果是true,表達式1就是結果。
      如果是false,表達式2就是結果。
        舉例:c = a>b?a:b;  //如果 a > b ,則 c = a;否則 c = b;
  (7)運算符的優先級

優先級   描述       運算符
  1    括號        ()、[]
  2    正負號       +、-
  3    自增自減,非   ++、--、!
  4    乘,除,取余    *、/、%
  5    加、減       +、-
  6    移位運算      <<、>>
  7    大小關系      >、>=、<、<=
  8    相等關系       ==、!=
  9    按位與        &
  10   按位異或        ^
  11    按位或       |
  12    邏輯與       &&
  13    邏輯或       ||
  14    條件運算      ? :
  15    賦值運算     =、+=、-=、*=、/=、%=
  16    位賦值運算    &=、|=、<<=、>>=、>>>=
備註:如果在程序中,要改變運算順序,可以使用()。在一些比較復雜的運算中,使用括號,能夠提高程序的可讀性。

2:鍵盤錄入(後面再詳細解釋)
  (1)目的從鍵盤上靈活的錄入我們的數據。
    使用步驟:A:導包
          import java.util.Scanner;
          位置:在默認包名的下方,class的上方
         B:創建對象
          Scanner sc = new Scanner(System.in);
         C:獲取數據
          int x = sc.nextInt();

3:流程控制語句
  (1)順序結構 從上往下,依次執行
  (2)選擇結構 按照不同的選擇,執行不同的代碼
  (3)循環結構 做一些重復的代碼

4:if語句
  (1)三種格式
    A:格式1
      if(比較表達式) {
        語句體;
      }
    執行流程:
      判斷比較表達式的值,看是true還是false
      如果是true,就執行語句體
      如果是false,就不執行語句體

    B:格式2
      if(比較表達式) {
        語句體1;
      }else {
        語句體2;
      }
    執行流程:
      判斷比較表達式的值,看是true還是false
      如果是true,就執行語句體1
      如果是false,就執行語句體2

    C:格式3
      if(比較表達式1) {
        語句體1;
      }else if(比較表達式2){
        語句體2;
      }
      ...  //這裏表示可以嵌套多個else if語句
      else {
        語句體n+1;
      }
    執行流程:
      判斷比較表達式1的值,看是true還是false
      如果是true,就執行語句體1
      如果是false,就繼續判斷比較表達式2的值,看是true還是false
      如果是true,就執行語句體2
      如果是false,就繼續判斷比較表達式3的值,看是true還是false
      ...
      如果都不滿足,就執行語句體n+1
  (2)註意事項
    A:比較表達式無論簡單還是復雜,結果是boolean類型
    B:if語句控制的語句體如果是一條語句,是可以省略大括號的;如果是多條,不能省略。
      建議:一般不要省略。
    C:一般來說,有左大括號,就沒有分號,有分號,就沒有左大括號(成對出現)。
    D:else後面如果沒有if,是不會出現比較表達式的。
    E:三種if語句其實都是一個語句,只要有一個執行,其他的就不再執行。
  (3)三元運算符和if語句第二種格式的關系
    所有的三元運算符能夠實現的,if語句的第二種格式都能實現。

if (a > b ){
    c = a;
}else{
    c = b;
}
//等價的三元表達式
c = a>b?a:b;  //如果 a > b ,則 c = a;否則 c = b;

5.switch語句
  (1)格式:
    switch(表達式) {
      case 值1:
        語句體1;
      break;
      case 值2:
        語句體2;
      break;
      ...
      default:
        語句體n+1;
      break;
    }
    格式解釋說明:
      switch:說明這是switch語句。
      表達式:可以是byte,short,int,char(都可以強轉為int)
      JDK5以後可以是枚舉
      JDK7以後可以是字符串
      case:後面的值就是要和表達式進行比較的值
      break:表示程序到這裏中斷,跳出switch語句
      default:如果所有的情況都不匹配,就執行這裏,相當於if語句中的else
  (2)應註意的問題
    switch語句的表達式可以是byte,不可以是long,JDK7之後可以是String。
  (3)執行流程:
    A:首先計算表達式的值
    B:和每一個case進行匹配,如果有就執行對應的語句體,執行到break就結束。
    C:如果沒有匹配,就執行default的語句體n+1。
  (4)註意事項:
    A:case後面只能是常量,不能是變量,而且,多個case後面的值不能出現相同的
    B:default可以省略,但是不建議,因為它的作用是對不正確的情況給出提示。
    特殊情況:
      執行到switch語句之前,case就可以把值確定。
    C:break可以省略,但是如果break省略了,程序就不會跳出switch,會按照原來的順序繼續執行,直到跳出。這個現象叫做case穿透。   
    D:default的位置不一定要在最後,但是它一定是在最後執行。
    E:switch語句的結束條件
      a:遇到break就結束了
      b:執行到末尾就結束了
  (5)if語句和switch語句各自的場景
    A:if
      針對boolean類型的判斷
      針對一個範圍的判斷
      針對幾個常量的判斷
    B:switch
      針對幾個常量的判斷

6.循環語句
  (1)有三種:for,while,do...while,foreach(增強for)
  (2)for循環語句
    A:格式
      for(初始化語句;判斷條件語句;控制條件語句){
        循環體語句;
      }
  A.執行流程:
    a:執行初始化語句
    b:執行判斷條件語句
      如果這裏是true,就繼續
      如果這裏是false,循環就結束
    c:執行循環體語句
    d:執行控制條件語句
    e:回到b
  B.註意事項
    a:判斷條件語句無論簡單還是復雜,結果是boolean類型
    b:循環體語句如果是一條,可以省略大括號,但是不建議
    c:有分號就沒有左大括號,有左大括號就沒有分號

  (3)while循環
    A:基本格式
      while(判斷條件語句) {
        循環體語句;
      }
    擴展格式:
      初始化語句;
      while(判斷條件語句){
        循環體語句;
        控制條件語句;
      }
      通過查看這個格式,說明while循環可以和for循環等價轉換。
    B:for和while的區別
      a:使用上的區別
        for語句的控制條件變量,在循環結束後不能在使用(作用域)。
        而while的可以繼續使用。
      b:理解上的區別
        for適合於一個範圍的判斷
        while適合次數不明確的
  (4)do...while循環
    A:基本格式
      do {
        循環體語句;
      }while(判斷條件語句);
    擴展格式:
      初始化語句;
      do {
        循環體語句;
        控制條件語句;
      }while(判斷條件語句);
      通過查看格式,說明三種循環的格式可以相互替換的。

    B:三種循環的區別
      a:do...while循環至少執行一次循環體
      b:for和while必須先判斷條件是否是true,然後後才能決定是否執行循環體
  (5)foreach循環(其實叫做:增強for)
     格式:for (int[] arr : array) {
          //遍歷數組
        }

      註意:Java中沒有foreach循環,foreach循環其他的語言中的名稱,但是Java中的增強for的本質是跟foreach循環一樣的,這個循環一般是用來實現遍歷操作。
  (6)循環使用的註意事項(死循環)
    A:一定要註意修改控制條件,否則容易出現死循環。
    B:最簡單的死循環格式
      a:while( true ) { ... }
      b:for( ; ; ) { ... }

7.控制跳轉語句
  (1)break:中斷的意思
    A:用在循環和switch語句中,離開此應用場景無意義。
    B:作用
      a:跳出單層循環
      b:跳出多層循環,需要標簽語句的配合
  (2)continue:繼續
    A:用在循環中,離開此應用場景無意義。
    B:作用
      a:跳出單層循環的一次,可以繼續下一次

//控制臺輸出7次:Hello Java
1
for(int x=1; x <= 10; x++) { 2 if(x%3 == 0) { 3 continue; 4 } 5 System.out.println("Hello Java"); 6 }

  (3)return:返回
    A:用於結束方法的,並返回某個值。
    B:一旦遇到return,程序就不會在繼續往後執行。

Java基礎系列--02_運算符和程序的語句