程序执行是过程化的,也就是说在默认情况下程序是从上到下依次执行,但是有些情况下我们想让他选择执行某部分,或者反复执行某部分,这就是流程控制。
在Java语言中流程控制语句一般分为两大类:一类是判断语句,其中包括if...else...、if...elseif...、switch等等;另一类是循环语句,其中有for、while、do...while等等。
下面我们来逐个详细看一下:
if语句是最基础的流程控制语句,其语法为:
if(条件){
执行体
}此处需要注意的是条件必须是布尔类型的。因为是最基础的流程控制,所以只对条件为true时做了处理,条件为false时会跳过此段代码。
if...else语句是if语句的升级版,其语法为:
if(条件){
执行体1
}else{
执行体2
}很明显,相对于上面的if语句,它多了一个else和执行体2,那就说明他对条件为false时做了处理,使流程控制更加完善。
if...else if语句一般用于多条件判断,其语法为:
if(条件1){
执行体1
}else if(条件2){
执行体2
}
...
else if(条件n){
执行体n
}else{
执行体
}不过此语法太过繁琐,在实际开发过程中更偏向于使用下面的switch语句。
switch语句语法:
switch(表达式){
case 常量1:
执行体; break;
case 常量2:
执行体; break;
...
default:
执行体; break;
}switch语句执行流程是将表达式和case后的常量进行比较,和那个case后的常量相同,就执行那个case后的程序,遇到break就结束。
此处要注意switch中case具有穿透性,执行完case后的程序后,如果没有break,那么会继续执行后面case的执行体,知道遇到break或者switch结束。
while循环是最基础的循环结构,格式是:
while(条件){
循环体
}当条件为一直判断为true时,会使程序进入死循环状态,这个时候可以选择在程序最下方添加自增量,从而使条件改变。
do...while循环是在whild循环的基础上先执行了一次循环体,其格式为:
do{
循环体
}while(条件)for循环相对于上面两种循环有所不同,它增加了初时变量和自增量,使得循环次数更加可控,格式为:
for(初始化变量;条件;自增量){
循环体
}当条件一直为true时为死循环,此时初始化变量和自增量可以不写。当小括号里只有 (;;) 时也是死循环。
增强for底层使用的是迭代器,使用for循环的格式,简化了迭代器的特点,一般用来遍历数组和集合,格式如下:
for(集合(数组)的数据类型 变量名:集合(数组)名){
方法体
}增强for是jdk1.5以后出现的新特性,所有的单列集合都可以使用增强for,但是只能遍历,不能操作。
关于以上迭代器和集合等诸多新名词,将在后续文章讲解
很多地方会用到嵌套循环,最经典的就是冒泡排序算法,那么要怎么计算循环次数呢?有如下公式:
总循环次数=内循环次数*外循环次数
数组,顾名思义,一堆数据的组合。数组分一维数组和多维数组,其中多维数组最常用的还是二维数组。
//创建一维数组
数据类型[] 变量名=new 数据类型[存储个数];
数据类型[] 变量名=new 数据类型[元素 1,元素 2,...];
数据类型[] 变量名={元素 1,元素 2,...};
//创建多维数组,其原理就是数组中的数组,数组中存放数组
数据类型[][] 变量名= new 数据类型[数组长度][存放的数组长度];