数组是存储多个变量(元素)的东西(容器),这多个变量的数据类型要一致
数组概念
数组是存储同一种数据类型多个元素的容器。
数组既可以存储基本数据类型,也可以存储引用数据类型。
数组的定义格式
格式1:数据类型[] 数组名;
格式2:数据类型 数组名[];
注意:这两种定义做完了,数组中是没有元素值的.
举例:
int[] arr; 定义一个int类型的数组,数组名是arr(推荐)
int arr[];定义了一个int类型的变量,变量名是arr数组
数组初始化概述:
Java中的数组必须先初始化,然后才能使用。
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
数组的初始化方式
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
动态初始化
数据类型[] 数组名 = new 数据类型[数组长度];/*左边: * int:说明数组中的元素类型是int类型 * []:说明这是个数组 * arr:数组名称 *右边: * new:为数组申请内存分配,开辟空间 * int:说明数组中的元素类型是int类型 * []:说明这是一个数组 * 3:数组的长度,其实就是数组中元素的个数
访问数组:
数组名[索引] //索引从零开始
静态初始化
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,......}; 数据类型[] 数组名 = {元素1,元素2,元素3,......}; 例如: int[] arr = new int[]{1,2,3}; int[] arr = {1,2,3};
Java中的内存分配
Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
栈 (存储局部变量) 堆 (存储new出来的东西) 方法区 本地方法区 (和系统相关) 寄存器 (给CPU使用)
栈:存储的是局部变量.局部变量就是定义在方法中的变量.使用完毕,立即回收.
堆:存储的是new出来的东西,实体,对象.
A.每一个对象都有地址值
B.每一个对象的数据都有默认值
byte,short,int,long 0
float,double 0.0
char '\u0000'
boolean flase
引用类型 null
C.使用完毕后,会在垃圾回收器空闲的时候被回收
int[] arr = new int[3]; int[] arr2 = arr; arr2[0]=100; arr2[1]=200; arr2[2]=300;
二维数组
定义格式
数据类型[][] 数组名; 数据类型 数组名[][]; 不推荐 数据类型[] 数组名[]; 不推荐
初始化方式
数据类型[][] 变量名 = new 数据类型[m][n]; 数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}}; 简化版格式:数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
二维数组配合索引可以获取到每一个一维数组。
每一个一维数组配合索引名可以获取到数组中的元素。
假如二维数组名:arr 获取一维数组:arr[索引] 获取二维素组中的元素: arr[索引][索引]