数组基本知识整理
数组是一种数据结构,用来存储同一类型值得集合。创建一个数字数组时,所有元素都初始化为0。Boolean类型数组的元素会初始化为false。对象数组的元素则初始化为一个特殊值null,这表示这些元素还未被放任何对象。
一旦创建了数组,就不能再改变它的大小(可以改变每一个数组元素)。如果经常需要在运行过程中扩展数组的大小,就需要使用另一种数据结构-集合。
一维数组
1、 一维数组的声明
a、 一维数组的声明方式
type var[]; 或type[] var;
b、 例如:
inta1[];int[] a2;
double b[];
Person[] p1;
String s1[];
c、 Java语言中声明数组时不能指定其长度(数组元素的个数),例如:
int a[5]; //错误的方式
2、 数组对象的创建
Java中使用关键字new创建数组对象,格式:
数组名 = 数组元素的类型[数组元素的个数];
例如:
public staticvoidmain(String[] args){
int a[];
a = newint[5];
for (inti = 0; i < a.length; i++) {
a[i] =i;
}
//常规for循环
for (intj = 0; j < a.length; j++) {
System.out.print(a[j] +" ");
}
System.out.println();
//foreach使用
for (inti : a) {
System.out.print(i +" ");
}
System.out.println();
//Arrays类的toString方法:返回一个包含数组元素的字符串
System.out.println(Arrays.toString(a));
}
3、 元素为引用数据类型的数组
元素为引用数据类型的数组中每个元素都需要实例化。
public class ShuZuTest2 {
public staticvoidmain(String[] args){
Date date[] = new Date[3];
for (inti = 0; i < date.length; i++) {
date[i] =newDate(2016, 11, i+1);
}
for (inti = 0; i < date.length; i++) {
System.out.println(date[i].year+"年"+date[i].month+"月"+date[i].day+"日");
}
}
}
class Date{
int year,month,day;
Date(int y, intm,int d){
year = y;
month = m;
day = d;
}
}
4、 数组的初始化
(1) 动态初始化
数组定义与数组元素的分配空间和赋值操作分开进行,例如:
int a[]; //数组的定义
a = newint[3]; //数组元素分配空间
a[0] = 2; //数组元素的复制操作
a[1] = 1;
a[2] = 4;
(2) 静态初始化
在定义数组的同时就为数组元素分配空间并赋值。例如:
int[] a = {1,2,3};
Date[] date = {new Date(2011,8,1),
new Date(2011,9,1),
new Date(2011,10,2)}
(3) 数组元素的默认初始化
数组元素是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也按照成员变量的规则被隐式初始化。Int类型系统默认为0;引用类型系统默认为null。
二维数组
1、 二维数组
数组的数组。
int a[][] = {{1,2},{1,2,3,4},{2,3,4}};
int a[][] =new int[3][];
a[0]= newint[2];
a[1]= newint[3];
a[2]= newint[4];
2、 二维数组的初始化
a、 静态初始化
数组的定义、数组元素的分配空间以及数组的复赋值操作同时进行。
int a[][] = {{1,2}, {1,2,3}, {2,4,6,7}};
int a[2][3] = {{1,2,3}, {3,4,5}}; //非法
b、 动态初始化
数组定义与数组元素的分配空间和赋值操作分开进行。
Arrays类
1、数组排序:sort方法。按照升序排序。
2、toString方法:利用Arrays类的toString方法,打印数组中的所有值。
3、数组拷贝:copyOf方法、copyOfRange()。
4、数组比较:equals()方法。