您的位置:首页 > 编程语言 > Java开发

Java基础 | 流程控制

2017-03-21 22:37 33 查看
Java提供了两种基本的流程控制结构:分支结构和循环结构.其中分支结构用于实现根据条件来选择性的执行某段代码,循环结构则用于根据循环条件重复执行某段代码.

1. 分支结构

Java提供了两种分支控制结构:if语句和switch语句,其中if语句使用布尔表达式或者布尔值作为分支条件来进行分支控制;而switch语句则用于对多个整型值进行匹配,从而实现分支控制.

1.1 if条件语句

if(){

}else if(){

}
...
else {

}


在if后只能是逻辑表达式,即只能返回
ture
或者
false
;

代码块只有一条语句时,可以省略花括号,但是为了减少错误和代码的可读性,不建议这样做,

1.2 switch分支语句

switch由一个控制语句和多个case标签组成.

switch(expression){
case condition1 :
statement(s)
break;
case condition2 :
statement(s)
break;
case condition3 :
statement(s)
break;
default:
statement(s)
}


switch语句后的控制表达式的数据类型可以是byte,short,char,int四种整数类型,枚举类型和java.lang.String类型(1.7才允许),不能是boolean类型

除了default之外,每一个case最后都必须是break;这是由switch语句的运行流程决定的:switch语句会先求出表达式的值,然后与case后的标签进行比较,一旦遇到相等的值,程序就开始这个case后的代码,不在判断后面的case时候匹配,除非遇到break才会结束.

2. 循环结构

2.1 while循环语句

int count = 5;
while (count < 10){
System.out.println(count);
count++;
}


先对循环条件求值,如果等于
true
则运行循环部分.

2.2 do while循环语句

do while循环语句与while语句的区别是:do while语句会先执行循环部分,然后才对循环条件进行判断,如果为真则继续执行下一次循环.所以do while最少也会执行一次.

int count = 5;
do{
System.out.println(count);
}while (count < 10); //必须加分号.


2.3 for循环

for循环更简洁,更常用.大部分情况下可以代替while 循环和do while循环.

for(int i = 5;i<10;i++){
System.out.println(count);
}


先执行初始化语句(只执行一次),再对循环条件进行判断,若满足则执行循环体.循环体执行结束后,执行循环迭代语句.因此对于for循环,循环条件总比循环体多执行一次.

因为for循环的迭代语句没有和循环体放在一起.所以与while和do while不同的是:执行循环体时遇到continue语句结束本次循环,迭代语句也依然会执行.

3. 控制循环结构

3.1 使用break结束循环

for(int i = 5;i<10;i++){
System.out.println(count);
if(i == 7){
break;
}
}


遇到break语句时将会结束break所在的循环.

如果要结束更外层的循环,则需要在break后添加标签

//外层循环,outer作为标识
outer:
for(int i = 0;i<10;i++){
//内层循环
for(int j = 0;i<10;i++){
System.out.println(count);
if(i == 7){
break outer;  //跳出outer所标示的循环
}
}
}


3.2 使用continue忽略本次循环剩下的语句

for(int i = 5;i<10;i++){
if(i == 7){
continue;
}
System.out.println(count);
}


当i等于7时,后面的打印语句将不会被执行.continue也可是在后面添加标签忽略跟外层的本次循环,用法与break相似.

3.3 使用return结束方法

return的作用是结束方法.而基本所有的循环都被放在方法中执行,因此return语句也可以结束循环

4. 实践

4.1 九九乘法表

for (int i = 1; i<10 ; i++) {
for (int j = 1; j < i+1; j++) {
System.out.print(i +" * "+ j + " = " + i*j+"  ");
}
System.out.println("");
}


4.2 冒泡排序

public static void main(String[] args) {
int[] arr = {2, 34, 56, 7, 13, 5, 1};
int a = arr[0];
for (int i = arr.length - 1; i>0 ; i--) {
for (int j = 0; j < i; j++) {
if (arr[j] > arr[j + 1]) {
a = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = a;
}
}
}
System.out.println(Arrays.toString(arr)); //[1, 2, 5, 7, 13, 34, 56]
}


4.3 菱形

for (int i = 0; i < 2 * n - 1; i++) {
for (int j = 0; j < 2 * n - 1; j++) {
if (i < n) {
if (j >= n - i - 1 && j < n + i) {
System.out.print('*');
} else {
System.out.print(' ');
}
} else {
if (j >= i - n + 1 && j < 3 * n - i - 2) {
System.out.print('*');
} else {
System.out.print(' ');
}
}
}
System.out.print("\n");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java