Java语言基础02-流程控制
来源:互联网 发布:js 导航栏点击后变色 编辑:程序博客网 时间:2024/05/29 02:22
一 流程控制结构(如果没有流程控制,Java语句总是从上至下执行的)
1)分支结构:
1.1)if 语句
格式1:if (逻辑表达式){ 格式2:if (逻辑表达式) { 格式3:if (逻辑表达式1) {
语句1; 语句1; 语句1;
语句2; 语句2; 语句2;
.... .... .....
} }else{.....} }else if(逻辑表达式2){.....}
分别称为,if语句、if....else语句、if.....else if语句。逻辑表达式是boolean型,
格式1中:当逻辑表达式返回结果是true时,进行大括号中的语句体,返回结果是false时,不执行if语句体。
格式2中:如果逻辑表达式返回结果是true时,执行if中语句体,否则执行else中的语句(属于不是就是的意思,不是if中的语句,就是else中的语句)。
格式3中:如果逻辑表达式1返回结果是true时,执行if中语句体,否则再判断else if中的逻辑表达式2,如果返回true则执行else if后的语句体,返回false即不执行。格式3可以多次扩展:if (逻辑表达式1){.....}
else if(逻辑表达式2){......}
else if(逻辑表达式3){......}
........
在采用多次判断时,要注意代码的可读性。
注意:格式2中,在if里面嵌套if语句,则可以写成格式3的形式,或者说,格式3就是if嵌套的简便写法。
当大括号中只有一条语句时,大括号可以省略!
1.2)switch 语句
格式1:switch(标识)
{
case 表达式1:语句1...;
case 表达式2:语句2...;
case 表达式1:语句3...;
........
default :语句....;
}
switch后面的标识和case后面的表达式都是整型但不能是long型的。(其实在JDK7.0后switch - case支持字符串)
当 标识==表达式1/2/3...,则从语句1/2/3...开始执行,直到全部执行完。
格式2:switch(标识)
{
case 表达式1:语句1...;break;
case 表达式2:语句2...;break;
case 表达式1:语句3...;break;
........
default :语句....;
}
当 标识==表达式1/2/3...,则从语句1/2/3...开始执行,执行到break跳出switch结构,不再执行下面语句。
例1:
[java] view plain copy public class Test{ public static void main(String[] args){ char expression = 'A';//定义字符'A' switch(expression){//执行switch语句 case 'A': System.out.println("一等奖"); break;//当expression=='A',输出一等奖,并退出switch语句。 case 'B': System.out.println("二等奖"); break; case 'C': System.out.println("三等奖"); break; default: System.out.println("谢谢惠顾"); } }//注意,这里虽然是字符'A',但我们知道字符型char是可以自动类型转换成为int型的 }
2)循环结构:在一定条件下,反复执行一段代码。
2.1) for 循环:使用最多的循环。
2.1.1)循环的要素:循环条件(循环变量初始化,循环变量向着循环结束的方向改变),循环体。
for(循环变量初始化 ; 循环结束条件 ; 循环变量的改变){..循环体..}
例2:
int sum = 0; for(int i = 0;i < 100;i++){ sum+=i; } System.out.println(sum);
for 循环在实际中用得非常普遍,主要用来固定执行固定次数的循环,所以经常用来遍历集合和数组中的元素。他的增强版:foreach 循环,主要用来遍历输出数组和集合,尤其在集合中,可以简化代码(集合会使用到)。
2.1.2)for循环还可以省略括号中的三个表达式:但是括号中的分号不能省略,我们可以把循环变量的初始化放在循环外,循环变量的改变放在循环体中。注意:这里的循环结束条件i<100 其实也可以省略,不会报错,但是就成为了死循环(永远循环无法结束)。
例3:
int sum = 0; int i = 0; for( ; i < 100 ; ){ sum+=i; i++; } System.out.println(sum);
2.2) while 循环:当....时,也称作当型循环。
例4:将上面for循环改造为while循环
int sum = 0; int i = 0; while(i < 100){ //当i<100执行循环体,不满足条件式时退出 sum+=i; i++; } System.out.println(sum);
当i < 100时,执行循环体中的语句。当初始条件不满足时,那么不会进入循环体。例如将初始条件改为 i=101;那么 i<100 不成立,将不会执行循环。
2.3) do...while 循环:do...直到...,也称直到型循环。
例5:
int sum = 0; int i = 0; do{ //不管循环条件如何,先执行一次循环体 sum+=i; i++; }while(i < 100); //执行一次循环体后,在进行条件判断。以分号结尾,表示循环到此结束。 System.out.println(sum);
先执行一次循环体,知道遇到while才判断条件,跟while循环相比较,do....while循环至少执行一次循环体,而while可能一次都不执行。
2.4)嵌套循环、break和continue;
2.4.1)循环嵌套:在循环体中嵌套循环结构,叫做循环的嵌套。
例6:
for(int i = 0;i<100;i++){ for(int j = 0;j<50;j++){ System.out.print(j+" ");} System.out.println();}
以上代码将0-49的整数输出100次,那么循环需要执行的代码其实100*50次。在一定程度上嵌套的层数越多,程序执行需要的时间越长,代码越不具有可读性。一般不建议两层以上的嵌套。
2.4.2)break:控制循环结构。
当我们在循环体中添加break时,即表示要退出循环。我们依然用改造上面的例子来说明:
例7:
int sum = 0;for(int i = 0;i<100;i++){
sum+=i;
if(sum>=3000){ //添加循环控制条件,当和大于等于3000时,退出循环。
break;
}
}
System.out.println(sum);//3003注意,break是跳出循环,不再执行后面的循环。在while和do....while中依然适用。而且单独的break只能跳出一层循环,如果需要跳出多层循环的话,需要配合标签使用例如:out: //在外循环定义标签for(int i = 0;i<100;i++){ for(int j = 0;j<50;j++){ System.out.print(j+" "); if(j>25){ break out; //直接跳出标签所在的循环,即跳出外循环。} } System.out.println(); }
2.4.3)continue:跳过本次循环continue与break用法相似,不过他的作用是跳过本次循环,直接进行下一次循环,在嵌套中也可以配合标签使用跳过外层循环。例如:out: //在外循环定义标签for(int i = 0;i<100;i++){ for(int j = 0;j<50;j++){ System.out.print(j+" "); if(j>5){ continue out; //直接跳过标签所在的循环的本次循环。} } System.out.println(); }
- Java语言基础02-流程控制
- Java语言基础-6.流程控制语句
- Java基础02 - 流程控制
- java 基础 流程控制
- java 基础 流程控制
- 【JAVA基础】[流程控制]
- [Java基础] 流程控制
- Java基础--流程控制
- java基础-控制流程
- java基础:流程控制
- Java基础 | 流程控制
- java基础流程控制
- java基础,流程控制
- C语言基础----流程控制
- Java语言基础组成之:程序流程控制、函数、数组
- Java语言基础——贰(程序流程控制)
- 黑马程序员--Java语言基础2-流程控制和函数
- Java语言基础(二)---程序流程控制语句、函数
- HDFS-HA的配置-----自动Failover
- Transact_SQL小手册(各种sql语句大集合)
- 4-10 阶乘计算升级版
- Window之删除桌面快捷方式图标箭头
- 详解Javascript对象
- Java语言基础02-流程控制
- 关于LayoutInflater
- Android UI-实现底部切换标签之方式一 ──fragment(底部采用radioGroup+radiobutton)添加5个子fragment
- Android捕获异常的实现
- 1036. 跟奥巴马一起编程(15)
- 92. Reverse Linked List II
- 数据库的连接的方式
- 【android】数据库升级完整解决方案
- HDOJ 4893 Wow! Such Sequence! (线段树)