一、流程控制
在java中程序的执行通常包含三种结构:
- 顺序结构(从main方法开始,从上往下依次执行);
- 分支结构(①if···else··· ;②switch)
- 循环结构
二、分支结构
1.if···else···
if(条件表达式){
//执行体
}
if(条件表达式){
//执行体
}else{
//执行体
}
········
2.switch
switch(变量){
case 值1:
//执行体
break;
case 值2:
//执行体
break;
case 值3:
//执行体
break;
·······
default:
//执行体
break;
}
注意
switch能够支持的变量数据类型包含:
jdk1.7 新增支持String类型
jdk1.5 新增支持enum(枚举)类型
jdk1.5以下支持:byte、short、int、char
代码示例:
//if···else···
//学生成绩60输出及格,80输出优秀,100输出满分
int score = 75;
if( score >= 0 && score < 60){
System.out.println("不及格")
}else if( score >= 60 && score < 80){
System.out.println("及格")
}else if( score >= 80 && score < 99){
System.out.println("优秀")
}else if(score == 100){
System.out.println("满分")
}
//switch
//int 值 1:吃饭;2:运动 ;3:学习 ;默认:睡觉
int code ;
switch(code){
case 1:
System.out.println("吃饭");
break;
case 2:
System.out.println("运动");
break;
case 3:
System.out.println("学习");
break;
default :
System.out.println("睡觉");
}
三、循环语句
- for循环
- while循环
- do···while循环
- forEach循环(增强for循环,主要用于数组或者集合遍历(迭代)操作)
- 递归(recursion)
1.for循环
for(初始变量;条件表达式;步进表达式){
//循环体
}
*例题:从1输出带31,每隔7个数换一行
for(int i = 1;i <= 31;i++){
//"\t" : 相当于tab。缩进
System.out.println( i + "\t");
if(i % 7 == 0){
//换行
System.out.println();
}
}
*例题:打印菱形
public static void lingxing(int n){
//打印上半部分
for(int i = 1;i <= n; i++){
for(int j = n;j > i ; j--){
//打印空格
System.out.println(" ");
}
//每行*数:二倍行数减一
for(int k = 0; K = 2 * i - 1;k++){
//打印*
System.out.println("*");
}
//换行
System.out.println();
}
//打印下半部分
for(int i = 1;i<= n ;i++){
for(int j = 1;j <= i; j++){
System.out.println(" ");
}
for(int k = (n - i)*2-1;k > 0;k--){
System.out.println("*");
}
System.out.println();
}
}
2.while循环
//while语法:
while(条件表达式){
//循环体
}
*例题:用while语句写从1输出到31;每隔7个数换一行
int i = 1;
while(i <= 31){
System.out.println(i + "\t");
if(i % 7 ==0){
System.out.println();
}
i++;
}
3.do···while···循环
//do···while···语法
do{
//执行体
}while(条件表达式)
*例题:用do···while···语句写从1输出到31;每隔7个数换一行
int i = 0;
do{
System.out.println(i + "\t");
if(i % 7 == 0){
System.out.println();
}
i
i++;
}while(i <= 31);
4.forEach循环
//把s在names中遍历一遍
for(String s:names){
System.out.println(s);
}
5.递归
递归即在方法内部调用方法自身,递归可以解决一些算法问题(斐波那契数列),文件夹遍历(目录树),菜单树等,在java中有两种模式:直接递归与间接递归。
*例题:使用递归解决斐波那契数列(1,1,2,3,5,8,13,21····)
/**
* 输出50个斐波那契数
* @param args
*/
public static void main(String[] args) {
for (int i = 1; i <= 7; i++) {
int l = new ArrayDemo1().fib(i);
System.out.print(l+",");
}
}
private int fib(int n) {
if (n == 1 || n == 2){
return 1;
}
else{
return fib(n-1) + fib(n-2);
}
}
*例题:递归完成1 * 2 * 3 * 4 * 5 ····
/**
* 使用递归输出1*2*3*4*···n
* @param args
*/
public static void main(String[] args) {
for (int i = 1; i < 10 ; i++) {
int u = new ArrayDemo2().cale(i);
System.out.println(u);
}
}
public int cale (int n){
if (n == 1){
return 1;
}else{
return n * cale(n-1);
}
}
四、打断循环
- continue:跳出循环语句中一次循环;
- break:在循环语句中可以用于结束一层循环;
- return:用于表示方法的结束,一旦执行到return,则方法结束,在同一个代码片段在return之后不允许执行任何其他代码。