----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
程序流程控制
1、顺序结构
判断结构
if语句(分支语句)三种格式:
① if(条件表达式){
执行语句;
}
System.out.println();
举例:int age = 19;
if (age >= 18) {
System.out.println("可以浏览本网站");
}
System.out.println("完了");
②if(条件表达式){
执行语句;
} else {
执行语句;
}
举例:int x,y,z;
x = 5;
y = 10;
if (x > y) {
z = x;
} else {
z = y;
}
③if(条件表达式) {
执行语句;
} else if (条件表达式) {
执行语句;
} else {
执行语句;
}
举例:int x = 1;
if (x == 1){
System.out.println("男");
}else if(x == 0){
System.out.println("女");
}else {
System.out.println("人妖");
}
注意:如果 if 语句后面不加{},表示只能控制一条语句,加{}是控制整个{}里面的语句
if语句的嵌套格式:
if(条件表达式) {
if(条件表达式) {
执行语句;
} else {
执行语句;
}
} else {
if(条件表达式) {
执行语句;
} else {
执行语句;
}
}
举例:int x = 2, y = 1;
if(x==1) {
if(y==1) {
System.out.println("a");
} else {
System.out.println("b");
}
} else {
if(y==1) {
System.out.println("c");
} else {
System.out.println("d");
}
}
if语句和三元运算符的区别:
三元运算符可以称之为 if 语句的简写形式,但是只要简写就会有一定的弊端。
三元运算符,是一种运算符号,也就是说每次执行后,必须有结果。
if...else 是语句,只是控制流程,执行后不一定有结果
if...else 里面可以有语句,并输出结果,三元运算符不可以。
什么时候选择 if 语句
当对值进行判断的时候
当对数据区间进行判断的时候
当结果是布尔类型的时候
if 语句特点:
每一种格式都是单条语句。
第二种格式与三元运算符的区别:三元运算符运算完要有值出现,可以写在其他表达式中。
条件表达式无论写成什么样子,只看最终的结构是否是 true 或者 false;
选择结构:switch语句
格式: switch (表达式){
case 表达式里对应的值1:
执行语句;
break;
case 表达式里对应的值2:
执行语句;
break;
......
default:
执行语句;
break;//最后一句的 break;可写可不写,因为程序已经执行到了末尾
}
举例 String name = "丽丽";
String gender = "女士";
switch (gender){
case "先生":
System.out.println(name+"是一位"+gender+"喜欢吃饭睡觉打dota");
break;
case "女士":
System.out.println(name+"是一位"+gender+"逛街购物美容");
break;
default:
System.out.println(name+"是一位"+gender+"很漂亮");
}
switch 结束只有两种情况:
当程序执行过程中遇到了 break;
当程序执行到了末尾处
switch 需要注意的两个细节:
当 switch 表达式的值与其中一个 case 匹配的时候,这个 case 里没有写 break语句,那么程序会继续执行
下个 case 里的执行语句,不会再对 case 值进行判断。当几个 case 里的值所要执行的语句都一样
的时候,我们可以不写 break;。
举例 int month = 4;
switch (month){
case 3:
case 4:
case 5:
System.out.println(month+"月是春季");
//break;
case 6:
case 7:
case 8:
System.out.println(month+"月是夏季");
break;
case 9:
case 10:
case 11:
System.out.println(month+"月是秋季");
break;
case 12:
case 1:
case 2:
System.out.println(month+"月是冬季");
break;
default:
System.out.println(month+"月没有这样的月份")
}
上述例子就是三个case里面输出一样的值,所以省略了break;这样少写几行代码,提高效率,
如果 default没有写在最后并且里面没有写break语句,switch里的表达式与各个 case里的值都不匹配的时候,
上面两个条件同时满足的话,程序在 default 里执行完了还会再去执行 case 里的语句
例如 int x = 3;
switch (x){
case 4:
System.out.print("a");
break;
default:
System.out.print("b");//当程序执行到了default但是它没有break,
下面的 case 值不再判断,程序继续执行
case 5:
System.out.print("c");
case 6:
System.out.print("d");
break;//遇到break,程序跳出
case 7:
System.out.print("e");
}
switch语句特点:
switch 语句选择的类型只有五种:byte int short char 在1.7版本之后可以接收 String 字符串。
case 与 default 之间没有顺序。先执行第一个 case ,没有匹配的case 执行 default 。
结束 switch 语句的两种情况:遇到 break;执行到 switch 语句结束。
如果匹配的 case 或者 default 没有对应的 break;那么程序会继续向下执行,运行可以执行的语句,
直到遇到 break;或者 switch 结尾结束。
switch语句和if语句的区别
如果对几个具体的值进行判断,可以使用 switch,也可以使用if,使用 switch 效率会更高一些。
如果是对区间进行判断或者 boolean 结果的判断,只能用if,因为switch里面不接收boolean类型的值
2、循环结构
while 循环
格式: while (条件表达式){
循环体;
控制循环次数;
}
例如 int x = 3;
while (x<6){
System.out.println("x="+x);//循环体
x++;//用x自增来控制循环次数
}
do while 循环:
格式 do {
循环体;
控制循环次数
}
while (条件表达式);
例如 int x = 3;
do {
System.out.println("x="+x);//循环体
x++;//用x自增来控制循环次数
}
while (x<6);
for 循环
for(初始化表达式;循环条件表达式;循环后的操作表达式){
执行语句;(循环体)
}
例如 for(int x=0; x<10;x++ ){
System.out.println("x="+x);
}
初始化表达式可以定义在外面,循环后的表达式可以定义在大括号里面。
for 的嵌套循环,建议做题的时候就弄个双层嵌套就可以,不要弄太多层,影响效率
for(初始化表达式;循环条件表达式;循环后的操作表达式){//这是外层循环
for(初始化表达式;循环条件表达式;循环后的操作表达式){//这是是内层循环
执行语句;(循环体)
}
执行语句;(循环体)
}
例如 for (int x=1;x < 6;x++ ){
for(int y=1; y<6; y++){
System.out.print("*");
}
System.out.println();
}
for 循环里面的每个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行
循环后的操作表达式,接着继续判断循环条件,重复整个过程,直到条件不满足为止。
while 循环与 for 循环可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放。
而 while 循环使用的变量在循环结束后还可以继续使用。
最简单的无限循环格式:while(true),for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某
些条件,来控制循环。
用输出语句 System.out.println();调试程序,看到循环中的每一步的输出。
定义循环的条件:
明确循环条件
控制循环次数
if 和 while 的区别:
if 是对条件进行一次判断
while 是对条件进行多次判断
while 和 do while 的区别:
do while 语句先执行循环体,再判断条件。也就是说无论条件是否满足,至少要执行一次循环体,先执行再判断
while 先判断条件,只要条件不满足就不在执行循环体了,先判断,再执行.
3、其他流程控制语句
break(跳出):应用于选择结构和循环结构。
continue(继续):应用于循环结构。
注意:
这两个语句离开应用范围,存在是没有意义的。
这个两个语句单独存在下面都不可以有语句,因为执行不到。
continue;语句是结束本次循环继续下次循环。
标号的出现,可以让这两个语句作用于指定的范围。
break;和 continue;语句单独存在时,下面的语句是执行不到的
4、语句总结
什么时候用变量?
当数据不确定的时候,就定义变量来存储数据。
什么情况下,使用哪个语句?
当对某几个值进行判断的时候,可以使用if或switch语句。建议使用switch。但是使用switch要注意,它只能操作
四种类型的值:byte short int char 。如果是四种以外的值,需要使用 if 。
如果对数据区间进行判断,或者对运算结果是 boolean 类型的进行判断,用 if 语句。
当需要某些语句执行很多次的时候,使用循环结构。如果定义变量只为循环增量存在时,可以使用 for 循环语句。
如果对一个条件进行一次判断使用 if ,如果对该条件进行多次判断,使用 while 循环。
如果要结束循环,可以控制循环条件,或者通过 break语句完成。如果要控制循环的流程,是否该继续执行,
可以通过 continue;或者break;来完成。
break;结束当前所在循环。
break可以在switch语句和循环中使用;
continue;结束本次循环,进入下一次循环。
continue只能在循环中使用;
return只能在方法中使用;