基本上所有的编程语言都包括三大控制结构,不管是面向过程的编程语言,还是面向对象的编程语言,三大控制结构包括:
顺序结构(代码逐行往下执行,根据编程逻辑决定的)
分支结构(根据条件判断,代码如何跳转执行)
循环结构(当满足条件时循环执行某段代码,直到条件不符合为止)
顺序结构
比较简单,就是按照程序员的意志逐行编写代码,JVM解析器逐行执行代码,例如:
public class Test
{
public static void main(String[] args)
{
int year = 2019;//语句一,定义整型变量year,并赋值2019
float price = 20.5f;//语句二,定义单精度类型变量price,并赋值20.5
System.out.println("year="+year);//语句三、将变量year输出到控制台显示
}
}
分支结构
Java分支结构,语法分为这几种
public class Test
{
public static void main(String[] args)
{
int year = 2019;//语句一,定义整型变量year,并赋值2019
//判断语句一,只处理一个符合条件情况
if(year>2018)
{
System.out.println("今年是大于2018的年份");
}
//判断语句二,处理两个条件情况
if(year==2019)
{
System.out.println("今年是2019年");
}
else
{
System.out.println("今年不是2019年");
}
//判断语句三,处理多个条件情况
if(year>=2019)
{
System.out.println("今年大于2019年");
}
else if (year>=2018)
{
System.out.println("今年大于2018年,但小于2019年");
}
else if (year>2017)
{
System.out.println("今年大于2017年,但小于2018年");
}
else
{
System.out.println("今年小于2017年");
}
//等值判断多路分支
switch(year){
case 2019:
System.out.println("今年是2019年");
break;
case 2018:
System.out.println("今年是2018年");
break;
case 2017:
System.out.println("今年是2017年");
break;
default:
System.out.println("其他");
break;
}
}
}
判断结构条件分析
Java判断结构语法比较简单,条件中的运算符优先级仔细分析,例如下面Java题目:
题目考察了逻辑运算符和运算符的优先级,以及if语句如果没有{}前提下有效控制范围。
第7行中条件x==4为假,b2取反也为真,所以第7行的条件整体为假,第7行的if语句没有添加{}语句块,它的控制范围是其后面的一条语句,也就是它只能控制第8行,第9行是一定执行的;第10行中,if的条件有两个,第一个是赋值语句,它优先级高于逻辑运算符&&,所以优先执行,b2=true,第二个条件是b1,b1在第4行赋值为真,所以第10行条件为真,第11行将被执行。所以答案为:D,输出2 3
如下题,考察条件判断和异或操作
这个题目中分支语句的语法比较简单,关键是条件中异或判断
,针对boolean类型的异或判断结果需要记住,针对数字类型的异或结果需要推算出来:
boolean类型异或结果如下
true^true = false
false^false=false
true^false=true
false^true=true
数字类型异或结果如下(只针对一bit位示例)
1^1 = 0
0^0 =0
1^0 = 1
0^1 = 1
你可以将true等同于1,false等同于0,记忆比较容易。
题目中第6行(tail>distance)=2000>1999=true
(story2)==tail = 1000x2 == tail = true;
true^true = false,所以第6行条件为假,第7行不执行;
第8行中,(distance+1 !=tail) = (1999+1 != 2000) = false
(story2 == distance) = (1000 x 2 == 1999) = false
false^false = false,所以第8行条件为假,第9行不执行
答案为:E
Switch分支结构决策变量类型
switch语句的决策变量类型是经常考察的知识点,switch只能做等值多路分支判断,它的决策变量只支持byte,short,int,Enum,String,其中Enum和String是Java1.5之后支持的。
public class Test
{
public static void main(String[] args)
{
short age = 10;
switch(age){
default:
System.out.println("其他");
//break;
case 1:
System.out.println("Age=1");
break;
case 2:
System.out.println("Age=2");
break;
case 3:
System.out.println("Age=3");
break;
}
TestEnum te = TestEnum.YELLOW;
switch(te){
default:
System.out.println("其他");
//break;
case RED:
System.out.println("RED");
break;
case GREEN:
System.out.println("GREEN");
break;
case BLUE:
System.out.println("BLUE");
break;
}
}
enum TestEnum{
RED,GREEN,BLUE,YELLOW
}
}
上面例程打印结果为:
这里考察了default和break语句,在switch分支结构中,每一个条件匹配完成后,一定添加上break语句,终止程序向下继续执行判断条件。
循环结构
循环结构所有编程语言所必须的逻辑控制,在编程设计中经常使用。在Java中循环结构分为三种,它们的语法如下:
使用for循环打印1-10数字
public class Test
{
public static void main(String[] args)
{
for(int i=0;i<10;i++)
{
System.out.println("i="+i);
}
}
}
使用while循环,打印1-10个数字
public class Test
{
public static void main(String[] args)
{
int i = 1;
while(i<=10)
{
System.out.println("i="+i);
i++;
}
}
}
使用do…while循环,打印1-10个数字
public class Test
{
public static void main(String[] args)
{
int i = 1;
do{
System.out.println("i="+i);
i++;
}while(i<=10);
}
}
循环结构控制语句
continue;//终止本轮循环,剩余循环轮次继续执行
break;//终止全部循环,跳出循环体
public class Test
{
public static void main(String[] args)
{
for(int i=1;i<=3;i++)
{
if(i == 2)
continue;
System.out.println("i="+i);
}
}
}
public class Test
{
public static void main(String[] args)
{
for(int i=1;i<=3;i++)
{
if(i == 2)
break;
System.out.println("i="+i);
}
}
}
嵌套循环
循环体中嵌套循环体,在程序设计中经常使用,比如矩阵运算。它的语法与普通循环完全相同。
如下例程使用for嵌套循环打印9x9口诀表
public class Test
{
public static void main(String[] args)
{
for(int i=1;i<10;i++)
{
for(int j=i;j<10;j++)
{
System.out.print(i+"*"+j+"="+(i*j));
System.out.print("\t");
}
System.out.println();
}
}
}
循环标签
跳出一层循环体可以使用break语句,如果需要跳出多层循环体,必须定义循环标签,比如从内层循环直接跳出外层循环。循环标签是Java面试题目中经常出现的。
参考下面Java认证考试题目
能够分析正确上面两个涉及循环标签的Java考试题目,循环标签也就基本掌握了。