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表示中断、结束的意思,可以结束switch语句
default语句表示所有情况都不匹配的时候,就执行该出的内容,和if语句的else相似
执行流程
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

注意事项:
case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的。
default可以省略,一般不建议。
break可以省略,一般不建议。
default可以出现在switch语句的任意位置。
switch语句的结束条件:1.遇到break ,2.执行到程序的末尾。
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;
/**
* 键盘录入一个数据,根据这个数据,我们输出对应的星期几
* 键盘录入1,对应输出星期一
* 键盘录入2,对应输出星期二
* ...
* 键盘录入7,对应输出星期日
*/
public class SwitchDemo {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print( "请输入数字:" );
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 = "输入数据不合法" ;
break ;
}
System.out.println(str);
}
}
|
在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用哪种语句呢?
if语句使用场景:
针对结果是boolean类型的判断
针对一个范围的判断
针对几个常量值的判断
switch语句使用场景:
针对几个常量值的判断
2.循环结构
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
循环语句的组成:
初始化语句:一条或者多条语句,这些语句完成一些初始化操作。
判断条件语句:这是一个boolean表达式,这个表达式能决定是否执行循环体。
循环体语句:这个部分是循环体语句,也就是我们要多次做的事情。
控制条件语句:这个部分在依次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。
3.循环结构(for循环语句)
for循环语句格式:
1
2
3 |
for (初始化语句;判断条件语句;控制条件语句){
循环体语句;
}
|
执行流程:
1.执行初始化语句
2.执行判断条件语句,看其结果是true还是false,如果是false,循环结束;如果是true,循环执行。
3.执行循环体语句
4.执行控制条件语句
5.回到2继续

1
2
3
4
5
6
7
8
9
10
11 |
/**
* for循环
*/
public class ForDemo {
public static void main(String[] args){
for ( int i = 0 ;i< 4 ;i++){
System.out.println( "Hello World" );
}
}
}
|
注意事项:
1.判断条件语句的结果是一个boolean类型。
2.循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不可以省略。建议永远不要省略。
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的奇数和偶数之和
*/
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( "奇数和是" +odd+ ",偶数和是" +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 |
/**
* 水仙花数
* 所谓的水仙花数就是一个三位数,其各位数字的立方和等于该数本身。
* 举例:153就是一个水仙花数
* 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+ "是水仙花数" );
}
}
}
}
|
4.循环结构(while循环语句)
while循环语句格式:
1
2
3
4
5 |
初始化语句;
while (判断条件语句){
循环体语句;
控制条件语句;
}
|

for循环和while循环的区别?
使用区别:控制条件语句所控制的那个变量,在for循环结束后,接不能再被访问到了,而while循环结束后,还可以继续使用,如果你想继续使用,就用while,否则推荐使用for循环,原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
场景区别:for循环适合针对一个范围判断进行操作,当然这个范围是数字;而while循环适合判断不明确操作。例如:你去跑十圈,就用for循环;你跑到死为止,就用while循环了。
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米,现在我有一张足够大的纸张,厚度是0.01米。
* 请问:我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?
* 分析:
* 1.定义一个统计变量,默认值位0
* 2.最高山峰是珠穆朗玛峰:8848米,这是最终的厚度
* 我现在有一张足够大的纸张,厚度为:0.01米,这是最初的厚度。
* 3.我折叠多少次,就可以保障厚度不低于珠穆朗玛峰的高度
* 折叠依次有什么变化?就是厚度是以前的2倍。
* 4.只要每次变化的厚度没有查过珠穆朗玛峰的高度,就折叠
* 5.输出统计变量
*/
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.循环结构(do...while结构)
do...while循环结构格式:
1
2
3
4
5 |
初始化条件;
do {
循环体语句;
控制条件语句;
} while (判断条件语句);
|

循环结构的区别及注意事项
三种循环语句其实都可以完成一行的功能,也就是说可以等价转换,但还是有小区别的。do...while循环至少会执行一次循环体。for循环和while循环只有在条件成立的时候才会去执行循环体。
写程序优先考虑for循环,再考虑while循环,最后考虑do...while循环。
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.跳转控制语句
java中的goto是保留字,目前不能使用。虽然没有goto可以增强程序的安全性,但是也带来了很多不便,比如说,我想在某个循环在某一步的时候就结束,现在就做不了这件事。为了弥补这个缺陷,java就提供了break,continue和return来实现控制语句的跳转和终端。
本文出自 “11831428” 博客,请务必保留此出处http://11841428.blog.51cto.com/11831428/1853470
|