传智黑马javaee基础班Day04(数组)

1、容器的概念

1)、数组

​ 定义一次,可以装多个数据

2)、集合

2、数组的概念

1)、定义一次

2)、保存多个数据

3)、数据类型必须一致

4)、数组一旦创建,长度是固定不变的(容量不变)

5)、通过数组下标进行操作

3、数组的定义格式一(常用)

1)、由我们指定长度

格式

数据类型[] 数组名 = new 数据类型[长度];

=号俩边数据类型必须相同;

长度必须大于0;

4、数组的定义格式二

1)、内容由我们指定

2)、长度由系统计算

格式

数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...}

=号右边的[]不能写长度

5、数组的定义格式三(常用)

1)、内容由我们指定

2)、长度由系统计算

3)、简化格式

格式

数据类型[] 数组名 = {元素1,元素2,元素3...}

省略=号和大括号间的

6、数组的使用

1)、保存多个数据

2)、获取数据

3)、修改数据

使用数组名[索引]

索引是从0开始,到长度-1;

7、数组属性length

数组名.length代表数组长度;

可以用来遍历数组;

可以直接访问数组中最后一个元素 [数组名.length-1]

8、JVM的内存

程序运行时请求的内存;

JVM内存分为5块;

​ 1)、方法栈 Stack:保存变量,运行方法(main)

​ 2)、堆内存 Heap:保存new的东西

​ 3)、方法区 Method Area:保存class,保存的是方法

​ 4)、寄存器:cpu,与开发无关

​ 5)、本地方法栈:与开发无关

区域名称 作用
寄存器 给CPU使用,和我们开发无关。
本地方法栈 JVM在使用操作系统功能的时候使用,和我们开发无关。
方法区 存储可以运行的class文件。
堆内存 存储对象或者数组,new来创建的,都存储在堆内存。
方法栈 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。

9、一个数组的内存

数组就是一个引用类型

引用变量保存的是堆的内存地址

变量其实保存的是数组中第一个索引的地址

直接使用变量名,是使用变量的首地址

[I@75412c2f

[ 代表数组,I 代表int

数组变量保存的是数组的首地址 @在内存中的位置(十六进制)

10、多个数组的内存

多个数组地址不可以相同,否则无法找到所要找的数组

11、俩个数组名指向同一个数组

只需要将一个数组的地址赋值给另一个数组

12、数组越界异常

数组索引超出长度-1;造成程序崩溃

13、数组空指针异常

1)、数组的变量保存的是内存中的地址

2)、有地址才可以修改或者访问数组的元素

数组空指针异常:

​ 1)、数组变量保存的地址被清空(变量名 = null)

在开发中

​ 1)、清空后,就不要进行访问、修改

​ 2)、不清空

14、数组的最值(擂台思想)

1)、擂台先放0号元素为擂主

2)、擂主与其他元素一一vs,最终留下一个擂主

​ 1)、顶一个max变量赋值为0号元素

​ 2)、一个循环,在循环中max与其他元素进行对比,大的覆盖max

​ 3)、最后max找到最大值

15、数组的反转思想

反转:12345->54321

这里写图片描述

数组的反转:

​ 1)、找到对称位置

​ 2)、对称位置的元素进行互换

​ 3)、实现数组反转

public static void main(String[] args) {
        int[] num = {1,2,3,4,5,6};
        int min = 0;
        int max = num.length-1;
        while(min < max){
            //定义中间量,进行互换
            int temp = num[min];
            num[min] = num[max];
            num[max] = temp;
            min++;
            max--;

        }
        for (int i = 0; i < num.length; i++) {
            System.out.print(num[i]);
        }
    }

16、数组作为方法参数

1)、基本类型能做,引用类型也可以

2)、多个数据

3)、类型必须一致

4)、“打包原理”

5)、当相同类型的参数太多时,使用数组最为方便

17、数组作为方法返回值

1)、基本类型可以,引用类型也可以

2)、return返回值;必须和方法的返回值类型一致

3)、return返回值;代表方法的结束,后面不可以再写东西

4)、如果要返回多个数据,且类型相同,继续打包

18、参数为基本类型与引用类型区别

基本类型:

​ 1)、调用处将实参复制一份给形参

​ 2)、方法内改形参

​ 3)、不影响实参

这里写图片描述

引用类型:

​ 1)、调用处将实参数组的 首地址 复制一份给形参

​ 2)、方法内修改形参

​ 3)、实参也会受到影响

​ 不需要使用return就可以得到

这里写图片描述

复习

  • [ ] 理解容器的概念

    可以装多个物品在内,但容量为定值

  • [ ] 掌握数组的第一种定义方式

    格式

    数据类型[] 数组名 = new 数据类型[长度]
  • [ ] 掌握数组的第二种定义方式

    格式

    数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...}

    由系统自动确定数组长度

  • [ ] 掌握数组的第三种定义方式

    格式

    数据类型[] 数组名 ={元素1,元素2,元素3...}

    由系统自动确定数组长度

  • [ ] 使用索引访问数组的元素

    数组名[索引]

    注意索引值为0~数组名.length

  • [ ] 了解数组的内存图解

    JVM内存分为 5个部分

    方法栈 stack:存放变量,和方法

    堆内存 heap:保存new的数据

    方法区 method area:存放class文件

  • [ ] 了解空指针和越界异常

    空指针异常:数组首地址被清空,在使用数组时发生空指针异常

    越界异常:数组索引超出了数组长度-1,在使用时便会产生越界异常

  • [ ] 掌握数组的遍历

    for(int i = 0 ; i < 数组名.length ;i++){
      遍历代码;
    }
  • [ ] 掌握数组最大值的获取

    使用擂台思想,先让第一个元素当擂主,后面的元素一个一个与其对比

  • [ ] 了解数组反转的原理
    定义一个min = 0;定义一个max = 数组名.length-1,定义中间量对变量名[min],变量名[max]进行变换,从而实现反转,min++,max–,但min

猜你喜欢

转载自blog.csdn.net/qq_38353993/article/details/81837592