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("愛叫啥叫啥");
}
}
}
須要一個程序運行多少次運行多久,不能停的
你訪問淘寶,阿里啥的都是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);
}
}
對於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);
}
}
雖然全部循環結構均可以用while和do....while表示,但Java提供了另外一種語言——for循環,使一些循環變得更加簡單。
for循環語句是支持迭代的一種通用結構,是最有效,最靈活的結構
for循環執行的次數是在執行前就肯定的。語法格式以下:
for(初始化;布爾表達式;更新){
//代碼語句
}
關於for循環有如下幾點說明: 1.最早執行初始化步驟。能夠聲明一種類型,但能夠初始化一個或多個循環控制變量,也能夠是空語句
而後檢測布爾表達式的值。若是爲true,循環體就執行。若是爲false,循環終止,開始執行循環體後面的語句
.再次檢測布爾表達式,循環執行上面的過程。
.循環體執行後才迭代
總結:*按照初始化,布爾表達式檢測,循環體,迭代的順序執行
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();
}
}
}