一般来说程序的结构有顺序结构、选择结构和循环结构3种,这三种不同的结构有一个共同的特点,他们只有一个入口,也只有一个出口。单一入出口让程序易读、易维护、易调试。

  1. 顺序结构:程序至上而下逐一执行,一条语句执行完之后继续执行下一条语句,一直到程序的末尾,如图所示:
  2. 选择结构:选择结构就是根据条件的成立与否决定要执行哪些语句一种结构:如图所示:
  3. 循环结构:循环结构就是根据判断条件的成立与否决定程序段落的执行次数,这个程序段落就称为循环体,如图所示:

选择结构

选择结构包括if、if…else及switch语句,程序加上选择结构后,就像增加了“十字路口”一样,根据不同的选择,程序的运行就会有不同结果。

if语句

if语句语法:
 if(判断条件){
 语句1;
 ……
 }

如果在if语句主体中要处理的语句只有一个,则可省略左右大括号。当判断条件的值满足时(true),就会逐一执行大括号里面的语句。if的流程控制图:

程序的架构说明 程序框架结构_编程语言


if语句的执行步骤:

(1) 对表达式的结果进行判断

(2) 如果表达式结果为真,则执行语句

(3) 如果表达式结果为假,则跳过该语句

实例1:

package com.qwy;

public class Demo01 {
	public static void main(String[] args) {
		int x=3;
		int y=4;
		System.out.println("*********开始比较**********");
		if(x>y){
			System.out.println("x比y大");
		}
		if(x<y){
			System.out.println("x比y小");
		}
		System.out.println("*********结束比较**********");
	}
}

执行结果:

开始比较*
 x比y小
结束比较*
if…else…语句
 语法结构:
 if(判断条件){
 语句主体1;
 }else{
 语句主体2;
 }

当程序中存在分支的判断语句时,就可以用if…else语句进行处理,当判断条件成立时,执行if语句主体,判断条件不成立时,执行else后面的语句主体,if…else的流程控制图示:

程序的架构说明 程序框架结构_java_02


实例2:

package com.qwy;

public class Demo02 {
	public static void main(String[] args) {
		int num = 3;
		if (num % 2 == 1) {
			System.out.println("nums是奇数");
		} else {
			System.out.println("num是偶数");
		}
	}
}

运行结果:
nums是奇数
三目运算符(三元运算符)
有一种运算符可以等价于使用if…else进行变量赋值的语句,即三目运算符:其格式:变量=判断条件?表达式1:表达式2。
实例3:

package com.qwy;

public class Demo03 {
	public static void main(String[] args) {
		int max = 0;
		int x = 2;
		int y = 4;
		max = x > y ? x : y;
		System.out.println(max);
	}
}

运行结果:

4

从运行结果,使用三目运算符的编写更为简洁,他用一个语句就可以代替一长串的if…else。

if…else if…else语句

如果需要在if…else中判断多个条件时,使用if…else if…else语句,其语法:

if(条件判断1){
 语句主体1;
 }else if(条件判断2){
 语句主体2;
 }
 …//多个else if()语句
 else{语句主体3}

if…else if流程控制图:

程序的架构说明 程序框架结构_System_03


实例4:

package com.qwy;

public class Demo04 {
	public static void main(String[] args) {
		int x = 5;
		if (x == 1) {
			System.out.println("x的值是1");
		} else if (x == 2) {
			System.out.println("x的值是2");
		} else if (x == 5) {
			System.out.println("x的值是5");
		} else {
			System.out.println("x的值不在1,2,5中");
		}
	}
}

运行结果:

x的值是5

switch语句

在众多的条件中找到并执行其中一个符合判断条件的语句时,除了使用if…else不断的判断外,还可以使用更方便的方式,即多重选择——switch语句。其语法格式:

switch(表达式){
 case 选择值1: 语句主体1;
 break;
 case 选择值2: 语句主体2;
 break;
 ……
 case 选择值n:语句主体n;
 break;
 default : 语句主体;
 }

switch流程控制图:

程序的架构说明 程序框架结构_程序的架构说明_04


switch流程控制的执行步骤:

(一) switch语句先计算括号中的表达式,结果是数字、字符、枚举(JDK1.5之后)、字符串(JDK1.7之后)

(二) 根据表达式的值检测是否符合case后面的选择值,如果是case的选择值都不符合,则执行default所包含的语句,执行完毕即离开switch语句。

(三) 如果某个case的选择值符合表达式的结果,就会执行该case所包含的语句,一直到break语句后才离开switch语句。

(四) 若是没有在case语句之后加上break语句,则会一直执行到switch语句的尾部才离开switch语句。

(五) 若是没有定义default执行语句,则什么也不执行,直接退出switch语句。

实例5:

package com.qwy;

public class Demo05 {
	public static void main(String[] args) {
		int x = 3;
		int y = 4;
		char oper = '-';
		switch (oper) {
		case '+': {
			System.out.println("x+y=" + (x + y));
			break;
		}
		case '-': {
			System.out.println("x-y=" + (x - y));
			break;
		}
		case '*': {
			System.out.println("x*y=" + (x * y));
			break;
		}
		case '/': {
			System.out.println("x+y=" + (x / y));
			break;
		}
		default: {
			System.out.println("未知的操作");
			break;
		}
		}
	}
}

运行结果:

x-y=-1

实例6:验证break的作用

package com.qwy;

public class Demo06 {
	public static void main(String[] args) {
		int x=3;
		int y=4;
		char oper='-';
		switch (oper) {
			case '+':{
				System.out.println("x+y="+(x+y));
				//break;
			}
			case '-':{
				System.out.println("x-y="+(x-y));
				//break;
			}
			case '*':{
				System.out.println("x*y="+(x*y));
				//break;
			}
			case '/':{
				System.out.println("x+y="+(x/y));
				//break;
			}
			default:{
				System.out.println("未知的操作");
				//break;
			}		
		}
	}
}

运行结果:

x-y=-1
 x*y=12
 x+y=0

未知的操作

从运行结果可以看出,在程序第一个条件满足之后,由于没有设置相应的break语句,程序从第一个满足条件的位置开始依次向下执行,直到最后一个条件执行完毕才会退出switch。