一.数组的定义格式:
数据类型 数组名[] = new 数组类型 [数组个数];
或
数据类型[] 数组名 = new 数组类型 [数组个数];
例如: int demo[] =new int[5]; 初始化方式有两种: int demo1[] = new int[]{1, 2, 3, 4, 5}; int demo2[] = {1, 2, 3, 4, 5}; |
二.数组的长度:
数组名.length;
例如:int length = demo.length; ----->结果为5. |
三.数组的内存分析
数组属于引用数据类型,所以需要用户为其分配内存空间,也就是如上所示那样创建数组。
数组变量demo中存放这些内存单元的首地址,该地址称为数组的引用,这样就可以通过索引操作这些连续的内存单元。索引是从0开始的。
例如:demo[0] = 10; demo[1] = 20; |
四.多维数组
Java中采用“数组的数组”来声明多维数组。例如一个二维数组可以是是由多个一维数组组成。
例如: int demo[] = new int[3][4]; 是由3个长度为4的一维数组组成,demo[0]、demo[1]和demo[2] 另外组成多维数组的一维数组不必有相同的长度: demo[0] = new int[5]; demo[1] = newi nt[3]; |
五.对象数组
即数组声明的数据类型为类,此数组即为对象数组。
例如: Book bookArray [] = new Book[3]; bookArray[0] = new Book("Java", 10.21); bookArray[1] = new Book("JSP", 11.3); bookArray[2] = new Book("SSH", 10.1); 或者在开始定义时初始化: Book bookArray[] = new Book[] { new Book("Java", 10.21), new Book("JSP", 11.3), new Book("SSH", 10.1) }; |
对数组的遍历,JDK1.5版本提供了for-each方式:
for(数组类型 循环变量: 数组名字) {
……..
}
循环变量依次取出数组的每一个元素的值。
例如: for(Book i : bookArray){ System.out.println(i); } |
六.操作数组类(Arrays)
java.lang.Object |-java.util.Arrays |
Arrays类是在JDK1.5后提供,主要是数组相关的操作类。
提供的方法都是static方法可以直接调用,常用的方法罗列如下:
方法 |
具体描述 |
public staticString toString(数据类型[] a) |
返回数组a的字符串表示形式 |
public staticvoid sort(数据类型[] a) |
对数组a进行升序排列 |
public staticint binarySearch(数组类型[] a, 数据类型key) |
二分法查找key是否在数组a中,前提是a需要先排好序。如果相同,返回索引,否则返回一负数 |
Public static数组类型[]copyOf(数组类型[] original, int length) |
把original数组从索引0开始的length个元素复制到一个新数组中,并返回这个数组 |
public static数组类型[]copyOfRange(数组类型[] original, int from, int to) |
把original数组的from至to索引的元素复制到新数组中,并返回 |
public staticboolean equals(数据类型[] a, 数据类型[] a2) |
这个方法与object类中的equals方法无关联,比较两个数组中的元素及顺序是否完全相同,相同返回true,否则false. |
public static voidfill(数组类型[] a,数据类型 val) |
用val值填充数组a. |
示例如下:
int data[] = new int[]{49, 32, 232, 2, 10, 3}; int comData[] = new int[]{49, 2, 232, 23, 10, 3};
//把数组转化为字符串表示形式:[49, 32, 232, 2, 10, 3] String str = Arrays.toString(data);
//升序排列:2 3 10 32 49 232 Arrays.sort(data);
//二分法查找,需要先排序,存在返回索引值,不存在返回负数 int index = Arrays.binarySearch(data, 2);
//数组copy,拷贝原数组的length个值,超过原数组长度的话,设置默认值 int cpData[] = Arrays.copyOf(data, data.length); int cpData2[] = Arrays.copyOfRange(data, 2, 5);
//比较两个数组是否相同(元素和顺序),相同为true,不相同为false boolean result = Arrays.equals(data, comData);
//填充数组:8 8 8 8 8 int fillData[] = new int[5]; Arrays.fill(fillData, 8); |