数组

数组的定义

格式一:数据类型[ ] 变量名

例:int[ ] array

定义了一个int类型的数组,数组名为array

格式二:数据类型 变量名[ ]

例:int array[ ]

定义了一个int类型的变量,变量名为array数组

注:建议采用格式一定义数组

数组动态初始化

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

  • 动态初始化

    初始化时只指定数组长度,由系统为数组分配初始值

    格式:数据类型[ ] 变量名 = new 数据类型[数组长度];

    例:int[ ] array = new int[10];

数组元素访问

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

内存分配

  • Java中的内存分配

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

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

    • 整数:默认值是0
    • 浮点数:默认值是0.0
    • 布尔值:默认值是false
    • 字符:默认值是空字符
    • 引用数据类型:默认值是null

    栈内存:存储的是局部变量,定义方法中的变量等。

    使用完毕,立即消失

    堆内存:存储new出来的实体、对象

    每一个被new出来的实体、对象都有一个地址值,并对其初始化

    使用完毕后,会在垃圾回收器空闲时回收

    :int[ ] array = new int[10];

    int[ ] array存放在栈内存,new int[10]则存放再堆内存中。

静态初始化

  • 静态初始化:

    初始化时指定每个数组元素的初始值,由系统决定数组长度

    格式:数据类型[ ] 变量名 = new 数据类型[ ]{数据1,数据2,数据3……}

    例:int[ ] array = new int[ ] {1,2,3,4,5};

    简化格式:数据类型[ ] 变量名 = {数据1,数据2,数据3……}

    例:int[ ] array = {1,2,3,4,5};

数组操作的两个常见问题

  • 索引越界:

    ArrayIndexOutOfBoundsException

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

  • 空指针异常:

    NullPointerException

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

  • null

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

数组常见操作

  • 获取数组长度

    格式:数组名.length

    例:array.length

  • 数组遍历

    int[] array = {1,2,3,4,5};
    for(int i = 0; i < array.length; i++) {
    	System.out.pringln(array[i]);
    }
    
  • 获取最值

    思路:

    1. 定义一个变量,用于保存最大值(或最小值)

      int max;
      
    2. 取数组中第一个元素最为变量的初始值

      int max = array[0];
      
    3. 与数组中剩余元素的数据逐一比对,每次比对将最大值保存到变量中

      for(int i = 1; i < array.length; i++) {
      	if (array[i] >max) {
      		max = array[i];
          }
      }
      
    4. 循环结束打印输出结果

posted @ 2022-01-14 15:39  我的奇妙之旅  阅读(38)  评论(0)    收藏  举报