顺序结构、选择结构、循环结构

顺序结构

  • java最基本的结构,也是最简单的算法结构。按顺序一句一句执行。
  • 任何算法都离不开顺序结构。

选择结构

一、if

  • if语句
    一个 if 语句包含一个布尔表达式和一条或多条语句。
//语法格式
if(布尔表达式){
   //if语句块
}
//如果布尔表达式的值为 true,则执行 if 块。
//如果布尔表达式的值为 false,略过 if 语句块, if 语句结束。
  • if…else语句
    if 语句后跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句会被执行。
//语法格式
if(布尔表达式){
   //if语句块	   
}else{
   //else语句块
}
  • if…else if…else 语句
    if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。
//语法格式
if(布尔表达式 1){	   
   //if语句块
}else if(布尔表达式 2){
   //if语句块
}else if(布尔表达式 3){
   //if语句块
}else {
   //else语句块
}
  • 嵌套的 if…else 语句
    使用嵌套的 if…else 语句是合法的。也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句。
if(布尔表达式 1){
   如果布尔表达式 1的值为true执行代码
   if(布尔表达式 2){
      如果布尔表达式 2的值为true执行代码
   }
}
  • if-else 的简化写法 如果if或者else的语句块只有一个语句,可以省略大括号。 当else语句中存在if语句时,可以简写成 else if (条件) 的形式
if (boolean值)	
  if 语句块	
else	
  else 语句块

例如:

if (2>1)	
	  System.out.println(2);
	else	
	  System.out.println(1);
  • 使用时要注意下面几点:
1、if 语句最多只有 1 个 else 语句,最少可以没有,else 语句在所有的 else if 语句之后。
 2、if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
 3、一个 else if 语句检测为 true,其他的 else if 和 else 语句都将跳过执行。

二、switch case

  • 说明:判断一个变量与一系列值中某个值是否相等,如果相等就去执行其对应的语句,每个值称为一个分支。
//语法格式:
switch(变量){
    case 值1 :
       //语句
       break; //跳出 switch 语句,终止 switch 语句,可选
    case 值2 :
       //语句
       break; //跳出 switch 语句,终止 switch 语句,可选
    case 值n :    
       //语句
       break; //跳出 switch 语句,终止 switch 语句,可选
    default : //可选
       //语句
}

注意:

1、switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了。
2、switch 语句可以拥有多个 case 语句。case 语句中值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
3、当变量的值与某个 case 语句的值相等时,那么该 case 语句开始执行,直到 break 出现才会停止执行并终止 switch 语句。
4、case 语句不必须包含 break 。如果没有 break 出现,当变量与 case 值匹配成功后,从当前 case 开始, 程序会继续执行后续所有 case 语句,直到出现含有 break 的语句或整个switch 语句执行完毕。
4、switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。 在没有 case 语句的值和变量值相等的时候不执行任何 case 语句,直接执行 default 分支,default 分支不需要使用 break 。

循环结构

for循环,增强型for循环,while 循环, do…while循环

break 关键字

break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。

break 跳出当前循环,并且继续执后下面的语句。

continue 关键字

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环。

一、for循环

//语法
for(循环变量初始化; 循环条件; 循环变量改变) {
    //循环体
}

说明:

1、for循环执行的次数在循环前就已确定。
2、循环变量初始化,可以声明一种类型,但可初始化一个或多个循环变量,也可以是空语句。
3、循环条件如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
4、每循环一次,循环变量更新一次。
5、for循环是支持迭代的一种通用结构,最有效、最灵活的循环结构。
6、循环变量初始化、循环条件、循环条件的改变,这三个都可以为空。如下面代码:三个都为空时,是死循环。在idea中,如果代码中有死循环,那么死循环之后的代码都会报错Unreachable Statment,编译不通过。
for (;;){
            //循环体
        }

for循环快速写法:number.for + TAB
例如 100.for + TAB 。可以直接写出下面这种for循环的一个框架:

public class Test {
    public static void main(String[] args) {
    	//100.for + TAB
        for (int i = 0; i < 100; i++) {
            
        }
    }
}

二、增强型for循环(for each)
语法:

for(声明对象 : 数组对象)
{
   //代码句子
}

声明对象:
声明新的局部变量,该变量的类型必须大于或等于数组元素的类型。(我一般直接声明Object o)。

数组对象:
要访问的数组的对象,或者是返回值为数组的方法。

增强型for循环主要用于数组

三、while循环
语法:

while( 布尔表达式 ) {
  //循环内容
}

四、do…while 循环
语法:

do {
       //代码语句
}while(布尔表达式);
do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。

五、总结

一般的题目涉及到的都是嵌套循环(例如冒泡排序和打印图形),即外层循环包含内层循环,一般来说外层控制行,内层控制列。
简单理解起来就是:外层循环的循环次数就是你题目要求的行,循环几次就有几行。内层的循环次数就是你题目要求的列,循环几次就有几列。外层循环中的每个值都对应这内层循环的一个完整循环(外层走一个值,内层走一圈)。值得注意的是,外层循环变量和内层循环变量一定有一个关联关系。

例如打印三角形:

public static void main(String[] args) {
        //打印一个10行的三角形
        //思路:半个三角形等于一个长方形的一半,我们要做的是打印三个三角形(竖着来分)
        for (int i = 1; i <= 10; i++) {
            //1、打印第一个三角形
            for (int j= 10;j >= i; j--){
                System.out.print("#");
            }

            //2、打印第二个三角形
            for (int j= 1;j <= i; j++){
                System.out.print("*");
            }

            //3、打印第三个三角形
            for (int j= 1;j < i; j++){
                System.out.print("1");
            }

            //这个换行是精髓,你需要从头到尾做一遍才知道这个换行的重要性。总体来看,外层循环取第一个值也就是第一行时,内层的三个循环分别循环了一圈,然后换行。外层循环到第二个值同样。
            System.out.println();

            //总结:上面三个三角形打印完成后,只需要将 “#”换成 “ ”,将“1”换成“*”就行了。

        }
    }

IDEA中整理代码的快捷键:CTRL+ALT+L
debug 小蟑螂很好用