Java基础(三)

开发工具与关键技术:Eclipse、java
作者:奈何丶一梦
撰写时间:2020年09月08日

21.循环语句

特征:重复的做某件事;

		具有明确的开始和停止标志

循环结构的组成:

  • 初始化语句:用户表示循环开始时的起始状态,简单说就是循环开始的时候什么样。
  • 条件判断语句:用户表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去。
  • 循环体语句:用于表示循环反复执行的内容,简单说就是反复执行的事情。
  • 条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去。

循环结构对应的语法:

  • 初始化语句:这里可以是一条或者多条语句,这些语句可以完成一些初始化操作
  • 条件判断语句:这里使用一个结果值为boolean类型的表达式,这个表达式能决定是否执行循环体。例如:a<3
  • 循环体语句:这里可以是任意语句,这些语句将反复执行
  • 条件控制语句:这里通常是使用一条语句来改变变量的值,从而达到控制循环是否继续向下执行的效果。常见i++,i–这样的操作。
  1. for循环语句

    格式:

    for(初始化语句;条件判断语句;条件控制语句){

    循环体语句;

    }

    执行流程:

    • 执行初始化语句
    • 执行条件判断语句,看其结果是true还是fals
      如果是false,循环结束
      如果是true,继续执行
    • 执行循环体语句
    • 执行条件控制语句
    • 回到第二步继续执行
  2. while循环语句

    基本格式完整格式
    while(条件判断语句){
    循环体语句;
    }
    初始化语句;
    while(条件判断语句){
    循环体语句;
    条件控制语句;
    }

    执行流程:

    • 执行初始化语句

    • 执行条件判断语句,看起结果是true还是false

      如果是false,循环结束

      如果是true,继续执行

    • 执行循环体语句

    • 执行条件控制语句

    • 回到第二部继续执行

  3. do…while 循环语句

    基本格式完整格式
    do{
    循环体语句;
    }while(条件判断语句);
    初始化语句;
    do{
    循环体语句;
    条件控制语句;
    }while(条件判断语句);

    执行流程:

    • 执行初始化语句

    • 执行循环体语句

    • 执行条件控制语句

    • 执行条件判断语句,看起结果是true还是false

      如果是false,循环结束

      如果是true,继续执行

    • 回到第二部继续执行

  4. 三种循环的区别

    • for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
    • do…while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
    • 条件控制语句所控制的自增变量,因为归属于for循环的语法结构中,在for循环结束后,就不能再次访问到了
    • 条件控制语句所控制的自增变量,对于while循环来说不归属于其语法结构中,在while循环结束后,该变量还可以继续使用。

    死循环格式:

    for循环:for(;;){} ;
    while循环:while(true){} ;
    do...while循环:do{}while(true); 。
    
  5. 跳转控制语句

    continue 用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次执行。

    break 用在循环中,基于条件控制,终止循环内容的执行,也就是说结束当前整个循环。

  6. 循环嵌套

    语句结构:

    • 顺序语句:以分号结尾,表示一句话的结束。

    • 分支语句:一对大括号表示if的整体结构,整体描述一个完整的if语句

         	 一对大括号表示switch的整体结构,整体描述一个完整的switch语句
      
    • 循环语句:一对大括号表示for的整体结构,整体描述一个完整的for语句

         	 一对大括号表示while整体结构,整体描述一个完整的while语句
      
         			 do...while以分号结尾,整体描述一个完整的do...while语句
      

    任何语句对外都可以看成是一句话,一句代码。

    分支语句中包含分支语句称为分支嵌套

    循环语句中包含循环语句称为循环嵌套

22.Random

作用:产生一个随机数

使用步骤:

  1. 导包

    import java.util.Random;

    导包的动作必须出现在类定义的上边

  2. 创建对象

    Random r=new Random ();

    上面这个格式里边面,只有r是变量名,可以变,其他都不允许变。

  3. 获取随机数

    int number=r.nextInt(10);//获取数据的范围:[0,10)包括0,不包括10

    上面这个格式里边面,number是变量名,可以变,数字10可以变,其他都不允许变。

23.数组

1.数组的概述

一次性声明大量的用于存储数据的变量

要存储的数据通常都是同类型的数据,例如:考试成绩

数组(array)是一种用于存储多个相同类型数据的存储模型

2.数组定义格式

  • 格式一:数据类型[] 变量名;例如:int[] arr ;定义一个int类型的数组,数组名是arr
  • 格式二:数据类型 变量名[];例如:int arr[] ;定义一个int类型的变量,变量名是arr数组

3.数组初始化之初始化

  • 概述:Java中的数组必须先初始化,然后才能使用;所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值;

  • 方式:动态初始化;静态初始化;

  • 动态初始化:初始化时只指定数组长度,由系统为数组分配初始值;

      	 格式:数据类型[] 变量名 =new 数组类型[数组长度];  
    
      					 例如:int[] arr=new int[3];
    
  • 静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度;

      	 格式:数据类型[] 变量名=new 数据类型[]{数据1,数据2,数据3,......};
    
      					 例如:int[] arr=new int[]{1,2,3};
    
      					 简化格式:数据类型[] 变量名={数据1,数据2,数据3,......};
    
      					 例如:int[] arr={1,2,3};
    

4.数据元素访问

  • 数组变量访问方式,格式:数组名

  • 数组内部保存的数据访问方式,格式:数组名[索引]

  • 索引是数组中数据的编号方式

    作用:索引用于访问数组中的数据使用,数据名[索引]等同于变量名,是一种特殊的变量名

    特征1:索引是从0开始

    特征2:索引是连续的

    特征3:索引逐一增加,每次加1

5.内存分配

  • java中的内存分配:Java程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 数组在初始化时,会为存储空间添加默认值

    整数:默认值0

    浮点数:默认值0.0

    布尔值:默认值false

    字符:默认值是空字符

    引用类型数据:默认值是null

  • 栈内存:存储局部变量,定义在方法中的变量,例如arr使用完毕,立即消失,如下:

在这里插入图片描述

  • 堆内存:储存new出来的内容(实体,对象),

    数组在初始化时,会为存储空间添加默认值

    整数:默认值0

    浮点数:默认值0.0

    布尔值:默认值false

    字符:默认值是空字符

    引用类型数据:默认值是null

    每一个new出来的东西都有一个地址值,使用完毕,会在垃圾回收期空闲时被回收,如下:
    在这里插入图片描述

6.数组操作的两个小问题

  • 索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题

  • 空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常

    null:空值,引用数据类型的默认值,表示不指向任何有效对象

7.数组常见操作

1.获取数组元素数量

格式:数组名.length;例如:arr.length;

2.遍历

通用格式:

int[] arr ={......};

for(int x=0;x<arr.length;x++){

	arr[x];

}
3.获取最值
int[] arr={12,45,98,73,60};
/*思路
1.定义一个变量,用于保存最大值(或最小值)
*/
int max;
//2.取数组中第一个数据作为变量的初始值
int max=arr[0];
//3.与数组剩余的数据逐个对比,每次对比将最大值(或最小值)保存到变量中
for(int x=1;x<arr.length;x++){
    if(arr[x]>max){
        max=arr[x];
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值