作用
控制语句的出现让程序更具有逻辑性、条理性
选择语句
if语句
- 注意事项
- 对于多个if语句,在任何情况下,只能有一个分支执行,不可能存在多个分支执行
- if语句的4钟写法中,只要带有else语句,该if语句就一定会执行,否则有可能不会执行
- 在分支语句当中,如果Java语句只有一条,那么{}可以省略,但是为了可读性,一般不会省略
public class Test02 {
public static void main(String[] args) {
if (true) System.out.println("大括号可以省略");
}
}
4. 控制语句和控制语句之间是可以嵌套的,但是嵌套的时候,最好一个语句一个语句分析,不要冗杂在一起分析
- 语法格式及四种写法
public class Test03 {
public static void main(String[] args) {
int a = 9;
// 写法一:
if (a > 0){
System.out.println("执行");
}
/* 执行原理:布尔表达式如果是true,则执行大括号里面的程序,
否则大括号里面的代码不执行 * */
// 写法二:
if (a < 0){
System.out.println("不执行");
} else {
System.out.println("if语句不执行的时候,else语句执行");
}
/*执行原理:若布尔表达式为true,则执行分支1,
如果布尔表达式的结果是false,则分支1不执行,执行分支2* */
// 写法三:
if (a > 0){
System.out.println("执行");
} else if (a > 5){
System.out.println("不执行,因为if语句在任何情况下,只能有一个分支执行");
} else if (a > 8){
System.out.println("不执行,因为if语句在任何情况下,只能有一个分支执行");
}
/*先判断“布尔表达式1”,如果为true,则执行分支1,然后if语句结束
若“布尔表达式1”为false,则会继续判断布尔表达式2的结果
从上往下一次判断,主要看第一个true发生在哪个分支上
第一个true对应的分支执行,只要一个分支执行,整个if语句结束* */
// 写法四:
if (a > 10){
System.out.println("不执行");
} else if (a > 11){
System.out.println("不执行,判断语句结果为false");
} else if (a > 20){
System.out.println("不执行,判断语句结果为false");
} else {
System.out.println("if语句不执行的时候,else语句执行");
}
/** 如果if和else if 都不满足,就执行else里面的Java语句* */
}
}
switch语句
- 注意事项
- JDK8之前的版本不支持String类型
- switch语句中:”值”与“值1”、“值2”、“值3”比较的时候会使用“==”进行比较
- switch语句本质上只支持int和string,但是byte、short、char也可以在switch语句当中,因为这三者可以进行自动类型转换
- 若switch语句的分支的最后没有break语句,则会出现分支穿透现象
- 若所有的case语句都没有执行,则最后的default分支会执行
- case合并现象
public class Test04 {
public static void main(String[] args) {
//完整的switch语句
//根据键盘的输入,判断星期几
System.out.print("输入[0~6]的整数:");
java.util.Scanner s = new java.util.Scanner(System.in);
int num = s.nextInt();
switch(num){
case 6: case 7: case 8:
//case合并现象
System.out.println("星期六");
break;
default:
System.out.println("请输入正确的数字");
}
}
}
- 语法格式
public class Test04 {
public static void main(String[] args) {
//完整的switch语句
//根据键盘的输入,判断星期几
System.out.print("输入[0~6]的整数:");
java.util.Scanner s = new
java.util.Scanner(System.in);
int num = s.nextInt();
switch(num){
case 0:
System.out.println("星期天");
break;
case 1:
System.out.println("星期一");
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: case 7: case 8:
//case合并现象
System.out.println("星期六");
break;
default:
System.out.println("请输入正确的数字");
}
}
}
-
执行原理:
拿”值“和”值1“、”值2“、”值3“进行比较,
若相同,则执行该分支中的Java居于,然后遇到break语句,switch语句就结束了
若不相同,则接着进行比较 -
注
- break;语句和default分支不是必须的
循环语句
for循环
- 注意事项
- for循环内部的变量需要定义类型
- for循环里面的变量是一个局部变量,for循环结束之后,内存就释放了,即该变量只能在该for循环内部使用
- 当for循环内部使用的变量放在for循环之外,那么for循环的算数运算符++,会影响该变量
public class Test05 {
public static void main(String[ ] args){
int i = 1;
for( ; i < 10; i++){
System.out.println("i = " + i);
}
System.out.println("for循环外部的i=" + i); //for循环外部的i=10
}
}
-
语法格式
- for(int i = 1; i < 10; i++){ System.out.println(i); }
- for(变量; 判断条件; 变量改变){ Java语句; }
-
两层for循环
public class Test06{
public static void main(String[ ] args){
for(int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
System.out.print(j);
}
System.out.println();
}
}
}
增强for循环
-
注意事项
- JDK5.0 之后推出的一个新特性:增强for循环,或者叫做:foreach
- 缺点:没有下标,所以在需要使用下标的循环中不建议使用foreach
- for()里面是一个冒号,而不是分号
-
语法格式
- for(元素类型 变量名:数组或者集合){Java语句;}
public class Test07{
public static void main(String[] args){
//数组
int[] a = {1,2,3,4};
//使用增强for循环
for(int i : a){
System.out.println(i);
}
}
}
while循环
-
注意事项
- while循环的循环次数为:0~n次
- 本质上while循环和for循环是完全相同的
- for和while可以互换,只是语法格式不一样而已
- for和while循环都可以互相嵌套
-
语法格式
- while(布尔表达式){循环体;}
public class Test08{
public static void main(String[] args){
int a = 10;
while(a > 0){
System.out.print(a + " ");
a--;
}
}
}
//输出:10 9 8 7 6 5 4 3 2 1
- 执行原理
- 判断布尔表达式若为true,则执行循环体若为false,则推出循环
do…while循环
-
注意事项
- do··while的while语句的最后有分号
- 先斩后奏,不论如何do··while都会执行一次循环体
- 记得要写终止循环的语句
-
语法格式
- do{循环体;}while(布尔表达式);
public class Test09{
public static void main(String[] args){
int a = 10;
do{
System.out.println(a + " ");
a--;
}while(a > 0);
}
}
//输出:10 9 8 7 6 5 4 3 2 1
- 执行原理
- 先执行循环体再进行判断若为true,则继续执行循环体若为false,则退出循环
转向语句
break语句
- 注
- break翻译为折断
- break可以用在switch语句中,来种植switch语句的执行,防止case穿透现象
- 用在循环语句当中,终止循环语句的执行
- break会终止离他最近的循环
- break语句的执行不会使整个方法结束,而是来终止最近的循环
- break只会终止最近的一个循环
- 可以终止指定的循环
continue语句
-
作用
- 终止当前“本次”循环,直接进入下一次循环继续执行
-
语法机制
for( ){
if( ){
comtinue;
//当这个continue语句执行的时候,continue下面的代码不执行,直接进入下一次循环
}
}
- 注
- continue也可以指定循环 —— 代码