Java SE (四)控制结构

110 阅读4分钟

顺序控制

程序从上到下逐行地执行,中间没有任何判断和跳转

分支控制

单分支

if(条件表达式){
            执行代码块;
            }


双分支

if(条件表达式){
            执行代码块;
            }
           else{
            执行代码块;
           }
           

多分支

image.png

swith 分支结构

image.png

细节

image.png 除非遇到break;

case 后边也可以使用常量表达式

switch 和 if 的比较

  1. 如果判断的具体数值不多,而且符合byte、short、int、char,enum,String 这6种类型。虽然两个语句都可以使用,建议使用swtich语句。
  2. 其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广

循环控制

for 循环控制

image.png

image.png 执行顺序是

先执行循环变量初始化,在执行循环条件,在执行循环操作, 在执行循环变量迭代

细节

  1. 循环条件是返回一个布尔值的表达式

  2. fo(:循环判断条件:)中的初始化和变量迭代可以写到其它地方,但是两边的分 号不能省略。

  3. 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开, 循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。

while 循环控制

image.png

do while 循环控制

image.png

do while 循环是先执行在判断,因此它至少执行一次

do while(表达式);分号一定不要漏掉

多重循环控制

不要超过3层循环嵌套

经典金字塔


public class Stars { 

	//编写一个main方法
	public static void main(String[] args) {

		/*
		
			    *
			  *  *
			 *    *
			********

		思路分析
		化繁为简
		1. 先打印一个矩形
		*****
		*****
		*****
		*****
		*****
		2. 打印半个金字塔

		*    	//第1层 有 1个*
		**   	//第2层 有 2个*
		***		//第3层 有 3个*
		****    //第4层 有 4个*
		*****   //第5层 有 5个*
		
		3. 打印整个金字塔
          *       //第1层 有 1个*   2 * 1 -1   有4=(总层数-1)个空格
	   ***      //第2层 有 3个*   2 * 2 -1   有3=(总层数-2)个空格
	  *****     //第3层 有 5个*   2 * 3 -1   有2=(总层数-3)个空格
	 *******    //第4层 有 7个*   2 * 4 -1   有1=(总层数-4)个空格
	*********   //第5层 有 9个*   2 * 5 -1   有0=(总层数-5)个空格

		4. 打印空心的金字塔 [最难的]
	    *       //第1层 有 1个*   当前行的第一个位置是*,最后一个位置也是*
	   * *      //第2层 有 2个*   当前行的第一个位置是*,最后一个位置也是*
	  *   *     //第3层 有 2个*   当前行的第一个位置是*,最后一个位置也是*
	 *     *    //第4层 有 2个*   当前行的第一个位置是*,最后一个位置也是*
	*********   //第5层 有 9个*   全部输出*
	
		先死后活
		5 层数做成变量 int totalLevel = 5;
	
	//小伙伴 技术到位,就可以很快的把代码写出
		 */
		int totalLevel = 20; //层数
		for(int i = 1; i <= totalLevel; i++) { //i 表示层数

			//在输出*之前,还有输出 对应空格 = 总层数-当前层
			for(int k = 1; k <= totalLevel - i; k++ ) {
				System.out.print(" ");
			}

			//控制打印每层的*个数
			for(int j = 1;j <= 2 * i - 1;j++) {
				//当前行的第一个位置是*,最后一个位置也是*, 最后一层全部 *
				if(j == 1 || j == 2 * i - 1 || i == totalLevel) {
					System.out.print("*");
				} else { //其他情况输出空格
					System.out.print(" ");
				}
			}
			//每打印完一层的*后,就换行 println本身会换行
			System.out.println("");
		}
	}
}

跳转控制语句-break

基本介绍:

break语句用于终止某个语句块的执行,一般使用 在switch或者循环for,while,dowhil中

image.png

image.png

image.png

image.png

老韩解读

  1. break语句可以指定退出哪层
  1. label1是标签,名字由程序员指定。
  2. break后指定到哪个label就退出到哪里
  3. 在实际的开发中,尽量不要使用标签.
  4. 如果没有指定break,默认退出最近的循环体

判断字符串相等的方法

"林黛玉".equals("name")

跳转控制语句-continue

  1. continue语句用于结束本次循环,继续执行下一次循环
  2. continue语句出现在多层嵌套的循环语句体中时,可以 通过标签指明要跳过的是哪一层循环,这个和前面的标 签的使用的规则一样。

跳转控制 return

return使用在方法,表示跳出所在的方法,在讲解方法的时候,会详细的介绍, 这里我们简单的提一下。注意:如果return写在main方法,退出程序