数组
所谓的数组指的就是一组相关类型的变量集合,并且这些变量可以按照统一的方式进行操作。数组本身 属于引用数据类型,那么既然是引用数据类型,这里面实际又会牵扯到内存分配,数组变量是引用(地址)型变量。
数组相关概念:
1.数组名
2.元素
3.角标,小标,索引
4.
数组的长度:元素的个数
length
数组的特点 :
- 数组是有序排列的
-
数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型
-
创建数组对象会在内存中开辟一整块连续的空间4.数组的长度一旦确定,就不能更改。数组的分类:1.按照维数:一维数组、二维数组、 ... ...2.按照数组元素的类型:基本数据类型元素的按钮、引用类型元素的数组数组的定义1 、声明并开辟数组元素类型 [] 数组名 = new 元素类型 [ 元素个数或数组长度 ];示例: int [] arr = new int [ 5 ];初始化操作 arr [ 0 ] = 10 ;2 、静态初始化数组数组先开辟内存空间,而后再使用索引进行内容的设置,实际上这种做法都叫做动态初始化,而如果希 望数组在定义的时候可以同时出现设置内容,那么就可以采用静态初始化完成。元素类型 [] 数组名 = new 元素类型 []{ 元素,元素, …… };int [] arr = new int []{ 3 , 5 , 1 , 7 };int [] arr = { 3 , 5 , 1 , 7 };数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。数组的特点:数组长度是固定的注: 使用 new 关键字分配内存时,简单类型的数组中的元素都有初始值3. 数组元素的默认初始化值数组元素是整型: 0数组元素是浮点型: 0.0数组元素是 char 型: 0 或 '\u0000' ,而非 '0'数组元素是 boolean 类型: false , Oracle 的 JVM 中采用 byte[] 方式进行存储数组内存分配数组类直接继承了Object,关于Object[]类型的引用能够指向String[]类型的对象,这种情况只能是Java语法之中的一个特例,并不是严格意义上的继承。也就是说,String[]不继承自Object[],但是我可以允许你向上转型到Object[],这种特性是赋予你的一项特权。如果有两个类A和B,如果B继承extends了A,那么A[]类型的引用就可以指向B[]类型的对象。数组操作方式1.数组的访问通过索引完成,即:数组名称 [ 索引 ] ,但是需要注意的是,数组的索引从 0 开始,所以索 引的范围就是0 ~ 数组长度 -1 ,例如开辟了 3 个空间的数组,所以可以使用的索引是 0,1,2 ,如果此 时访问的时候超过了数组的索引范围,ArrayIndexOutOfBoundsException 异常2.当数组采用动态初始化开辟空间后,数组里面的每一个元素都是该数组对应数据类型的默认值3.数组本身是一个有序的集合操作,所以对于数组的内容操作往往会采用循环的模式完成,数组是一 个有限的数据集合,所以应该使用 for 循环4.在 Java 中提供有一种动态取得数组长度的方式:数组名称 .length ;5.数组遍历通常使用 for 循环来实现。也可以用 foreach 实现。数组常见异常1. NullPointerException 空指针异常原因: 引用类型变量没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。2. ArrayIndexOutOfBoundsException 索引值越界原因:访问了不存在的索引值。数组角标越界异常 : ,注意:数组的角标从 0 开始。学完基础知识后, 做了相应的练习题。巩固加深了对数组的印象。