Java 数组

一、数组的概述

1:数组(Array)

多个相同类型的数据按照一定的顺序排列的集合。并使用一个名字来命名,以及使用编号的方式对这些数据进行统一的管理。

2、数组的相关概念:

  • 数组名:声明数组时所起的名称。
  • 元素:指数组的中数据。
  • 角标、下标、索引(三种名称都可以):元素在数组中的位置从0开始到数组长度-1结束。

3、数组的特点

  • 数组是有序的
  • 数组属于引用数据类型变量。数组的元素既可以是引用数据类型变量又可以是基本数据类型变量
  • 创建数组的时候会在内存中开辟一段连续的内存空间
  • 数组的长度一旦确定不能更改

4、数组的分类

按照维度分:① 一维数组 ② 二维数组
按照数据元素类型分:① 基本数据类型元素的数组 ② 引用数据类型元素的数组

二:一维数组

2.1一维数组的声明

int[] arr;

2.2一维数组的初始化

  • 静态初始化:数组的初始化和数组的元素赋值操作同时进行,直接给元素赋值就是就是即规定了数组元素的内容也规定了数组的长度。
int[] arr = new int[]{1,2,3,4,5};//普通写法
int[] arr = {1,2,3,4,5};//推断类型写法
  • 动态初始化:数组的初始化和数组元素赋值操作分开进行,虽然没有确定元素的内容但是确定了数组的长度。
int[] arr = new int[5];

总结:数组一旦被初始化,那么就一定要确定其长度。


2.3调用数组指定位置的元素

  • 通过角标的方式调用:数组的角标(索引)从0开始到数组的长度-1截止。
String[] names = new String[]{"王一","王二","王三","王四"};
System.out.println(names[0]);//王一
names[0].charAt(0);//王

2.4获取数组的长度

//函数:length
System.out.println(names.length);//4

2.5数组元素的默认值

  • 整型(byte、short、int、long):0
  • 字符型(char):0或"\u0000"
  • 浮点型(float、double):0.0
  • boolean:false
  • 引用数据类型(数组、集合、接口、String、… …):null

三:二维数组

二维数组:就是把一个一维数组中的元素设置成一个一维数组。因为数组中的元素既可以是基本数据类型也可以是引用数据类型。


3.1二维数组的声明

int[][] arr;

3.2二维数组的初始化

  • 静态初始化:数组的初始化与数组元素的赋值操作同时进行
int[][] arr = new int[][]{{1,2,3},{4,5,6},{7,8,9}};//标准写法
int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};//推断类型写法
  • 动态初始化:数组的初始化与数组元素的赋值操作分开进行
//方式一
int[][] arr = new int[3][];
//方式二
int[][] arr = new int[3][3];

3.3调用数组指定位置的元素

System.out.println(arr[0][0]);//1
System.out.println(arr[2][0]);//4

3.4获取数组的长度

//函数:length
System.out.println(arr.length);//4

3.5数组元素的默认值

/*
    规定:二维数组分为外层数据元素和内层数组元素
    int[][] arr = new int[5][6];
    外层数据元素:arr[1]、arr[2]
    内层数据元素:arr[1][1]、arr[2][2]
    
    针对于初始化方式一:int[][] arr = new int[3][];
    外层元素初始化值:null。因为没赋值
    内层元素初始化值:不能调用。java.lang.NullPointerException
    
    针对于初始化方式二:int[][] arr = new int[3][3];
    外层元素初始化值:内层元素的地址值
    内层元素初始化值:与一维数组一致
*/