一:顺序结构(顾名思义就是一种自上而下的执行方式)
在Java的执行过程中,其执行过程都是自上而下执行的
public class Show {
public static void main(String[] args) {
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
System.out.println(6);
}
}
如图所示它的输出结果是1 2 3 4 5 6 (这里为节省空间,以空格代表换行)
二:选择结构(根据得出的结果来选择执行的语句)
1、if 语句:
结构:
if(布尔表达式){
执行语句;
}
public class Show {
public static void main(String[] args) {
int i = 1;
if(i == 1){
System.out.println("我是初始化i的值");
}
if(i != 1){
System.out.println("我不是初始化i的值");
}
}
}
如上图,因为i初始化为1,在if( i == 1)时 i == 1 为 true 所以执行 System.out.println("我是初始化i的值"); 而下一个语句的 i != 1 的结果是false,故不执行第二个if语句的输出语句。
2、if(布尔值表达式){
执行语句一;
}else{
执行语句二;
}
public class Show {
public static void main(String[] args) {
int i = 1;
if(i == 1){
System.out.println("我是初始化i的值");
}else{
System.out.println("我不是初始化i的值");
}
}
}
如上图,首先判断 i == 1 是 true 还是 flase
如果为true那么直接执行if中的语句,不会执行else中语句。
如果为flase那么不执行if中的语句,执行else中的语句。
即它是一个二选一的执行方式。
3、if(布尔表达式一){
执行语句一;
}else if(布尔表达式二){
执行语句二;
}else{
执行语句三;
}
public class Show {
public static void main(String[] args) {
int i = 2;
if(i == 1){
System.out.println("i的初始化值为1");
}else if(i == 2){
System.out.println("i的初始化值为2");
}else{
System.out.println("i的初始化值既不是1也不是二");
}
}
}
如上图,设置i的初始值为2
程序会先后判断 i == 1 、i == 2 、当判断那个布尔值为true时就执行相应的语句,如果两个布尔值都为false,那么直接执行else中的语句。
当然在if和else中可以写多个else if(),再按照顺序执行。
注意:有时选择结构的执行语句是可以不加{},当只有一条执行语句时可以不加。但是因为有多条语句时,如果没有加{},默认第一条语句才是执行语句,所以为了避免不必要的错误在编写程序时尽量加上{}。
4、swith(i){
case 1:
执行语句一;
break;
case 2:
执行语句二;
break;
case 3:
执行语句三;
break;
…………
case n:
执行语句n;
break;
}
public class Show {
public static void main(String[] args) {
int i = 3;
switch(i){
case 1:
System.out.println("i的值为1");
break;
case 2:
System.out.println("i的值为2");
break;
case 3:
System.out.println("i的值为3");
break;
case 4:
System.out.println("i的值为4");
break;
case 5:
System.out.println("i的值为5");
break;
case 6:
System.out.println("i的值为6");
break;
default:
System.out.println("暂时没有后续i的值");
break;
}
}
}
如上图:i 的值只能是 byte、short、int、char、Enum(枚举值)、String(字符串),
相应的case后的数值类型对应 i 的类型。
switch中 i 的值确定后就会执行相应的代码。
注意:在每一个case结束后都要有 break 结尾。如果没有以此结尾,那么它将会从 case = i 的语句一直执行到末尾。
三:循环结构(当进入到循环语句时一直执行直到达到跳出循环的条件从而结束循环)
1、for循环:
for(数据类型及其初始化值;判断语句;控制语句){
循环体;
}
public class Show {
public static void main(String[] args) {
int []arr = new int[]{23,45,7,3,5,6,9};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
如上图是对一维数组的遍历,首先 i = 0,判断 i 是否小于数组长度,如果小于,则执行循环体。再对 i 进行自加。自加一次就去判断 i 是否小于数组长度,小于的话,执行循环体,直到 i 自加后等于数组长度。
当然,for可以实现多层嵌套循环,原理和一层for循环是一样的。
public class Show {
public static void main(String[] args) {
int [][]arr = new int[][]{{23, 45},{1,2},{6,5}};
for (int i = 0; i < arr.length; i++) {
for(int j = 0;j < arr[i].length;j++){
System.out.println(arr[i][j]);
}
}
}
}
1-1 拓展知识:加强for循环(主要用于数组和集合)
for(声明语句 :表达式){
执行语句;
}
public class Show {
public static void main(String[] args) {
int []arr = new int[]{2,4,1,5,6,3};
for(int o: arr){
System.out.println(o);
}
}
}
2、while(判断语句){
执行语句;
控制语句;
}
public class Show {
public static void main(String[] args) {
int i = 0;
int []arr = new int[]{2,4,1,5,6,3};
while (i < arr.length){
System.out.println(arr[i]);
i++;
}
}
}
如上图,其实while循环和for循环非常相似。先判断while中的语句,为true的话,就执行花括号中的语句,而 i++ 为跳出while循环提供了条件(即 i 的自加会使i == arr.length)。
3、do{执行语句;}while(条件判断语句);
public class Show {
public static void main(String[] args) {
int i = 0;
int []arr = new int[]{2,4,1,5,6,3};
do{
System.out.println(arr[i]);
i++;
}while(i < arr.length);
}
}
这里与while过于相似,不做过多解释。
这里有两个关键字
break:打破当前循环,执行循环体后的语句。
continue:打破当前循环,执行下一次循环。
如有错误,欢迎指教。