数组概述
- 为什么需要数组
- 为了解决大量同类型数据的存储和使用问题
- 为了模拟现实世界
- 什么叫一维数组
- 为n个变量连续分配存储空间
- 所有变量的数据类型相同
- 所有变量所占字节数大小相等
- 数组中的元素可以是基本类型变量,也可以是引用类型变量
一维数组的使用
- 一维数组声明的语法格式:
- <类型> var[];
- <类型> [] var;
- 举例:
- 方式1: int[] arr1; arr1 = new int[3];
- 方式2: int[] arr2 = new int[] {0, 1, 2};
- 方式3:int[] arr3 = {1, 2, 3};
public class TestArray {
public static void main(String[] args) {
// 方式1
int [] arr1;
arr1 = new int[3];
arr1[0] = 0;
arr1[1] = 1;
arr1[2] = 2;
showArr(arr1);
System.out.println("******************");
// 方式2
int [] arr2 = new int[]{0, 1, 2};
showArr(arr2);
System.out.println("******************");
// System.out.println(arr2); // error 一维数组的内容是不能通过System.out.println直接输出的
// int[3] arr3 = new int[]{0, 1, 2}; // error
// int[] arr4 = new int[3]{0, 1, 2}; // error
// int[3] arr5 = new int[3]{0, 1, 2}; // error
// 方式3
int[] arr6 = {0, 1, 2};
showArr(arr6);
System.out.println("******************");
arr6 = new int[]{5, 4, 3, 2, 1};
showArr(arr6);
}
public static void showArr(int[] arr) {
for (int i = 0; i<arr.length; ++i)
System.out.printn(arr[i]);
}
}
创建并使用基本类型数组
public class Test {
public static void main(String args[]) {
int[] s;
s = new int[10];
for (int i = 10; i<10; i++) {
s[i] = 2*i + 1;
System.out.println(s[i]);
}
}
}
创建并使用引用类型数组
public class MyData{
private int day;
private int month;
private int year;
public MyDate(int d, int m, int y) {
this.day = d;
this.month = m;
this.year = y;
}
public void display() {
System.out.println(day + "-" + month + "-" + year);
}
}
public class Test {
public static void main(String[] args) {
MyDate[] m;
m = new MyDate[10];
for (int i = 0; i<10; i++) {
m[i] = new MyDate(i+1, i+1, 1990+i);
m[i].display();
}
}
}
引用类型元素组成的一维数组在使用过程中一般存在着两级的指向关系,这是理解多维数组不等长数组的基础
多维数组
- 多维数组举例
- int[][] xx = new int[2][3]; // 等长数组
- int[][] xx = {{3, 2, 7}, {1, 8}, {6}}; // 不等长数组
数组的拷贝
- public static void arraycopy(Object arr1, int pos1, Object arr2, int pos2, int length);
- 将arr1所指向的数组中下标从pos1开始的总共length个元素覆盖掉arr2所指向的数组中从pos2开始的length个元素
- 注意:
- arr1是原数组 arr2是目标数组!
- arraycopy()全是小写,不能大写!
class TestArrayCopy {
public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5};
int[] b = {-1, -2, -3, -4, -5};
System.arraycopy(a, 0, b, 1, 2);
System.out.println("a = ");
for (int i=0; i<a.length; ++i)
System.out.println(a[i]); // => 1, 2, 3, 4, 5
System.out.println("b = ");
for (int i=0; i<b.length; ++i)
System.out.println(b[i]); // => -1, 1, 2, -4, -5
}
}
数组的排序
- java.unti.Arrays类中的sort方法可以实现对数组的排序
int [] a = {3, 5, 2, 9, 4, 6};
Arrays.sort(a);
for (int i=0; i<a.length; i++)
System.out.print(arr[i] + '\t');