JAVA学习_06 数组的定义、内存分配、数组相关方法

1.数组的定义。

数组:是一种容器,可以同时存放多个同类型的数据值。数组是一种引用数据类型,它的长度在运行期间不可改变。

数组的初始化:在内存中创建一个数组,并且向其中赋予一些默认的值。

两种初始化方法:

(1)静态初始化(指定内容):

标准格式:数据类型[ ]  数组名称 =  new 数据类型[]{元素1,元素2,...}    例:int[ ]   arr = new int[ ]{2,3,5};

省略格式:数据类型[ ]  数组名称 =  {元素1,元素2,...}  例:int[ ]   arr = {2,3,5};

(2)动态初始化(指定长度):数据类型[ ]  数组名称 =  new 数据类型[数组长度]    例:int[ ]   arr = new int[5];

使用动态初始化数组时,系统会默认给每个元素分配一个默认值。如果数组是整数类型,那么默认为0;如果数组是浮点型,默认为0.0,;如果数组是字符型,那么默认为‘\u0000’(这是一个不可见字符);如果是布尔类型,那么默认为false;如果是引用类型,那么默认为null。

注意事项:

(1)静态初始化没有直接指定数组的长度,但是可以根据中括号中元素的个数来直接推算出数组的长度。

(2)静态数组和动态数组标准初始化部分都可以拆分成两个语句(声明和分配内存),如下。但是省略格式不能拆分。

(3)直接打印数组名称,并不能访问数组内部的元素,而是会返回数组对应的:内存地址哈希值。

(4)静态初始化也有默认值的过程,但是系统会自动马上将中括号内的数据替换。

(5)数组必须进行new初始化才能使用其中的元素,如果只是赋值为null,没有进行new创建,那么将会发生空指针异常(NullPointerException)。

2.内存分配

(1)JAVA内存划分。

下图是数组在内存中的存储情况。方法区主要存放定义的方法以及参数的一个情况;然后系统会在栈中为该方法开辟一块内存用来存放该方法的变量,以数组为例,声明int类的array,栈中存放的是他在堆中的地址值(0x666);堆中会根据不同类型的数据来分配内存,例如一个长度为3的数组,然后每一个小块存放一个int类型的数据,可以通过右侧对应的索引值来访问。

 下面两个图分别代表:(1)分别创建两个不同名称的数组,并分配内存,他们的地址值不同。(2)分别创建两个不同名称的数组,但是将数组A赋值给数组B,此时他们的地址相同。

3.数组相关方法。

(1)获取数组长度。 格式:数组名称.length  返回:一个int数组,代表数组长度。

注意:数组一旦创建,那么在程序运行期间,长度不可改变。(下图arrayC被new了两次,长度就被3->5,这不是长度改变了么?其实不是,arrayC只是一个变量名,并且new之后,只是把数据的地址值改变了,但是长度为3和长度为5的数组在堆中是仍然存在的。)

注意:数组可以作为方法的参数,在传参过程中,时间传进去的是数组的地址值(引用),这个和C++是有区别的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值