在Java中,数组是一组数据的集合,数组是Java对象,Java中有三种引用类型,分别引用类实例,接口类的实例以及数组对象。
1.创建数组的步骤:
(1)声明一个数组类型的引用变量;
(2)用new语句构造数组的实例,new的作用是为数组分配内存,并为数组中的每一个元素赋予默认值
(3)初始化,为数组的每一个元素设置合适的初始值。
1.1 .数组变量的声明
声明数组变量时,不能指定数组的长度;
1.2.数组对象的创建
使用new语句创建数组对象,new语句的执行步骤
a.在堆区为数组分配内存空间
b.为数组中的每一个元素赋予默认值
c.返回数组对象的引用
使用new语句创建数组对象时,需要指定数组长度,但是如果在创建对象时对数组进行初始化,则不需要指定数组的长度
在声明数组变量时不能够指定数组的长度,而在创建数组对象时一定要指定数组的长度
因为数组是Java对象,故数组之间可以相互赋值,而且数组变量可以引用其他的数组对象。
1.3 数组的初始化
可以在程序中显式地将数组初始化
2. 数组元素的访问
2.1 数组变量在声明之后,一定要引用一个数组对象,这样才能够访问数组的元素;
2.2 数组中可以保存基本类型,也可以保存引用类型,保存引用类型时,存放的是对象的引用,而不是对象本身
打印的结果是abc,数组可以作为方法的参数或者返回值
将数组作为参数传入方法中时,传入的是数组的引用,在方法中对数组元素的修改可以直接修改数组,而如果将基本类型传入方法,当方法执行结束,代表方法的栈帧从栈中弹出,在方法中对临时变量进行的操作不会保存
3.数组的工具类
数组的工具类提供一系列静态方法,对数组对象进行操作
4.哈希表
(1)一般的数组中,元素在数组中的索引位置比较随机,元素的取值和元素的位置关系之间不存在确定的关系,因此,在数组中查找特定值时,需要把查找之和一系列的元素进行比较,这类查找方法建立在“比较”的基础上,查找的效率依赖于产找过程中进行的比较次数。
(2)如果数组中元素的值和位置存在确定的对应关系,这样的数组称为哈希表,元素的值value和它在数组中的索引位置index有一个确定的对应关系hash()
(3)hash()函数根据元素值获取哈希码,哈希码在以下两种情况下不能够作为index
a.哈希码过大
b.多个元素具有相同的哈希码
(4)java.lang.Object类中定义了hashCode()方法,返回对象的哈希码,在Object类本身的hashCode()中,java.lang.Object类中有定义hashCode()方法,在这个方法中,把对象的内存地址转换为整数类型的哈希码,由于每个对象都有唯一的内存地址,因此每个对象都有唯一的哈希码,用户定义的hashCode()方法可以覆盖Object的hashCode()方法
哈希表是一种特殊的数组,它的数组元素和index有确定的对应关系,查找某个元素时,不是通过比较的方法,而是通过哈希码确定index,确定数组的存储位置
5.数组的使用类 Arrays
java.util.Arrays
(1)提供一系列的静态方法,用于操纵数组
a. equals()比较两个数组是否相同,只有两个数组的元素数目相同,并且对应位置的元素也相同的时候,数组才相同;
b. fill() 向数组中填充元素
c. sort() 把数组中的元素按照升序排列
d. binarySearch() 按照二叉查找算法,查找数组中值与给定数据相同的元素,调用该方法时,需要保证数组按照升序排列;
e.toString() 放回包含数组中所有元素信息的字符串