数组(Array)之概念
1. 数组的概念
是一种可以同时存放多个数据值的容器
- 数组的特点
- 数组是引用数据类型(所以内存分配上java的数组分配在堆上)
- 数组当中的多个数据,类型必须统一
- 数组的长度在程序运行期间不可改变
2. 数组的定义(初始化)
在Java程序开发中,使用数组之前要先把这个数组创建出来,这就是数组的初始化。
也就是在内存当中创建一个数组,并且向其中赋予一些默认值。
因为数组是引用类型,声明数组只是声明一个引用类型的变量,并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中就可使用该数组变量来访问数组元素。所谓数组初始化就是让数组名指向数组对象的过程,该过程主要分为两个步骤,一是对数组对象进行初始化,即为数组中的元素分配内存空间和赋值,二是对数组名进行初始化,即为数组名赋值为数组对象的引用。
2.1 两种常见数组初始化的方式
分为静态初始化和动态初始化
1.动态初始化(指定数组长度)
数据类型[] 数组名称 = new 数据类型[长度];
int[] arrS = new int[8];
2.静态初始化(指定内容)
数据类型[] 数组名称 = new 数据类型[] {元素1,元素2,元素3,...};
int[] arrB = new int[] {1,2,3};
String[] arrC = new String[] {"aaa","bbb"};
静态初始化数据的时候,格式还可以省略一下
数据类型[] 数组名称 = {元素1,元素2,元素3,...};
int[] arr = {1,2,3};
3.注意
(1)静态初始化和动态初始化都可以拆分成两个步骤
但是静态初始化的省略格式不可以拆分成两个步骤 报错
//拆分
int a[]; //定义数组,即声明一个int类型的数组a[ ]
a=new int[3]; //给数组元素分配内存空间。
(2)初始化的时候元素默认值
/*
使用动态初始化数组的时候,其中的元素将会自动拥有一个默认值。规则如下:
如果是整数类型,那么默认为0;
如果是浮点类型,那么默认为0.0;
如果是字符类型,那么默认为'\u0000';
如果是布尔类型,那么默认为false;
如果是引用类型,那么默认为null。
注意事项:
静态初始化其实也有默认值的过程,只不过系统自动马上将默认值替换成为了大括号当中的具体数值。
*/
public class Demo05ArrayUse {
public static void main(String[] args) {
// 动态初始化一个数组
int[] array = new int[3];
System.out.println(array); // 内存地址值
System.out.println(array[0]); // 0
System.out.println(array[1]); // 0
System.out.println(array[2]); // 0
System.out.println("=================");
// 将数据123赋值交给数组array当中的1号元素
array[1] = 123;
System.out.println(array[0]); // 0
System.out.println(array[1]); // 123
System.out.println(array[2]); // 0
}
}
数组的访问
直接打印数据名称,得到的事数组对应的内存地址哈希值
int[] arr = new int[]{11,22,33};
System.out.println(arr);//[I@4554617c
//上面的哈希值含义:[代表数组类型 I代表里面数据都是int @后面是十六进制的数
- 索引:数组中元素的编号(从0开始,一直到“数组的长度-1”为止)
//定义存储int类型数组,赋值元素1,2,3,4,5
int[] arr = {1,2,3,4,5};
//为0索引元素赋值为6
arr[0] = 6;
//获取数组0索引上的元素
int i = arr[0];
System.out.println(i);
//直接输出数组0索引元素
System.out.println(arr[0]);