3.1 数组概述

  • 数组(array)是一种用于存储多个相同类型的存储模型
  • 要存储的数据通常都是同类数据类型,例如考试成绩。

    3.2 定义格式

  • 数据类型[] 变量名

例:int[] arr
定义了一个int类型的数组,数组名是arr

  • 数据类型 变量名[]

    1. 例:int arr[]

    3.3 初始化方式

    3.3.1 静态初始化

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

  • 格式一:

数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3·······}
例:int[] arr = new int[]{1,2,3}

  • 格式二:

数据类型[] 变量名 = {数据1,数据2,数据3·······}
例:int[] arr = {1,2,3}

3.3.2 动态初始化

  • 初始化时只指定数组长度,由系统为数组分配初始值
  • 格式:数据类型[] 变量名 = new 数据类型[数组长度]

例:int[] arr = new int[3]
int —> 说明数组中元素为int类型
arr —> 数组名字
[] —-> 说明这是一个数组
new -> 为数组申请内存空间

3.4 内存分配

  • java程序在运行时,需要咋内存中分配空间,为了提高运算效率,就对空间进行了不同的区域划分,因为每一片区域都有特定的处理数据方式的和内存管理方式。
  • 栈内存:存储局部变量。就是定义在方法中的变量。arr使用完毕后立即消失。
  • 堆内存:存储new出来的内容(实体,对象),数组咋初始化时,会为存储空间添加默认值。每一个new出来的东西都有一个地址值,使用完毕,会在垃圾回收器空闲时被回收。

整数 —> 0 ;
浮点数 —> 0.0 ;
布尔 —> false ;
字符 —> “” ;
引用数据类型 —> null ;

3.5 Array类

  • Arrays类包含用于操作数组的各种方法

    3.5.1 常用方法

  • public static String toString(int[] a)

返回指定数组内容的字符串表示形式

  • public static void sort(int[] a)

按照数字顺序排列指定的数组

  1. public class Demo {
  2. public static void main(String[] args) {
  3. int[] arr= {5,6,2,8,1,3} ;
  4. System.out.println(Arrays.toString(arr)); //[5, 6, 2, 8, 1, 3]
  5. Arrays.sort(arr) ;
  6. System.out.println(Arrays.toString(arr)); //[1, 2, 3, 5, 6, 8]
  7. }
  8. }

3.6 常见的问题

  • 索引越界:

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

  • 空指针异常:

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

  • null:

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