1. 选择结构
switch语句
格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
… …
default:
语句体n+1;
break;
}
格式解释:
- 表达式:有限制的
byte、short、int、char
JDK5以后可以是枚举
JDK7以后可以是字符串 - case:
后面跟着的是要和表达式进行比较的值 - 语句体:
要执行的代码 - break:
表示中断结束的意思,可以控制switch语句的结束 - default:
当所有的值都和表达式匹配的时候,就执行default控制的语句,相当于if语句的else
注意事项:
- case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同。
- default可以省略,但是不建议。
- break可以省略,但结果可能不是我们想要的,会出现case穿透,不建议省略。
- default不一定要在最后,但是建议在最后。
- switch语句的结束条件,1.遇break结束。2.执行到末尾
if语句和switch的区别:
if语句:
- 针对结果是boolean类型的判断
- 针对一个范围的判断
- 针对几个常量值的判断
switch语句:
- 针对几个常量值的判断
2. 循环语句(for循环,while循环,do…while循环)
组成:
初始化语句
判断条件语句
循环体语句
控制条件语句
1. for循环
格式:
for(初始化语句;判断条件语句;控制条件语句){
循环体语句;
}
执行流程:
- 执行初始化语句
- 执行判断条件语句,看返回值是true还是false
- 如果为true,继续执行
- 如果为false,就结束循环
- 执行循环体语句
- 执行控制条件语句
- 回到第二步
注意事项:
- 判断条件语句结果是boolean类型。
- 循环体语句如果是一条语句,大括号可以省略,如果是多条语句,大括号不能省略,建议永远不要省略。
- 一般来说,有左大括号就没有分号,有分号就没有左大括号。
练习:在控制台输出所有的“水仙花数”
class ForDemo6{
public static void main(String[] args){
for (int x = 100; x < 1000; x++)
{
int ge = x % 10;
int shi = x / 10 % 10;
int bai = x / 10 / 10 % 10;
if (x == (ge * ge * ge + shi * shi * shi + bai * bai * bai)){
System.out.println(x);
}
}
}
}
2. while循环
格式:
while(判断条件语句){
循环体语句;
}
扩展格式:
初始化语句;
while(判断条件语句){
循环体语句;
控制条件语句;
}
for循环与while的区别:
一种理解:
如果想在循环结束后继续使用条件的那个变量,用while循环,否则用for循环。
因为变量提早的从内存中消失,可以提高内存的使用效率。
另一种理解:
如果是一个范围的,用for循环。
如果是不明确要做多少次,用while循环较为合适。
3. do…while循环
格式:
do{
循环体语句;
}while(判断条件语句);
扩展格式:
初始化语句;
do{
循环体语句;
控制条件语句;
}while(判断条件语句);
区别:
do…while循环至少执行一次循环体。
而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
应优先考虑for,其次考虑while,最后考虑do…while
注意死循环:
一定要注意控制条件语句的变量,不要成了死循环。
另:
输出语句的另一种格式:System.out.print( );
此格式不带换行。
可以使用System.out.println();
的空的输出语句实现换行。
4. 循环嵌套
就是循环语句的循环体本身就是一个循环语句。
外循环控制行数
内循环控制列数
- 输出图形:
*
**
***
****
*****
class ForForDemo2{
public static void main(String[] args){
for (int x = 0; x < 5; x++){
for (int y = 0; y <= x; y++){
System.out.print("*");
}
System.out.println();
}
}
}
- 输出九九乘法表:
class ForForDemo3{
public static void main(String[] args){
for (int x = 1; x <= 9; x++){
for (int y = 1; y <= x; y++){
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
}
}
注意:
转义字符:
‘\t’:Tab键
‘\r’:回车
‘\n’:换行
2. 控制语句的跳转(break、continue、return)
1. break
场景:
- 在选择结构switch语句中
- 在循环语句中
使用:
- 跳出单层循环
- 跳出多层循环
使用带标签的语句
格式:
标签名:语句
例如:
class ForForDemo4 {
public static void main(String[] args) {
wc:
for (int x = 0; x < 10; x++) {
nc:
for (int y = 0; y < 4; y++) {
break wc; //跳出外层循环
}
}
}
}
2. continue
场景:
在循环语句中
使用:
跳出一次循环,进入下一次的执行
3. return
return关键字不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法。跳转到上层调用的方法。
练习:
小芳的妈妈每天给她2.5元钱,她都会存起来,但是,每当这一天是存钱的第5天或者5的倍数的话,她都会花去6元钱,请问,经过多少天,小芳才可以存到100元钱。
代码:
class whileDemo3 {
public static void main(String[] args) {
double dayMoney = 2.5;
double dayCount = 1;
int result = 100;
double daySum = 0;
while (true){
daySum += dayMoney;
if (daySum >= result){
System.out.println("共花了"+dayCount+"天储存了100元");
break;
}
if (dayCount % 5 == 0){
daySum -= 6;
System.out.println("第"+dayCount+"天花了6元钱");
}
dayCount++;
}
}
}