java基础--数组(Array)
目录
一. 关于数组
二. 数组的内存结构
三. 数组定义常见问题
一些笔记
数组的参数传递:传递的是引用地址,若形参中更改了内存地址里的元素,则引用该内存地址的变量也会进行更改。
一. 关于数组
数组的概念
同一种类型数据的集合。(可以是基本数据类型,也可以是引用数据类型)
数组的特点
- 数组存储的都是相同数据类型的元素
- 数组的长度也就是数组中元素的个数
- 元素从0开始编号,编号也称“索引”:index(下标,角标)
- 数组中元素的访问方式是通过数组名+索引的方式,如int [0]
数组的定义格式
初始化方式分为:动态初始化和静态舒适化
动态初始化:数组的创建和元素的赋值分开进行
1 /* 2 元素类型[ ] 数组名 = new 元素类型[数组长度]; 3 */ 4 int[ ] arr = new int [3];
静态初始化:数组创建时就给数组元素赋值
1 /* 2 元素类型[ ] 数组名 = new 元素类型[ ]{元素1,元素2,…}; 3 */ 4 int[ ] arr = new int[ ]{2,0,3,1}; 5 int[ ] arr = {2,0,3,1}; //静态初始化的简化写法
二、数组的内存结构
2.1 关于内存结构
Java程序在运行时,为了提高运行效率,对内存进行了不同区域的划分,每一种区域都有特定的处理数据的方式和内存管理方式,主要有以下几种:
栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放;
堆内存:存放数组和对象,通过new建立的实例都存放在堆内存中
每一个实例都有内存地址值;
实例中的变量都有默认初始化值;
当实例不再被使用,会在不确定的时间被垃圾回收器回收。
方法区:存放类文件和方法
本地方法栈:供本地方法使用,与操作系统相关
程序计数器--Program Counter:对字节码文件计数
2.2 数组的内存结构
也就是根据数据的长度和相应的类型,开辟一个内存空间。(如:int[] arr = new int[5] ;就是开辟了int类型的5个位置,可以放置int类型的元素)
使用数组元素的方式是:数组名+索引(如:int [0] )。
三. 数组的常见问题
数组索引越界异常(ArrayIndexOutOfBoundsException)
1 int[] arr = new int[2]; //创建了可以放2个int类型元素的数组 2 System.out.println(arr[2]); //索引是从0开始,该语句是打印索引为2的元素 3 //原因:访问到了数组中的不存在的索引发生异常
空指针异常(NullPointerException)
1 int[] arr = new int[2]; 2 arr = null; 3 System.out.println(arr[0]); 4 //原因:arr引用没有指向数组,却在操作数组中的元素
数组的遍历
- 数组遍历:依次访问每个元素,访问的次数就是元素的个数。
- 访问次数:length属性判断数组的长度,来确定访问的次数。
注:可将打印语句封装成方法,便于多次使用。