java数组基础

256 阅读4分钟

数组

数组(Array):相同类型数据的集合。

数组的定义格式:

  方式1(推荐,这种格式最常用,更能表明数组类型)

  数据类型[] 数组名;

例如:

int[] array;

这段代码的意思是:定义了一个int类型的数组,数组名叫array。[]这个中括号就是数组的标识,将中括号去掉就变成定义一个变量了

方式2

数据类型 数组名[];

例如:

int array[];

数组的初始化

动态初始化:初始化是仅指定数组的长度,由系统来为数组分配初始值

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

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

这段代码的意思是根据new关键字创建了一个int类型的数组容器,这个容器可以存储10个int类型的整数,这个容器被一个数组名叫array的数组所记录

静态初始化:初始化时手动为数组指定要存储的数据,系统会自动计算该数组的长度

格式1:数据类型[] 数组名 = new 数据类型[]{数据,数据,数据,....};

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

格式2:数据类型[] 数组名 = {数据,数据,数据,....};

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

两种初始化的区别: 动态初始化:手动指定数组长度,由系统给出默认初始化值。 静态初始化:手动指定数组元素,系统会根据元素个数,计算数组的长度 两种初始化都有不同的应用场景

Java数组是一种引用数据类型。数组变量并不是数组本身,而是指向堆内存中存放的数组对象。因此,可以改变一个数组变量所引用的数组

数组是否必须初始化?

  对于这个问题,关键在于要弄清楚数组变量和数组对象的差别。数组变量是存放在栈内存中的,数组对象是存放在堆内存中的。数组变量只是一个引用变量,他能够指向实际的数组对象。所谓的数组初始化并非对数组变量初始化,而是对数组对象进行初始化。

举个例子,int[] wangfugui,wangfugui就是老王给孩子起的名字,int[]就是这个孩子的种族,但他根本没有孩子,如果自己和老婆生一个的话这个就是使用new关键字创建的一个数组容器,就是:int[] wangfugui = new int[]{1,2,3,4},如果老王不想生孩子或者不想让孩子叫这个名字,但他想了这个好个名字又不想浪费,他就一直在等遇到一位靓仔,然后让靓仔当老王的儿子。这个就是改变一个数组变量所引用的数组,就是:

int[] wangfugui = new int[]{3,2,1};//int[] wangfugui; int[] array = new int[]{1,2,3}; wangfugui = array;

注意,如果数组变量想要能使用,该数组变量必须有引用的数组,或者初始化数组,不然使用该数组变量使用时会报错。就像老王给孩子想了一个好名字,但他根本就没有孩子。

数组运用基础

数组长度: java中的每个数组都有一个名为length的属性,表示数组的长度。数组长度一旦确定,在程序运行的过程中就不能改变长度。只能自己手动更改数组的长度

数组元素访问

数组变量访问方式

格式:数组名

数组内部保存的数组的访问方式

格式:数组名[索引]

索引是数组容器中空间的编号,和数组长度不同,数组长度是从1开始计数,而索引是从0开始记录,比如一个长度为5的数组,该数组中的索引就是0、1、2、3、4。 比如我们想访问array数组的第一个数据就是:array[0]

元素访问实例: image

图中控制台打印的 [I@33e16fd 是这个数组在内存中的地址值 @:分隔符 [:当前空间是一个数组类型空间 I:当前数组容器中所存储的数据类型 133e16fd:十六进制内存地址

本文由樊兔教育图二UR整理发布,樊兔教育是一个泛互联网职业教育平台,官网地址:ftuedu.com/