顺序结构

Java的基本结构就是顺序结构。

除非特殊说明,否则程序就会按顺序一句一句地往下执行。

选择结构

  1. if单项选择结构
java
1
2
3
if(条件){
代码块 //可以是一条语句,也可以是一组语句
}
  1. if双项选择结构
java
1
2
3
4
5
if(条件){
//代码块1
}else{
//代码块2
}
  1. if多项选择结构
java
1
2
3
4
5
6
7
if(条件1){
  //代码块1
}else if(条件2){
  //代码块2
}else{
  //代码块3
}
  1. 嵌套的if结构
java
1
2
3
4
5
6
7
8
9
if(条件1){
  if(条件2){
    //代码块1
  }else{
    //代码块2
  }
}else{
  //代码块3
}
  1. switch多项选择结构
java
1
2
3
4
5
6
7
8
9
10
11
12
switch(表达式){
case 常量1
//代码块1;
break;
case 常量2:
//代码块2;
break;
... ...
default:
//代码块n;
break;
}
  • switch 语句中的变量类型可以是: byte、short、int、 char或 String 。

注意:switch 和if语句的区别

  • switch和if-else相比,由于使用了Binary Tree算法,绝大部分情况下switch会快一点,除非是if-else的第一个条件就为true。
  • 编译器编译switch与编译if…else…不同。不管有多少case,都直接跳转,不需逐个比较查询。
  • 相比于if-else结构,switch的效率绝对是要高很多的,但是switch使用查找表的方式决定了case的条件必须是一个连续的常量。而if-else则可以灵活的多。
  • switch的效率与分支数无关。当只有分支比较少的时候,if效率比switch高(因为switch有跳转表)。分支比较多,那当然是使用switch的效率高。

循环结构

  1. while循环
java
1
2
3
while(布尔表达式){
循环体;
}

当条件满足时执行循环体,直到条件不满足时跳出循环。

  1. do…while循环
java
1
2
3
do{
循环体;
}while(布尔表达式);

先执行一次循环体,再判断条件是否满足。当条件满足时执行循环体,直到条件不满足时跳出循环。

  1. for循环(重点)
java
1
2
3
for(初识条件表达式;布尔表达式;更新表达式){
循环体;
}
  1. 增强型for循环
  • 增强for循环(也称for-each循环)是JDK1.5以后引入的一个高级for循环。
  • 它专门用来遍历数组和集合。
  • 其内部原理是一个Iteration迭代器,在遍历的过程中,不能对集合中的元素进行增删操作。
  • “要被遍历的对象.for”可快速生成增强型for循环。
java
1
2
3
for(循环变量类型 循环变量名称:要被遍历的对象){
循环体;
}

比如:

java
1
2
3
4
5
int[] num = {1,2,3,4,5};
//遍历数组元素
for (int i:num) {
System.out.println(i);
}

注意:Java采用“for”(而不是意义更明确的“foreach”)来引导这种一般被叫做“for-each循环”的循环,并使用“:”(而不是意义更明确的“in”)来分割循环变量名称和要被遍历的对象。

这样做的主要原因,是为了避免以为引入新的关键字,造成兼容性方面的问题。Java语言中,不允许把关键字当做变量名来使用。(虽然使用“foreach”这名字的情况并不多,但是“in”却是一个经常用来表示输入流的名字,例如java.lang.System类里,就有一个名字叫做“in”的static属性,表示“标准输入流”。)