1.程序的逻辑结构导读:
本篇是JAVA基础系列的第四篇,主要总结了程序的逻辑结构,也就是顺序结构、分支结构和循环结构。这三种结构在日常代码编写过程中是离不开的。而一个程序猿是否是老手,从逻辑结构的运用上就可以直观的看出来。
程序开发语言中,一般都包含顺序、分支、循环三种结构。这三种结构构成了程序的逻辑框架。(所有编程语言中都适用)
2.顺序结构-
JAVA的基本结构就是顺序结构,除非特别指明,否则就安装顺序一句一句执行。
-
顺序结构是最简单的算法结构
-
语句与语句之间,框与框之间是从上到下的顺序进行,它是由若干个依次执行的处理步骤组成的,是任何一个算法都离不开的一种基本算法结构。
程序在运行中,根据不同的条件执行不同的语句。
分支结构又可以分为两种:
-
if分支结构
-
switch分支结构
if分支结构有三种情况:
-
if单选择结构:满足条件时执行语句,不满足则不执行(1个分支)
-
if..else结构:满足条件执行语句,不满足则执行另外的语句(两个分支)
-
if..else if结构:多个条件,满足不同条件执行不同语句(多个分支)
语法:
if(条件表达式){
语句块;
}
图示:
很多时候需要去判断一个东西是否可行,然后才会去执行,这样的过程在程序中 用if语句来表示。
示例代码:
//判断一个数子是否是偶数
public class Test {
public static void main(String[] args){
int a = 4;
if(a%2==0){
System.out.println(a+"是偶数");
}
System.out.println("结束");
}
}
6.if双选择结构(if..else结构)
语法:
if(条件表达式){
语句块1;
}else{
语句块2;
}
图示:
判断一个条件是否可行,可行就执行语句1的内容,否则执行语句2的内容
示例代码:
//判断一个整数是不是偶数,并输出结果
public class Test {
public static void main(String[] args){
int a = 4;
if(a%2==0){
System.out.println(a+"是偶数");
}else{
System.out.println(a+"不是偶数");
}
System.out.println("结束");
}
}
7.if多选择结构(if...else if结构)
语法:
if(条件表达式1){
语句块1;
}else if(条件表达式2){
语句块2;
}else if(条件表达式3){
语句块3;
}
图示:
条件判断时存在多种备选情况
示例代码:
//判断一个数是正数、负数或是0并输出结果
public class Test {
public static void main(String[] args){
int a = 4;
if(a>0){
System.out.println(a+"是正数");
}else if(a<0){
System.out.println(a+"是负数");
}else if(a==0){
System.out.println(a+"是0");
}
System.out.println("结束");
}
}
8.switch分支
一种特殊的分支结构,switch case 语句判断一个变量与一系列值中某个值是否相等(等值判断),每个值称为一个分支。效率比if多选择结构要高。
语法:
switch(判断整数){
case 1:
语句块1;
break;
case 2:
语句块2;
break;
case 3:
语句块3;
break;
default: //当所有条件都不满足的时候
语句块4;
break;
}
-
注意和break配合使用,执行完相应的语句后则退出switch块,不执行下面的语句
-
如果不加break,则会在满足条件后,将该条件下面的其他条件的语句块一起按顺序输出,直到遇到break或}停止
-
default选项可以不写,也不是必须放在后一个(建议放最后),默认匹配完所有条件后不匹配的情况下才会执行default语句,default可以不写break。
witch语句中的变量类型可以是:
-
byte 、 short 、 int 、 char。
-
从1.7开始,switch支持字符串String类型。
-
同时case标签必须为字符串常量或者字面量。
示例代码:
//轮流值日
public class Test {
public static void main(String[] args){
int num = 1;
switch(num){
case 1:
System.out.println("星期1:小明值日!");
break;
case 2:
System.out.println("星期2:小红值日!");
break;
case 3:
System.out.println("星期3:小旭值日!");
break;
case 4:
System.out.println("星期4:小爱值日!");
break;
case 5:
System.out.println("星期5:小晴值日!");
break;
default:
System.out.println("双休期间不值日!");
break;//default中的break可以不加
}
}
}
public class Test1 {
public static void main(String[] args){
int num = 1;
switch(num){
//1、2、3时都执行星期3:小旭值日!注意前三个case没有break
case 1:
case 2:
case 3:
System.out.println("星期3:小旭值日!");
break;
case 4:
System.out.println("星期4:小爱值日!");
break;
case 5:
System.out.println("星期5:小晴值日!");
break;
default:
System.out.println("双休期间不值日!");
break;//default中的break可以不加
}
}
}
9.循环结构
循环结构指在满足循环条件的情况下,一直执行,直到循环条件不满足为止,循环条件大致可分为三种:
-
while循环
-
do-while循环
-
for循环
循环结构中有循环变量、循环条件、循环体。
10.while循环语法:
循环变量声明;
while(循环条件) {
循环语句;
循环变量改变;
}
当循环条件为真的时候,执行循环语句,否则跳出循环,注:循环条件只能是布尔表达式
示例代码:
//打印1到5的数字
public class Test {
public static void main(String[] args) {
int a = 1;//声明循环变量
while(a<=5) {//判断循环条件
System.out.println(a);
a++;//循环变量改变 一般是++或-- 步长是1
}
}
}
-
只要循环条件为true,循环就会一致执行下去。
-
大多数情况是会让循环停止下来,我们需要一个让表达式失效的方式来结束循环
-
少部分情况需要循环一直执行
-
循环条件一直为true就会造成无限循环(死循环),正常业务编程中应该 尽量避免死循环,会影响程序性能或者造成程序卡死崩溃
语法:
循环变量声明;
do {
循环语句;
循环变量改变;
}while(循环条件)//先执行一次循环语句,再判定循环条件
示例代码:
//求1-10数字之和
public class Test {
public static void main(String[] args) {
int sum = 0;
int num = 1;
do {
sum+=num;
num++;
} while (num <= 10);
}
}
-
对于while语句而言,如果不满足条件,则不能进入循环。但是有时候即使不满足条件,也至少执行一次的程序。
-
do..while循环和while循环相似,不同的是,do..while循环至少会执行一次。
-
while和do..while的区别:
-
while先判断后执行,do..while是先执行后判断
-
do..while总是保证循环会被至少执行一次。
-
语法:
for(表达式1;表达式2;表达式3) {
循环体;
}
执行顺序:先执行表达式1,且只执行一次,也叫做循环的初始条件,然后判断表达式2是否为真,然后再循环体,第四步,执行表达式3;一直循环,直到为假。
表达式1代表循环变量声明
表达式2代表循环条件
表达式3代表循环变量改变
示例代码:
//打印1到10之间的数字
public class Test {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) { //i可以定义到外部,i++也可以放到下面
System.out.println(i);
}
}
}
在Java5中引入了一种主要用于数组或集合的增强型for循环。
示例代码:
int[] nums = {1,2,3,4};
//对数组或者集合可以使用增强for循环
//int num 声明新的局部变量,该变量必须和数组元素的类型匹配,其作用域限定在循环语句块
for(int num:nums){
System.out.println(num);
}
13.跳出循环结束循环
在循环执行过程中如果想结束循环或者跳出循环可以使用break关键字或者continue关键字
-
break
break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强制退出循环,不执行循环中剩余的语句,(break也可以在switch循环中使用)
-
continue
continue语句用在循环语句体中,用于终止某次循环过程,即是跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定



