数组的定义?
数组,(Array)。数组是一个用来储存相同数据类型元素的一个数据结构且长度固定(在创建数组的时候就确定了长度)。
数组是一个复合(引用)的数据类型;
数组是一个集合;一个数组中可以同时存储多个相同类型的数据;
## 特点
1.数据类型相同
2.长度固定
如何定义一个数组?
- 数据类型[] a;
2.int[] a=new int[5];
数组的操作
1.创建数组时需要先为数据开辟空间(指定长度),数组的长度一旦确定,不能更改;我们可以通过下标来访问数组中的元素;下标从0开始,一直到 (数组长度-1);
2.通过length可以获得数组的长度;这个length属性是只读的,不能修改,只能读。
3.如果我们在访问数据的元素时,使用了一个不在有效范围的下标,那么运行时将会抛出一个数组下标越界的异常java.lang.IndexOutOfBoundsException
数组的初始化
初始化数组的时候分为静态初始化和动态初始化
静态初始化:
开辟数组空间的时候直接赋值
int[] score=new int[]{4,5,6,87,9};
int[] score={4,56,7,9};
动态初始化:
int[] a=new int[10];
a[x]=xxx;
注意:
系统会为动态创建的数组的每个元素分配一个默认值
byte、short、int、long类型的数组,元素默认是0
float、double类型的数组,元素默认为0.0
char类型的数组,元素默认为\u000 空字符
boolean 类型的数组、元素默认为false
引用类型的数组,元素默认为null。
比如Date[] date = new Date[];
增强的for循环(集合专用)
增强的for循环是JDK5的新特性,它的作用是用来遍历数组集合中的数据
语法
for(数据类型 变量:集合名){
}
int[] array={4,56,7,8,90};
int[] array={4,56,7,8,90};
for(int i:array){
System.out.println(i);
}
for-each的使用限制
1.这个循环只能用于对集合的遍历
2.只能全部遍历,不能只取其中的一部分;
数组的应用
数组的应用有:拷贝、排序、搜索、反转等
首先我们来谈谈拷贝,拷贝是将一个数组的部分或全部元素复制到另一个数组相关位置,因为 数组的拷贝是一个大众性的问题所以JDK为我们提供了一系列数组复制的方法。其中Arrays类中 有一个方法是copyOf(源数组,长度),将源数组从指定位置复制到一个新的数组中。
package Primary;
import java.util.Arrays;
public class ArrayCopy {
public static void main(String[] args) {
int[] a = new int[] {1,5,4,4,5,6,6,4,56,4};
int[] b = new int[a.length];
//使用copyOf方法把a从0号复制3内容到a数组中
b = Arrays.copyOf(a, 3);
for(int i:b){
System.out.println(i);
}
}
}
此时的运行结果是
在实际开发中,我们会遇到各种各样复杂的数组操作,当我们执行更复杂的操作时,System方法也为我们也提供了方法 arraycopy
//复杂的数组拷贝方法
int[] c = new int[a.length] ;
System.arraycopy(a, 3, c,0,1);//把a从下表为3的位置开始复制4个到c数组(从0号位置开始)
System.out.println(Arrays.toString(c));
这样打印的结果是
[4, 0, 0, 0, 0, 0, 0, 0, 0, 0]