1.switch
1
2
3
4
5
6
7
8
9
10
11
12 |
switch (表達式){
case 值 1 :
語句體 1 ;
break ;
case 值 2 :
語句體 2 ;
break ;
……
default :
語句體n;
break ;
}
|
格式解釋:
switch表示這是switch語句
a)表達式的取值:byte,short,int,char
b)JDK5之后可以是枚舉
c)JDK7之后可以是String
case后面跟的是要和表達式進行比較的值
語句體部分可以是一條或多天語句
break表示中斷、結(jié)束的意思,可以結(jié)束switch語句
default語句表示所有情況都不匹配的時候,就執(zhí)行該出的內(nèi)容,和if語句的else相似
執(zhí)行流程
首先計算出表達式的值
其次,和case依次比較,一旦有對應(yīng)的值,就會執(zhí)行相應(yīng)的語句,在執(zhí)行的過程中,遇到break就會結(jié)束。
最后,如果所有的case都和表達式的值不匹配,就會執(zhí)行default語句體部分,然后程序結(jié)束掉。

注意事項:
case后面只能是常量,不能是變量,而且,多個case后面的值不能出現(xiàn)相同的。
default可以省略,一般不建議。
break可以省略,一般不建議。
default可以出現(xiàn)在switch語句的任意位置。
switch語句的結(jié)束條件:1.遇到break ,2.執(zhí)行到程序的末尾。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 |
import java.util.Scanner;
/**
* 鍵盤錄入一個數(shù)據(jù),根據(jù)這個數(shù)據(jù),我們輸出對應(yīng)的星期幾
* 鍵盤錄入1,對應(yīng)輸出星期一
* 鍵盤錄入2,對應(yīng)輸出星期二
* ...
* 鍵盤錄入7,對應(yīng)輸出星期日
*/
public class SwitchDemo {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print( "請輸入數(shù)字:" );
int day = input.nextInt();
String str = "" ;
switch (day){
case 1 :
str = "星期一" ;
break ;
case 2 :
str = "星期二" ;
break ;
case 3 :
str = "星期三" ;
break ;
case 4 :
str = "星期四" ;
break ;
case 5 :
str = "星期五" ;
break ;
case 6 :
str = "星期六" ;
break ;
case 7 :
str = "星期日" ;
break ;
default :
str = "輸入數(shù)據(jù)不合法" ;
break ;
}
System.out.println(str);
}
}
|
在做判斷的時候,我們有兩種選擇,if語句和switch語句,那么,我們到底該如何選擇使用哪種語句呢?
if語句使用場景:
針對結(jié)果是boolean類型的判斷
針對一個范圍的判斷
針對幾個常量值的判斷
switch語句使用場景:
針對幾個常量值的判斷
2.循環(huán)結(jié)構(gòu)
循環(huán)語句可以在滿足循環(huán)條件的情況下,反復(fù)執(zhí)行某一段代碼,這段被重復(fù)執(zhí)行的代碼被稱為循環(huán)體語句,當反復(fù)執(zhí)行這個循環(huán)體時,需要在合適的時候把循環(huán)條件修改為false,從而結(jié)束循環(huán),否則循環(huán)將一直執(zhí)行下去,形成死循環(huán)。
循環(huán)語句的組成:
初始化語句:一條或者多條語句,這些語句完成一些初始化操作。
判斷條件語句:這是一個boolean表達式,這個表達式能決定是否執(zhí)行循環(huán)體。
循環(huán)體語句:這個部分是循環(huán)體語句,也就是我們要多次做的事情。
控制條件語句:這個部分在依次循環(huán)體結(jié)束后,下一次循環(huán)判斷條件執(zhí)行前執(zhí)行。通過用于控制循環(huán)條件中的變量,使得循環(huán)在合適的時候結(jié)束。
3.循環(huán)結(jié)構(gòu)(for循環(huán)語句)
for循環(huán)語句格式:
1
2
3 |
for (初始化語句;判斷條件語句;控制條件語句){
循環(huán)體語句;
}
|
執(zhí)行流程:
1.執(zhí)行初始化語句
2.執(zhí)行判斷條件語句,看其結(jié)果是true還是false,如果是false,循環(huán)結(jié)束;如果是true,循環(huán)執(zhí)行。
3.執(zhí)行循環(huán)體語句
4.執(zhí)行控制條件語句
5.回到2繼續(xù)

1
2
3
4
5
6
7
8
9
10
11 |
/**
* for循環(huán)
*/
public class ForDemo {
public static void main(String[] args){
for ( int i = 0 ;i< 4 ;i++){
System.out.println( "Hello World" );
}
}
}
|
注意事項:
1.判斷條件語句的結(jié)果是一個boolean類型。
2.循環(huán)體語句如果是一條語句,大括號可以省略;如果是多條語句,大括號不可以省略。建議永遠不要省略。
1
2
3
4
5
6
7
8
9
10
11 |
/**
* 在控制臺輸入1-10
*/
public class ForDemo {
public static void main(String[] args){
for ( int i = 1 ;i<= 10 ;i++){
System.out.println(i);
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13 |
/**
* 求1-10的和
*/
public class ForDemo {
public static void main(String[] args){
int sum = 0 ;
for ( int i = 1 ;i<= 10 ;i++){
sum += i;
}
System.out.println(sum);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 |
/**
* 求1-100的奇數(shù)和偶數(shù)之和
*/
public class ForDemo {
public static void main(String[] args){
int odd = 0 ;
int even = 0 ;
for ( int i = 0 ;i<= 100 ;i++){
if (i % 2 == 0 ){
even += i;
} else {
odd += i;
}
}
System.out.println( "奇數(shù)和是" +odd+ ",偶數(shù)和是" +even);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
/**
* 求5的階乘
* 什么是階乘?
* n! = n*(n-1)!
* n! = n *(n-1)*(n-2)*...*3*2*1
*/
public class ForDemo {
public static void main(String[] args){
int num = 1 ;
for ( int i = 1 ;i<= 5 ;i++){
num *= i;
}
System.out.println(num);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 |
/**
* 水仙花數(shù)
* 所謂的水仙花數(shù)就是一個三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。
* 舉例:153就是一個水仙花數(shù)
* 153 = 1*1*1 + 5*5*5 +3*3*3
*/
public class ForDemo {
public static void main(String[] args){
for ( int i = 100 ;i<= 999 ;i++){
int baiwei = i / 100 ;
int shiwei = i / 10 % 10 ;
int gewei = i % 10 ;
int result = baiwei * baiwei * baiwei + shiwei * shiwei * shiwei + gewei * gewei * gewei;
if (i == result){
System.out.println(i+ "是水仙花數(shù)" );
}
}
}
}
|
4.循環(huán)結(jié)構(gòu)(while循環(huán)語句)
while循環(huán)語句格式:
1
2
3
4
5 |
初始化語句;
while (判斷條件語句){
循環(huán)體語句;
控制條件語句;
}
|

for循環(huán)和while循環(huán)的區(qū)別?
使用區(qū)別:控制條件語句所控制的那個變量,在for循環(huán)結(jié)束后,接不能再被訪問到了,而while循環(huán)結(jié)束后,還可以繼續(xù)使用,如果你想繼續(xù)使用,就用while,否則推薦使用for循環(huán),原因是for循環(huán)結(jié)束,該變量就從內(nèi)存中消失,能夠提高內(nèi)存的使用效率。
場景區(qū)別:for循環(huán)適合針對一個范圍判斷進行操作,當然這個范圍是數(shù)字;而while循環(huán)適合判斷不明確操作。例如:你去跑十圈,就用for循環(huán);你跑到死為止,就用while循環(huán)了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 |
/**
* 我國最高山峰是珠穆朗瑪峰:8848米,現(xiàn)在我有一張足夠大的紙張,厚度是0.01米。
* 請問:我折疊多少次,就可以保證厚度不低于珠穆朗瑪峰的高度?
* 分析:
* 1.定義一個統(tǒng)計變量,默認值位0
* 2.最高山峰是珠穆朗瑪峰:8848米,這是最終的厚度
* 我現(xiàn)在有一張足夠大的紙張,厚度為:0.01米,這是最初的厚度。
* 3.我折疊多少次,就可以保障厚度不低于珠穆朗瑪峰的高度
* 折疊依次有什么變化?就是厚度是以前的2倍。
* 4.只要每次變化的厚度沒有查過珠穆朗瑪峰的高度,就折疊
* 5.輸出統(tǒng)計變量
*/
public class WhileDemo {
public static void main(String[] args){
int count = 0 ;
double end = 8848 ;
double start = 0.01 ;
while (start < end){
count ++;
start *= 2 ;
}
System.out.println(count);
}
}
|
5.循環(huán)結(jié)構(gòu)(do...while結(jié)構(gòu))
do...while循環(huán)結(jié)構(gòu)格式:
1
2
3
4
5 |
初始化條件;
do {
循環(huán)體語句;
控制條件語句;
} while (判斷條件語句);
|

循環(huán)結(jié)構(gòu)的區(qū)別及注意事項
三種循環(huán)語句其實都可以完成一行的功能,也就是說可以等價轉(zhuǎn)換,但還是有小區(qū)別的。do...while循環(huán)至少會執(zhí)行一次循環(huán)體。for循環(huán)和while循環(huán)只有在條件成立的時候才會去執(zhí)行循環(huán)體。
寫程序優(yōu)先考慮for循環(huán),再考慮while循環(huán),最后考慮do...while循環(huán)。
1
2
3
4
5
6
7
8
9
10
11
12
13 |
/**
* 輸出4行5列的星星
*/
public class ForForDemo {
public static void main(String[] args){
for ( int i = 0 ;i< 4 ;i++){
for ( int y = 0 ;y< 5 ;y++){
System.out.print( "*" );
}
System.out.println();
}
}
}
|
6.跳轉(zhuǎn)控制語句
java中的goto是保留字,目前不能使用。雖然沒有g(shù)oto可以增強程序的安全性,但是也帶來了很多不便,比如說,我想在某個循環(huán)在某一步的時候就結(jié)束,現(xiàn)在就做不了這件事。為了彌補這個缺陷,java就提供了break,continue和return來實現(xiàn)控制語句的跳轉(zhuǎn)和終端。
本文出自 “11831428” 博客,請務(wù)必保留此出處http://11841428.blog.51cto.com/11831428/1853470
|