流程控制语句与数组的定义

Java基础语法

流程控制语句

if…else if…else if…else

多分支语法格式:

 if(条件判断){
 
 } else if(条件判断){
 
 } else if(条件判断){
 
 }  else {
     
 }

适合与多条件的判断,但是 if else过多,会导致程序的阅读性下降

优势 : 高效的优势,只要有一个if的条件判断结果是true,整体的语句结构就结束了

public static void main(String[] args) {
    int i = 99;
    //if else if的多分支
    if(i < 100) {
        System.out.println("第一个if的条件是true");
    }else if(i > 100){
        System.out.println("第二个if的条件是true");
    }else if (i == 100) {
        System.out.println("第三个if的条件是true");
    }else {
        System.out.println("所有的条件都是false");
    }
}

多分支语句的练习

需求 : 请你输入你的考试成绩,对成绩进行等级划分

90-100 : 优

80-89 : 良

70-79 : 中

60-69 : 差

<60 : 不及格

switch选择语句

程序也是进行选择的, switch语句中包含的关键字比较多

switch case default break

switch语句的格式 :

 switch (变量){
     case 常量1 :
         要执行的语句1;
         break;
     case 常量2 :
         要执行的语句2;
         break;
     case 常量3 :
         要执行的语句3;
         break;
     default:
         要执行的语句;
         break;
 }
  • 语句流程详细解释

    • switch中的变量,和case后面的常量,进行比较 (是否相同)
    • 如果和 常量1相等,执行 : 语句1, 执行break,整体switch结束
    • 如果和 常量2相等,执行 : 语句2, 执行break,整体switch结束
    • switch中的变量,和任何一个case后面的常量都不相等,执行default后面的语句, 执行break,整体switch结束
  • switch语句中的变量的数据类型有限制

    • byte short int char (JDK1.0-1.4)
    • 添加数据类型 enum 枚举 (JDK1.5)
    • 添加数据类型字符串 (JDK1.7)
    • 使用的是JDK1.8 (支持的类型 byte short int char 枚举 字符串)
    public static void main(String[] args) {
    		int i = 5;
    		switch (i) {
    		case 1:
    			System.out.println("case1");
    			break;
    			
    		case 2:
    			System.out.println("case2");
    			break;
    			
    		case 3:
    			System.out.println("case3");
    			break;
    
    		default:
    			System.out.println("所有case都不相等");
    			break;
    		}
    	}
    

选择语句的练习

需求 : 根据输入的月份,判断是哪个季节

春季 : 3,4,5 夏季 : 6,7,8 秋季 : 9 ,10 ,11 冬季 12 , 1, 2

采用if和switch分别完成

		if(month < 1 || month > 12) {
			System.out.println("输入的月份不存在");
		}
		//季节判断  春季 : 3,4,5
		else if(month >=3  && month <=5) {
			System.out.println("春季");
		}
		//季节判断  夏季 : 6,7,8 
		else if (month >= 6 && month <=8 ) {
			System.out.println("夏季");
		}
		//季节判断  秋季 : 9 ,10 ,11
		else if (month >= 9 && month <= 11) {
			System.out.println("秋季");
		}
		//季节判断  冬季 12 , 1, 2
		else {
			System.out.println("冬季");
		}

case穿透特性

在switch的语句中,不写break,出现case的穿透性

 switch (变量){
     case 常量1 :
         要执行的语句1;
        // break;
     case 常量2 :
         要执行的语句2;
        // break;
     case 常量3 :
         要执行的语句3;
        // break;
     default:
         要执行的语句;
       //  break;
 }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-owjyNRLN-1594205389847)(images/case穿透.jpg)]

case穿透特性实现季节判断

public static void main(String[] args) {
    //键盘输入,接收月份
    Scanner sc = new Scanner(System.in);
    int month = sc.nextInt(); // 4
    //利用case穿透特性
    switch(month) {
        case 3:
        case 4:
        case 5:
            System.out.println("春季");
            break;
        case 6:
        case 7:
        case 8:
            System.out.println("夏季");
            break;
        case 9:
        case 10:
        case 11:
            System.out.println("秋季");
            break;

        case 1:
        case 2:
        case 12:   
            System.out.println("冬季");
            break;
            
        default:
            System.out.println("月份不存在");
    }
}

循环语句

循环 : 程序中的语句(代码)多次的反复的执行

使用的频率非常的高

输出10次 “HelloWorld”

System.out.println("HelloWorld"); 语句复制10,不行

while循环

语法格式 :

while(布尔类型的表达式){
  //while的循环体
}

  • while循环的执行流程
    1. 执行布尔表达式,如果是true
    2. 执行循环体中的程序
    3. 再次执行布尔表达式,如果还是true
    4. 再次执行循环体中的程序
    5. 再次执行布尔表达式,如果是false
    6. while循环就结束了
  • 结论: 只要while中的布尔表达式结果是true,就执行循环体,直到布尔类型为false,循环结束
public static void main(String[] args) {
		int i = 1;
		while(i < 10) {
			System.out.println("while的循环体 "+i);
			//变量i 发生变化 ++
			i++;
		}
		//打印10次HelloWorld
		//j变化到10的时候,循环结束
		int j = 0;
		while(j < 10) {
			System.out.println("HelloWorld");
			j++;
		}
	}

while循环练习

  • 输出10以内的所有偶数

    public static void main(String[] args) {
        //定义变量,默认值是0, 变化到10
        int i = 0; 
        while(i <= 10) {
            //判断是不是偶数
            if(i % 2 == 0) {
                System.out.println(i + "是偶数");
            }
            i++;
        }
    }
    
    
    public static void main(String[] args) {
    	//定义变量,默认值是0, 变化到10
    	int i = 0;
    	//变量i在循环的时候,每次+2行不?  不需要判断了
    	while(i <= 10) {
    		System.out.println(i + "是偶数");
    		//i=i+2;
    		i+=2;
    	}
    }
    
    

for循环

语法格式 :

for (初始化变量 ; 条件 ; 增量){
    //for的循环主体
}

  • 循环的三个部分解释

    • 初始化变量 : 定义变量 数据类型 变量名 = 值
    • 条件 : 条件必须是布尔类型结果 true 或者 false
    • 增量 : 循环变量的变化
    • 条件 : 控制循环是否执行,条件是true,循环,条件是false结束循环
    public static void main(String[] args) {
        for(int i = 0 ; i < 5 ; i++) {
            System.out.println("这里是for循环的循环体  "+i);
        }
    }
    
    
  • for循环的执行流程

    1. 执行初始化的变量. (只会执行一次)
    2. 执行条件的判断 (判断条件是false,循环直接结束), 判断条件是true
    3. 进入到for的循环体执行
    4. 执行变量的自增
    5. 执行条件的判断 (判断条件是false,循环直接结束), 判断条件是true
    6. 执行循环体
    7. 执行变量的自增
    8. 执行条件的判断 (判断条件是false,循环直接结束)

for循环实现练习

  • for循环实现0-10之间的偶数

    public static void main(String[] args) {
        //利用for循环中的变量
        for(int i = 0 ; i <= 10 ;i+=2) {
        	System.out.println(i +"是偶数");
        }
    }
    
    
  • for实现求和计算 1 + 2 + 3 +…+ 100 = 5050 (高斯算法)

    public static void main(String[] args) {
        //定义变量int类型,保存求和后的结果
        int sum = 0;
        //进行1-100之间的循环
        for(int i = 1 ; i <= 100 ;i++) {
            //求和计算, sum变量保存求和后的结果
            sum = sum + i; 
        }
        System.out.println(sum);
    }
    
    

do…while

格式 :

 do{
 	//循环主体
 }while(条件判断);

  • 循环执行流程
    • 判断while中的循环条件
    • 如果条件是true,执行循环体
    • 如果条件是false,结束循环
  • 注意 : do … while 无条件先执行一次循环体

break和continue

  • break : 终止 作用就是终止循环, 在循环中遇到break,循环就结束,只能在循环中或者switch出现

    public static void main(String[] args) {
        int i = 0;
        while(true) {
        i++;
        //判断变量的值,如果=10,执行break终止循环
        if(i == 10) {
        	break;
        	}
        }
    
        for( ; ;) {
        	break;
        }
    }
    
    
  • continue : 终止本次循环,开始下一次循环

    public static void main(String[] args) {
        for(int i = 0 ; i <=10 ;i++) {
        //判断,如果变量是偶数,执行下一次循环
        	if(i % 2 == 0) {
       	 		continue;
       		 }
       		 System.out.println(i);
        }
    }
    
    

嵌套循环

引出 : 上体育课迟到20分钟,处罚

操场跑圈 : 跑5圈, 再跑5圈, 再跑5圈, 再跑5圈

跑了4组,每组跑了5圈, 一共跑了多少圈 20 组数*每组圈数

理解 : 第一组5圈… 我的第一次循环 5圈 我的第二次循环 5圈 (围绕操场循环了5次)

一次大的循环,包含5次小的循环 : 程序 嵌套循环, 总的循环次数 = 大循环次数*小循环次数

嵌套for

两个for循环在一起,形成嵌套形式, 双循环

一个for是另一个for的循环体

格式 :

 for(初始化变量 ; 条件 ; 增量){  //外循环
     for(初始化变量 ; 条件 ; 增量){ //内循环
     }
 }
//内循环是外键循环的循环体

public static void main(String[] args) {
    //外循环,循环5次
    for(int i = 0 ; i < 5 ;i++) {
        //内循环,循环3次
        for(int j = 0; j < 3 ; j++) {
            System.out.println("内循环");
        }
        System.out.println("外循环");
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OK2mGEUy-1594205389853)(images/forfor循环的执行流程.JPG)]

嵌套for循环练习

  • 外循环一次,内循环多次

    • 结论 : 外循环控制行数 ,内循环控制每行的个数
    public static void main(String[] args) {
    		//外循环5次
    		for(int i = 0 ; i < 5 ;i++) {
    			//内循环5次
    			for(int j = 0 ; j < 5 ;j++) {
    				//内循环输出星号
    				System.out.print("*");
    			}
    			//外循环输出空的换行
    			System.out.println();
    		}
    	}
    
    
  • 尖向下的直角三角形

    public static void main(String[] args) {
    		// 有几个行 5行 外循环5次
    		for(int i = 0 ; i < 5; i++) {
    			/*
    			 *  每个行有几个星号 第一行是5个,逐行递减
    			 *  变量j 0 1 2 3 4 
    			 *  
    			 *  外循环第一行的时候,内循环5个
    			 *  外循环第二行的时候,内循环4个
    			 *  j变化 : 每次执行内循环的时候,变量j的初始化都+1
    			 *  
    			 *  外循环的i 变量  0 1 2 3 4
    			 */
    			for(int j = i ; j < 5 ;j++) {
    				System.out.print("*");
    			}
    			System.out.println();
    		}
    	}
    
    
  • 尖向上的直角三角形

    public static void main(String[] args) {
    		// 有几个行 5行 外循环5次
    		for(int i = 0 ; i < 5 ;i++) {
    			/*
    			 * 内循环 : 循环次数不固定  每行递增效果
    			 * 第一行 : 内循环1次
    			 * 第二行 : 内循环2次
    			 * 内循环的变量 j
    			 * 
    			 *   第一行 : 内循环1次  j<1
    			 *   第二行 : 内循环1次  j<2
    			 *   内 : 变量j每次都从0开始,但是条件在改变
    			 */
    			for(int j = 0 ; j <= i ;j++) {
    				System.out.print("*");
    			}
    			System.out.println();
    		}
    	}
    
    
  • 乘法表

    public static void main(String[] args) {
    		//i  1-9
    		for(int i = 1 ; i <= 9 ;i++) {
    			// 第一次循环1 ,第二次循环 1 2  
    			for(int j = 1; j<=i ;j++) {
    				/*
    				 *  替换为乘法计算即可
    				 */
    				System.out.print(j+"*"+i+"="+j*i+"\t");
    			}
    			System.out.println();
    		}
    	}
    
    

数组(Array)

概述 : 数组是一种容器,容器就是存储数据的,数组可以同时存储多个数据的容器.

比如 : 班级里面有100个同学,100个名字,定义变量的方式 ,需要定义出100个变量,存储名字

更好的解决办法 : 100个名字全部存储在一个容器中,方便管理这些个数据

凡是数据多了,存储在数组容器中.

Java数组 : 只能存储同一个数据类型的数据

数组的定义

  • 定义数组的格式1:

    • 数据类型,定义的数组容器存储的数据的类型 int 这个数组就只能存储整数

    • [] 就表示数组

    • 数组的名字, 理解为就是一个变量的名字 (标识符,驼峰命名)

    • new 创建数组容器的关键字

    • 数据类型,定义的数组容器存储的数据的类型 int 这个数组就只能存储整数

    • 整数值, 表示的是数组的长度, 就是容量,也就数组能存储多少个数据

       数据类型[] 数组的名字 = new 数据类型[整数值];
       int[] arr = new int[3];
      
      
  • JVM内存划分

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-19UhUvIy-1594205389856)(images/JVM内存划分.jpg)]

数组内存

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5J6IU8AH-1594205389859)(images/数组内存图.JPG)]

  • 栈内存和堆内存区别
    • 栈内存,使用完毕就释放,效率高
    • 堆内存,等待JVM垃圾回收,效率低
    • 栈内存中的变量,必须赋值,否则不能使用
    • 堆内存的数据,必须有默认值
    • 栈内存,方法运行的时候计算
    • 堆内存,负责存储对象和数组

数组的访问

操作数组中的数据了, 存储到数组中的任何数据,都称为数组的元素(Element)

数组元素的访问,依靠数组的索引 (index) (下标)

  • 数组的索引
    • 每个数组都有自己的索引
    • 索引是从0开始的
    • 索引是数组的特性,天生就有, 本质上就是数组中每个元素的编号
  • 数组访问的语法:
    • 数组名[索引]
public static void main(String[] args) {
		//定义存储int类型的数组,数组的长度是3
		int[] arr = new int[3];
		
		//输出,数组0索引上的元素
		System.out.println(arr[0]);
		
		//输出,数组1索引上的元素
		System.out.println(arr[1]);
				
		//输出,数组2索引上的元素
		System.out.println(arr[2]);
		
		//数组0索引上的元素,赋值
		arr[0] = 5;
		System.out.println(arr[0]);
	}

数组的长度

Java中的数组是定长的, 数组的长度,也就是存储元素的个数,一旦创建完毕,不可改变

定长也是数组的一个弊端

对于数组 : JVM赋予数组一个属性 (属性 : 属于这个事务的特性)

属性的名字 length, 表示数组的长度 (int类型)

使用方法 : 数组名.length

 public static void main(String[] args) {
		//定义数组,存储的类型是int类型,长度5
		 int[] arr = new int[5];
		 //使用数组的长度属性 length
		 //int l = arr.length;
		 System.out.println(arr.length);		 
	}

数组长度length属性, 数组的最大索引,是长度-1 arr.length-1

数组的定义

  • 定义格式2 : 定义数组的同时直接存储元素

    • {}可以直接写入数组的元素值
    数据类型[] 数组的名字 = new 数据类型[]{元素1,元素2,元素3};
    
    
    public static void main(String[] args) {
        int[] arr = new int[] {1,2,3,4,5,6,7};
        System.out.println(arr);
    
        //输出5, 在4索引的位置
        System.out.println(arr[4]);
    
        //数组的长度length属性
        System.out.println(arr.length);
    }
    
    
  • 定义格式3:

    数据类型[] 数组的名字 = {元素1,元素2,元素3};
    
    
    	public static void main(String[] args) {
    		int[] arr = {1,2,3,4,5,6,7,8,9,0};
    		System.out.println(arr[7]);
    		System.out.println(arr.length);
    	}
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值