- 顺序结构:程序从上到下一行一行执行,直到结束。
- 单if语句:决定方法体执行,或者不执行跳过(有或者无)
int age = 20;
if (age >= 18) {
System.out.println("进入网吧,前台开号,打开电脑");
System.out.println("开始high,biubiubiu~");
System.out.println("遇到了一群猪队友,开始骂街……");
System.out.println("结账走人");
}
System.out.println("回家吃饭");
- 标准的
if-else语句
(二者选其一,不会两个都要,也不会两个都不要)
int num = 6;
if (num % 2 == 0) { // 如果余数为0,说明是偶数
System.out.println("偶数");
} else {
System.out.println("奇数");
}
- 扩展、复合的
if-else if-else语句
(三者或者三者以上,选其一)
int x = -10;
int y;
if (x >= 3) {
y = 2 * x + 1;
} else if (-1 < x && x < 3) {
y = 2 * x;
} else {
y = 2 * x - 1;
}
System.out.println(y);
标准的switch语句
格式
switch(表达式){
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;
…
case 常量表达式n: 语句n;
default : 语句n+1;
}
流程:
“等于哪一个case
,就从该位置向下执行代码,直到遇到break
或结束
为止。”
注意:
只有这些类型才能用在switch
的小括号当中:
基本类型:byte/short/char/int
引用类型:从JDK 1.5
开始,支持enum枚举
;从JDK 1.7开始
,支持String字符串
。
int day = 10;
switch (day) {
case 1:
System.out.println("星期一");
System.out.println("Monday");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期天");
break;
default:
System.out.println("数据错误");
break; // 最后一个break可以省略不写,但是非常不推荐省略它。
} // switch
switch语句
当中的注意事项:
1. 多个case...break
或者default...break
,前后顺序可以颠倒。在标准格式当中,不会影响流程。
2. break
可以省略不写,如果不写,程序将会继续向下执行。
3.“等于哪一个case
,就从该位置向下执行代码,直到遇到break
或结束
为止。”
一个经典的循环语句
,通常由以下四个部分组成:
【初始化语句
】最先执行,而且就执行一次而已。
【条件判断
】如果成立,循环继续;如果不成立,循环停止。
【循环体
】每次循环都要重复做的内容。
【步进语句
】每次循环体执行之后,扫尾工作。
for循环
格式
for (初始化语句; 条件语句; 步进语句)
{
语句1 ;
语句2 ;
....
语句n ;
}
如果不用循环,在执行重复操作的时候,会出现两个麻烦:
1. 不容易精确控制次数。
2. 如果需要修改,需要修改一大片。
用for循环
计算1-100内的偶数和
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) { // 如果是偶数
sum += i; // 2, 4, 6... 100
}
}
System.out.println("结果是:" + sum); // 2550
while
循环语句格式
标准格式:
while (条件判断) {
循环体;
}
扩展格式:
初始化语句;
while (条件判断) {
循环体;
步进语句;
}
// 先写for循环
for (int i = 1; i <= 10; i++) {
System.out.println("我错啦!" + i);
}
// 翻译成为while循环
int i = 1; // (1) 初始化语句
while (i <= 10) { // (2) 条件判断
System.out.println("我错啦!" + i); // (3) 循环体
i++; // (4) 步进语句,其实也属于循环
}
do while
循环语句格式:
标准格式:
do {
循环体
} while (条件判断);
扩展格式:
初始化语句;
do {
循环体
步进语句
} while (条件判断);
int i = 1; // (1) 初始化语句
do {
System.out.println("原谅你啦!起来吧,地上怪凉哒!"); // (3) 循环体
i++; // (4) 步进语句,其实也属于循环体
} while (i <= 10); // (2) 条件判断【注意分号】
for循环、while循环、do-while循环
,互相有什么区别?
1. for循环当中的变量作用域与其他二者不同。其他二者定义本来就在外面,所以超出循环之后还能继续用。
2. do-while循环第一次没有条件判断,先斩后奏;但是for循环、while循环都是第一次先判断再执行循环体。 如果循环的条件根本从来没有满足过,那么for循环和while循环将会执行0次;但是do-while无论条件如何,至少会有第一次。
3. 使用建议:凡是次数确定、范围确定,尽量多用for循环;否则次数不确定,多用while循环。
break关键字,既可以用在switch结构当中,也可以用在循环当中。
含义:只要执行了break,那么整个循环立刻结束。
for (int i = 1; i <= 10; i++) {
if (i == 4) { // 如果当前是第四次
break; // 那么就打断整个循环,立即跳出循环!
}
System.out.println("第几次循环?" + i);
}
continue关键字,通常只在循环当中使用。
含义:立刻跳过“当前次循环剩余内容”,马上开始下一次循环。
for (int i = 1; i <= 10; i++) {
if (i == 4) {
continue; /* 四楼不会输出,直接跳过4楼,当次循环以后的代码不在执行,
紧接着执行步进语句。*/
}
System.out.println(i + "楼到了。");
}
三种循环在绝大多数情况下,可以互相转换,但是也有一些特例。
for循环
当中的步进语句,因为在上方小括号里面有贵宾座,所以不会受到continue
影响。
while/do-while循环
,步进语句就在下方大括号里面,也会被continue
跳过的。
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue;
}
System.out.println("Hello-" + i);
}
System.out.println("===========");
int i = 1;
while (i <= 5) {
if (i == 3) {
System.out.println("即将执行continue");
continue; // 接下来会进入死循环(永真循环)。
}
System.out.println("World-" + i);
i++; // 这一行也会被continue跳过的
}
永远停不下来的循环,学名叫做“死循环”又称之为无限循环,或者是永真循环。
死循环的标准写法:
while (true) {
循环体;
}
另外一种写法需要认识,一般不推荐:
for (;;) {
循环体;
}
在循环嵌套当中,也可以使用break或者continue,但是要记住:
break或者continue默认只能作用于当前层次循环。
如果希望在内层循环使用控制语句,但是要控制外层循环,就需要使用“标签”写法:
标签名称: 外层循环 {
内层循环 {
break/continue 标签名称;
}
}
示例一:
label: for (int hour = 0; hour < 24; hour++) {
/*if (hour == 3) {
break;
}*/
for (int minute = 0; minute < 60; minute++) {
if (minute == 3) {
break label; // 可以跳出外层循环
}
System.out.println(hour + "点" + minute + "分");
}
}
示例二:
int j = 2;
label1:
while (j > 0) {
for (int i = 0; i <= 10; i++) {
System.out.println("i=" + i); // 会输出i的值1-5
if (i == 5) {
break label1; // 跳出外层while循环
}
}
System.out.println("这是一行代码");
j--;
}
打印一个倒三角形:
方法一:
// 使用for循环,初始化变量ii = 1,如果ii<=5进入循环,步进表达式ii++
for (int ii = 1; ii <= 5; ii++) {
// 5.第一套for循环, 初始化变量jj=1,如果jj<ii进入循环,步进表达式jj++
for (int jj = 1; jj < ii; jj++) {
//6.第一套for循环内部,不换行输出" ".
System.out.print(" ");
}
// 7.第二套for循环,初始化变量mm=5,如果mm>=ii进入循环,步进表达式mm--
for (int mm = 5; mm >= ii; mm--) {
// 8.第二套for循环内部,不换行输出"* ".
System.out.print("* ");
}
// 两套for循环外,输出换行
System.out.println();
}
方法二:
int z = 0;
for (int i = 0; i <= 5; i++) {
for (int j = 1; j <= 5; j++) {
if (j <= z) {
System.out.print(" ");\=====
} else {
System.out.print("* ");
}
if (j == 5) {
System.out.println();
}
}
z++;
}