一、定义
存放一堆相同类型且有序的数据的容器。是一种数据结构。
特点
1.每个数据称为一个元素,元素的个数为数组的长度。
2.可以通过下标值(索引值)访问 其中的元素,索引值从 0 开始。
3.数组的长度一旦固定不可变。
数组没有固定的类名 每一个数组都是对象
二、数组的实例化
1.动态初始化
1.1 数据类型[ ] 名字 = new int[ ]{ 元素1,元素2,......元素n }
eg: int[ ] arr = new int[ ]{ 1,2,3,4,5};
1.2 数据类型[ ] 名字 = new int[n] n为元素的个数
eg: double[ ] weight = new int[ n ];
weight[0] = {元素1} ;
weight[1] = {元素2};
该初始化方法有默认值:
整数型:byte,short,int,long 是 0
浮点型 :float, double 是 0.0
布尔型 :boolean 是 false
字符型 :char 是 ”\u0000“
字符串:String 是 null
2.静态初始化
数据类型[ ] 名字 = {元素1 ,元素2.........元素n }
eg: int[ ] arr = {1,2,3,4,5};
注意 : 不可以先声明在初始化也就是不能像1.2将等于号左右分开写
三、数组的存取和遍历
1.数组的长度
数组的长度为 : 数组变量名.length eg: arrs.length
2.数组的访问(取)
通过下标进行访问 下标的区间是 0 - 元素的个数; 也就是 0 - 数组的长度 - 1
3. 数组的存
直接将要存的值赋给目标元素,也就是将原来数组存的值覆盖掉,目标元素通过下标值访问
2. 可以新定义一个数组变量 然后将原来的数组赋值给新的变量。
public class Test{
public static void main(String[] args) {
int[] x = { 1, 2, 3, 4, 5 };
int[] y = x;
System.out.println(y[2]);
}
}
4.数组的遍历
1.普通的for循环 :遍历下标
2.增强for循环:for each循环
for( 元素类型 变量名 : 数组 | 集合 | 枚举){ }
新定义一个变量 将数组中取出的值赋给新变量然后循环输出
5.两种遍历的的对比
增强for循环中没有下标的概念 只是将取出的值赋给新定义的变量然后输出该值
增强for循环中,不能对数组进行改动,因为没有下标无法访问
增强for循环中比遍历的下标的执行效率要高
四、数组工具类
1.toString():
因为数组的变量存的是地址 如果直接打印数组的变量名字,会输出16进制的地址
所以将数组转为字符串形式输出
2.binarySearch( 数组名, 目标元素 ) : 用二分法对查找某个元素,此时数组必须升序排列,返回的是目标元素的下标值
如果没有找到则返回-(查找元素在的位置 +1)
3.fill(数组名,元素 ) : 使用元素填满整个数组
4.sort(数组名) :只能对提前设置好排序规则的类的 数组进行排序
eg: 字符串排序可以按照先大写后小写的顺序
整数型按照从小到大排序
5.copyof(原数组名,新数组的长度): 将一个数组的部分或全部元素复刻到一个新数组中
新数组的长度 > 原来的数组长度 将原数组拷贝到新数组的最前面,其他位置是默认值
新数组的长度 = 原来的数组长度 叫拷贝 也就是复制一个与原来数组内容一样的
新数组的长度 < 原来的数组长度 部分拷贝 将原数组从头开始拷贝到新数组,位置不够则舍弃