Java流程控制(第三期)

switch多選擇結構

switch case 語句判斷一個變量與一系列值中某個值是否相等,每一個值稱爲一個分支。java

語法程序員

switch(expression){算法

case value :express

//語句編程

break; //可選服務器

case value :微信

//語句ide

break;//可選性能

//你能夠有任意數量的case語句atom

default;//可選

//語句

}

switch語句中的變量類型能夠是:

  • byte,short,int,或者char。

  • 從Java SE 7 開始

  • switch 支持字符串 String 類型

  • 同時case 標籤必須爲字符串常量和字面量。

一個好的程序員要有本身的思想,好比多去看源碼

要點1:

講一個case穿透現象:

在一個switch case語句中,不寫break就全輸出了, 因此這裏要根據須要選擇在每一個case裏面加不加break switch 這個循環的意思就是去匹配一個值, 一個具體的值, 在衆多case找到一個符合要求的

package com.gan.structure;

public class SwitchDemo01 {
   public static void main(String[] args) {
       char grade = 'F';
       switch (grade) {
           case 'A':
               System.out.println("優秀");
               break;//可選
           //這題就頗有必要在每一個case語句串後面都要加break
           case 'B':
               System.out.println("良好");
               break;//可選
           case 'C':
               System.out.println("及格");
               break;//可選
           case 'D':
               System.out.println("再接再礪");
               break;//可選
           case'E':
               System.out.println("你完蛋了");
               break;//可選
           default:
               System.out.println("未知(輸入錯誤)");

      }

  }
}

要點2:

JDK7新特性,表達式結果能夠是字符串!!!

package com.gan.structure;


public class SwitchDemo02 {
   public static void main(String[] args) {
       String name="西柚";
       switch (name){
           case "西柚":
               System.out.println("西柚");
               break;
           case "暖小白":
               System.out.println("暖小白");
               break;
           default:
               System.out.println("愛叫啥叫啥");
      }
  }
}

要點3: 字符的本質仍是數字 反編譯 java---class(字節碼文件)----反編譯(IDEA) 每個對象都要hashcode 哈希是經過特色算法,給每個"東西"一個惟一的值 每個對象都對應了一個hash值。

用IDEA打開class文件方法:

把一個class文件從文件夾層面 複製到idea存放java文件的文件夾下就能打開,idea會自動實現反編譯

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.gan.structure;

public class SwitchDemo02 {
   public SwitchDemo02() {
  }

   public static void main(String[] args) {
       String name = "西柚";
       byte var3 = -1;
       switch(name.hashCode()) {
       case 1117755:
           if (name.equals("西柚")) {
               var3 = 0;
          }
           break;
       case 25998692:
           if (name.equals("暖小白")) {
               var3 = 1;
          }
      }

       switch(var3) {
       case 0:
           System.out.println("西柚");
           break;
       case 1:
           System.out.println("暖小白");
           break;
       default:
           System.out.println("愛叫啥叫啥");
      }

  }
}

循環結構

while循環詳解

須要一個程序運行多少次運行多久,不能停的

你訪問淘寶,阿里啥的都是24小時整年無休的運行的

  • while是最基本的循環,它的結構爲:

    while(布爾表達式){

    //循環內容

    }

  • 只要布爾表達式爲true,循環就會一直執行下去。

  • 咱們大多數狀況是會讓循環中止下來的,咱們須要一個讓表達式失效的方式來結束循環。

    package com.gan.structure;

    public class WhileDemo01 {
       public static void main(String[] args) {

           //輸出1~100

           int i = 0;
           while (i < 100) {//用i<100來結束
               i++;
               System.out.println(i);
          }
      }
    }
  • 少部分狀況須要代碼一直執行,好比服務器的請求響應監聽等。

  • 循環一直爲true就會形成無限循環【死循環】,咱們正常的業務編程中應該儘可能避免死循環。

    會影響程序性能和形成程序卡死崩潰。

    package com.gan.structure;

    public class WhileDemo02 {
       public static void main(String[] args) {
           //死循環
           while (true) {
               /*
               等待客戶端接入,好比微信等人消息
               定時檢查,好比鬧鐘
                */


          }
      }
    }
  • 思考:計算1+2+3+4......+100=?

    package com.gan.structure;

    public class WhileDemo03 {
       public static void main(String[] args) {
           //計算1+2+...100

           int i = 0;
           int sum = 0;
           while (i <= 100) {
               sum = sum + i;
               i++;
          }
           System.out.println(sum);
      }
    }

do...while循環

對於while循環而言,若是不知足條件,則不能進入循環。但有時候咱們須要即便不知足條件, 也至少執行一次

  • do.....while循環和while循環類似,不一樣的是,do....while循環至少會執行一次

    do{

    //代碼語言

    }while(布爾表達式);

    package com.gan.structure;

    public class DoWhileDemo01 {
       public static void main(String[] args) {
           int i=0;
           int sum=0;
           do {
               sum=sum+i;
               i++;
          }while(i<=100);
           System.out.println(sum);
      }
    }
  • while和do...while的區別

    while先判斷後執行,dowhile是先執行後判斷!

    Do....while老是保證循環體至少執行一次。這是他們的主要區別。

package com.gan.structure;

public class DoWhileDemo02 {
   public static void main(String[] args) {
       int a = 0;
       while (a < 0) {
           System.out.println(a);
           a++;
      }
       System.out.println("=====================");
       do {
           System.out.println(a);
           a++;
      } while (a < 0);
  }
}

For循環詳解(重要)

雖然全部循環結構均可以用while和do....while表示,但Java提供了另外一種語言——for循環,使一些循環變得更加簡單。

  • for循環語句是支持迭代的一種通用結構,是最有效,最靈活的結構

  • for循環執行的次數是在執行前就肯定的。語法格式以下:

    for(初始化;布爾表達式;更新){

    //代碼語句

    }

    關於for循環有如下幾點說明: 1.最早執行初始化步驟。能夠聲明一種類型,但能夠初始化一個或多個循環控制變量,也能夠是空語句

    1. 而後檢測布爾表達式的值。若是爲true,循環體就執行。若是爲false,循環終止,開始執行循環體後面的語句

    2. .再次檢測布爾表達式,循環執行上面的過程。

    3. .循環體執行後才迭代

    4. 總結:*按照初始化,布爾表達式檢測,循環體,迭代的順序執行

package com.gan.structure;

public class ForDemo01<or> {
   public static void main(String[] args) {
       int a = 1;//條件初始化
       while (a <= 100) {//條件判斷
           System.out.println(a);//循環體
           a += 2;//迭代
      }
       System.out.println("while循環結束!");
               //初始化//條件判斷//迭代
       for (int i = 1; i <= 100; i++) {
           System.out.println(i);
      }
       System.out.println("for循環結束!");
       //死循環
       for (; ; ) {

      }
  }

}

練習1:計算0到100之間的奇數和偶數的和

package com.gan.structure;

public class ForDemo02 {
   public static void main(String[] args) {

       int oddSum = 0;
       int evenSum = 0;

       for (int i = 0; i < 100; i++) {
           if (i % 2 != 0) {
               oddSum += i;
          } else {
               evenSum += i;
          }

      }
  }
}

練習2:用while或for循環輸出1-1000之間能被5整除的數,而且每行輸出3個

package com.gan.structure;

public class ForDemo03 {
   public static void main(String[] args) {
       for (int i = 0; i <= 1000; i++) {
           if (i % 5 == 0) {
               System.out.print(i + "\t");
          }
           if (i % (5 * 3) == 0) {
               System.out.println();
               //或System.out.print("\n");
          }
      }
       //println 輸出完換行
       //print 輸出完不換行
       System.out.println("for循環完成!");
       int a = 0;
       while (a <= 1000) {
           a++;
           if (a % 5 == 0) {
               System.out.print(a + "\t");
          }
           if (a % 15 == 0) {
               System.out.println();
          }
      }
  }
}

練習3 : 九九乘法表

1.咱們先打印第一列,這個都會 ​ 2.咱們把固定的1再用一個循環包起來 ​ 3.去掉重複項。i<=j ​ 4. 整理樣式

package com.gan.structure;

public class ForDemo04 {
   public static void main(String[] args) {
       //
       for (int j = 1; j <= 9; j++) {
           for (int i = 1; i <= j; i++) {
               System.out.print(j+"*"+i+"="+(j*i)+"\t");
      }
           System.out.println();
      }
  }
}

由於真的很重要,並且掌握難度也比較大,所以插入了大量的代碼和習題

但願能給須要掌握的人帶來哪怕一點帶你幫助

相關文章
相關標籤/搜索