前言

前面两篇已经了解了java语言基础,本篇开始对java的流程控制进行学习。流程控制对任何一门编程语言都是极为关键的,也是学好java基础中的基础,为控制程序步骤提供基本手段。

复合语句

java语句中的复合语句是以整个块区为单位的语句,又称为块语句。符合语句有“{”开始,以“}”结束(尤为重要大是二者皆为英文半角)。

对于复合语句,只需要知道复合语句为局部变量创建了一个作用域,该作用域是程序的一部分,在该作用域中某个变量被创建并可以被使用,如果在该作用域外使用该变量则会报错,且复合语句中可以嵌套复合语句。

总结:复合语句是流程控制的基础。

条件语句

条件语句可以根据不同的条件执行不同的语句,包括if条件语句和switch多分支语句。

1、if条件语句

使用if条件语句,可选择是否要执行在条件之后的那个语句。其结构如下:

int a = 100;
if(a == 100){
	System.out.println(a);
}

关键词if之后是作为条件的布尔表达式,如果该表达式返回true,则执行if后语句;若为false,则不执行。


2、if…else语句

if…else语句是条件语句中最常用到的一种,它会针对某种条件选择处理。可以通俗理解为“如果满足某条件,则执行某种处理,否则进行另一种处理”。

public class Score {
	public static void mian(String[] args){
		int math = 80;
		int english = 59;
		if(math >= 60){
			System.out.println("math has passed");
		}else{
			System.out.println("math has not passed")
		}
		
		if(english >= 60){
			System.out.println("english has passed")
		}else{
			System.out.println("english has not passed")
		}
	}
}

上述代码就是if…else语句判断输入的数学与英语成绩是否及格。


3、if…else if多分支语句

if…else if多分支语句用于针对某一件事的多种情况进行处理,可以通俗理解为“如果满足某种条件,进行某种操作,否则,如果满足另一种条件,则进行另一种操作…”

public class GetTerm{
	public static void mian(String[] args){
		int x = 40;
		if(x>60){
			System.out.println("x的值大于60");
		}else if(x>30){
			System.out.println("x的值大于30小于60");	
		}else if(x>0){
			System.out.println("x的值大于0小于30");	
		}else{
			System.out.println("x的值小于等于0");
		}
	}
}

4、switch多分支语句

switch多分支语句是一种多选一的语句,在java语言中,可以用switch语句将动作组织起来进行多选一。

switch(表达式)
{
case 常量值1:
	语句块1
	break;
case 常量值2:
	语句块2
	break;
case 常量值3:
	语句块3
	break;
......
default:
	语句块 n+1;
}

这里需要注意,switch语句中表达式的值必须是整型或者字符型,常量值1~n必须也是整型或者字符型。

简单说一下switch语句是怎么执行的(希望和我一样初学的朋友一定要记住,如果不行就多看几遍,甚至可以写博客来帮助记忆)。首先switch语句先计算表达式的值,如果表达式的值与case后的常量值相同,则执行该case后的若干个语句,直到遇到break语句为止。如果没有break,则继续执行下一case中的若干语句,直到遇到break为止。若没有一个常量的值与表达式的值相同,则执行default后面的语句。default语句可选,如果不存在default语句,而且switch语句中的表达式的值与任何case的常量值都不相同,则switch不做任何处理。并且,同一个switch语句,case的常量值必须互不相同。


循环语句

循环语句是满足一定条件情况下反复执行某一操作的语句。包括while循环、do…while循环和for循环。

1、while循环

while循环语句的循环方式是利用一个条件来控制是否要继续进行反复执行这个语句。

下面我们来做一个简单的算术题,即将1-10这十个数字相加求和,那么我们如何运用while循环语句让程序帮我们计算呢?请看:

public class SumGet{
	public static void mian(String[] args){
		int x = 1;	// 定义初始x值
		int sum = 0;	// 定义求和变量用来存储相加后的结果
	
		while(x<=10){
			sum += x;	// 循环相加,这里的另一种写法也就是 sum = sum + x;
			x++;	// x自加1
		}
		System.out.println(sum);
	}
}

不懂得朋友可以将上述代码复制到自己的电脑上去Debug一下,反复看程序运行的流程,就可以理解这个while语句的循环方式了。

值得一提的是,如果我们在while语句后面直接加上分号。
即:

while(a==5);

上述语句代表的为空语句,程序将进入无限循环中。

2、do…while循环语句

do…while语句和while语句的区别在于,do…while语句一定可以优先执行一次,即do…while语句至少执行一次。语法格式如下:

do
{
    执行语句
}  while (条件表达式);

可以看到do后的执行语句会先执行一次,也就是无论后面的while语句是否执行,do关键字后的执行语句一定会执行一次。


3、for循环语句

for循环语句可以说是java程序设计中最有用的循环语句。一个for循环可以用来重复执行某条语句,知道这条语句得到满足。语法格式如下:

for(表达式1; 表达式2; 表达式3)
{
    语句序列
}

其中,表达式1为初始表达式,相当于初始化变量;表达式2为循环条件表达式,该for循环就是依据该条件进行执行循环的;表达式3是循环后操作表达式,负责修改变量改变循环条件。三个表达式之间用分号隔开。

举一个栗子…

public class Circulate {

    public static void main(String[] args) {
        int sum = 0;

        for(int i=2; i<=100; i+=2) {
            sum += i;
        }

        System.out.println(sum);
    }

}

上述代码的功能是执行100以内所有偶数的和,可以看到for循环语句,初始化一个i=2,也就是i从2开始进行,条件是i小于等于100,也就是只要i小于或等于100,该循环都要执行,满足100以内这个条件;第三个表达式“i+=2”则表示循环要执行i=i+2,也就可以满足偶数和这个条件。

说到for循环语句就不得提到foreach语句了,它是Java5后新增的for语句的特殊简化版本,并不能完全替代for语句,但所有foreach语句都可以改写为for语句。foreach语句在遍历数组等时为程序员提供了很大的方便。语法格式如下:

for(元素变量x : 遍历对象obj) {
    引用了x的Java语句;
}

跳转语句

java语言中提供三种跳转语句,分别为break语句、congtinue语句和return语句。

1、break语句

在上文中的switch循环中,我们已经见过了break语句,它是用来中止case的,而实际上break语句在for、while、do…while语句中,都是用于强行退出当前循环的,当前循环怎么理解?break只能跳出离它最近的那个循环的循环体,这里假设有两个循环嵌套使用,break在内层循环中,那么这个break语句就是用来跳出内层循环的,如下述代码:

for(int i=0; i<n; i++) {    // 外层循环
    for(int j=0; j<n ;j++) {    // 内层循环
        break;
    }
}

2、continue语句

continue语句只能用于for、while、do…while循环语句中,用来让程序直接跳过其后面的语句,进行下一次循环。

public class ContinueDemo {
    public static void main(String[] args) {
        int i = 0;

        while(i < 10) {
            i++;
            if(i%2 == 0) {    // 能被2整除,是偶数
                continue;    // 跳过当前循环
            }
            System.out.print(i + " ");
        }
    }
}

3、return语句

return顾名思义是返回的意思,即从一个方法返回并把控制权交个调用它的语句。

public void getSum(){
	return Sum;
}

写在最后

鄙人愚昧,还在学习中,更多的是为了记录学习并且方便需要的朋友