数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器
数组既可以存储基本数据类型,也可以存储引用数据类型
格式1:数据类型[] 数组名;int[] a:定义一个int类型的数组a变量。
推荐使用第一种格式第一种格式的鈳读性更强。
注意:这两种定义做完了数组中是没有元素值的。
数组必须先初始化然后才能使用。
所谓初始化:就是为数组中数组元素分配内存空间并为每个数组元素赋值。
动态初始化:初始化时只指定数组长度由系统为数组分配初始值。
这篇文章先介绍第一种格式的知识:
数据类型[] 数组名=new 数据类型[数组长度];
数組长度其实就是数组中元素的个数
程序运行时,需要在内存中分配空间为了提高运算效率,就对空间进行了不同区域的划分因为每┅片区域都有特定的处理数据方法和内存管理方式。
那么主要使用的是栈内存和堆内存栈内存存储局部变量,堆内存存储new出来的东西
那么什么是局部变量呢?局部变量:在方法定义中或者方法声明上的变量都称为局部变量
下面说一下这两种内存方式的特点:
A:每一个new絀来的东西都有地址值;
B:每个变量都有默认值
【栈内存特点】:栈内存中数据用完就会释放掉是脱离了变量的作用域后会释放掉。
那么下面举一个我写的小例子:
* 定义第一个数组定义完畢后,给数组元素赋值赋值完毕后,在输出数组名称和元素
* 定义第二个数组,定义完毕后给数组元素赋值,赋值完毕后在输出数組名称和元素。
* 定义第三个数组把第一个数组的地址赋值给它。(注意类型一致)通过第三个数组的名称去把元素重 复赋值。
这里详細解释一下运行步骤:
第二步:new出的变量放在堆中,所以new int【3】在堆中
第三步:每一个new出来的东西都有地址值(系统随机分配),所以new int【3】的地址值为0x001;
把0x001赋给arr在栈中的数组通过地址值找箌堆中相应的地址。用数组名和编号的配合就可以找 到数组中指定编号的元素这种方法就叫做索引。
第四步:int类型的数据默认值为0
第五步:给数组中的每个元素赋值把原先的默认值干掉。
第六步:逐个输出相应的值
开辟一个内存空间 int[] arr3,把arr3的地址值0x001赋给该数组所以数組3此时指向堆内存中的0x001对象。
100赋值给编号为0的元素200赋值给编号为1的元素。
画一张图来更形象的表示: