学习一门语言,最基础的不过控制语句,语言之间互通性最高的也是控制语句,如果你连控制语句都没搞懂,都不熟悉,那么你的编程之路注定不顺利,所以奔本篇详细介绍了控制语句的各类知识点
选择结构:
选择结构有2种:
if语句的第一种格式: 只使用if
// 格式
if(关系表达式) {
语句体
}
// 示例
int a = 0;
if(a == 1) {
System.out.println("a等于1");
}
// 格式
if(关系表达式1) {
语句体1
} else if (关系表达式2) {
语句体2
}...{
} else { // else {} 是可选的
语句体n
}
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
case 值n:
语句体n;
break;
default:
语句体n+1;
break;
}
// 格式
for(初始化语句; 判断条件语句; 控制条件语句) {
循环体语句;
}
// for循环适用于知道循环多少次的情况
// 示例
for (int i = 1; i <= 5; i++) {
System.out.println("我错了");
syso(i);
}
int i = 0, j = 1, k = 1;
// 初始化多个变量来控制循环的情况
for(int i = 0, j = 10; i < 10 && j > 5; i++, j--) {
System.out.println(i + ", " + j);
}
// 输出结果
i=0, j=10
i=1, j=9
i=2, j=8
i=3, j=7
i=4, j=6
// while普通格式
while(判断条件语句) {
循环体语句;
}
// 普通格式示例
while(i < 100) {
syso(i);
}
-----
// while扩展版格式
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
// 扩展版示例
int i = 0;
while(i < 100) {
syso(i);
i++;
}
// while
int i = 0;
while(i < 100) {
syso(i);
i++;
}
// for
for(int i = 0; i < 100; i++) {
syso(i);
}
// 普通格式
do {
循环体语句;
} while(判断条件语句);
// 扩展格式:
初始化语句;
do {
循环体语句;
控制条件语句;
} while(判断条件语句);
区别
for循环的初始化语句的作用域: for的大括号内
思考:
break
: 直接结束循环, 或switch语句continue
: 结束本次循环, 继续执行下一次int a = 2;
switch (a) {
case 1:
System.out.println("进入1");
break;
case 2:
System.out.println("进入2");
case 3:
System.out.println("进入3");
break;
}
会输出:
进入2
进入3
// 示例
if (false) {
System.out.println("这条语句不会被执行");
System.out.println("这条语句不会被执行");
}
// 去掉大括号后
if (false)
System.out.println("这条语句不会被执行");
System.out.println("这条语句会被执行");
// 相当于
if (false) {
System.out.println("这条语句不会被执行");
}
System.out.println("这条语句会被执行");
// 示例
while (false) {
System.out.println("这条语句不会被执行");
System.out.println("这条语句不会被执行");
}
// 去掉大括号后
while (false)
System.out.println("这条语句不会被执行");
System.out.println("这条语句会被执行, 且只执行1次");
// 相当于
while (false) {
System.out.println("这条语句不会被执行");
}
System.out.println("这条语句会被执行, 且只执行1次");
//------------------
// for示例
for (int i = 0; i < 1; i++) {
System.out.println("这条语句不会被执行");
System.out.println("这条语句不会被执行");
}
// 去掉大括号后
for (int i = 0; i < 1; i++)
System.out.println("这条语句不会被执行");
System.out.println("这条语句会被执行, 且只执行1次");
// 相当于
for (int i = 0; i < 1; i++) {
System.out.println("这条语句不会被执行");
}
System.out.println("这条语句会被执行, 且只执行1次");
// 外部声明的变量, 作用域如果包含了for循环, 也是可以在for循环中直接使用的
int i = 0;
for (; i < 10; i++) {
// ...
}
// 将for循环修改为死循环
for (;;) {
// 死循环
}
for (;;); // 连循环体都没有的死循环
// while也可以死循环
while (true) {
// 死循环
}
while (true); // 没有循环体的死循环
// 格式1
if (关系表达式) {
语句体; // 关系表达式为true时执行
}
// 格式2
if (关系表达式) {
语句体1; // 关系表达式为true时执行
} else {
语句体2; // 关系表达式为false时执行
}
// 格式3
if (关系表达式1) {
语句体1; // 关系表达式1为true时执行
} else if (关系表达式2) {
语句体2; // 关系表达式2为true时执行
}
...
} else {
语句体n; // 以上关系表达式都为false时执行
}
// 格式
switch (表达式) {
case 值1: // 当表达式的值为值1时执行
语句体1;
break;
case 值2: // 当表达式的值为值2时执行
语句体2;
break;
...
default: // 当表达式的值不能匹配上面的case时执行
语句体n;
break;
}
// 格式
for (初始化语句; 判断条件语句; 控制条件语句) {
循环体语句;
}
// 示例
for (int i = 1; i <= 5; i++) {
// 获取1~5的数值
}
// 普通格式
while (判断条件语句) {
循环体语句;
}
// 扩展格式
初始化语句;
while (判断条件语句) {
循环体语句;
控制条件语句;
}
// 示例
int i = 1;
while (i <= 5) {
syso(i); // 打印1~5
i++;
}
// 普通格式
do {
循环体语句;
} while (判断条件语句);
// 扩展格式
初始化语句;
do {
循环体语句;
控制条件语句;
} while (判断条件语句);
// 示例
int i = 1;
do {
syso(i);
i++;
} while (i <= 5);
往期知识:Java运算符那些事(最全知识点)