Bootstrap

Java中数组的基本操作

1、创建数组

(1)创建一个数组,需要在声明时指定长度,并且通过new来完成数组对象创建操作。

// 声明一个int型的数组
int[]a = new int[6];
// 声明一个字符串数组
string[]b = new string[5]
// 声明一个数组,同时完成赋值操作
int[]c = {1,3,9,4,6,7,9};
string[]d = {a,b,"hello","123"}

(2)创建空数组,数组初始化时,会在存储空间中添加默认值,整型默认值是0,浮点型默认值是0.0,布尔型默认是false,字符串默认是空字符,引用数据类型默认是null。
(3)二维数组中,数组的长度代表数组中一维数组的个数,第二个数则代表一维数组中存放元素的个数。

//声明一个二维数组
int[][]a=new int[3][3];
//创建二位数组并赋值
int[][]c= {{1,2,3},{2,4,5,6,7},{4,5,6,7}};

二维数组赋初值的时候,数组长度可以不一致,int[3][],表示存3个1维数组,但是每个1维数组长度不一定相等。

int[][]b=new int[3][];

2、输出数组

(1)数组不能直接打印输出,直接打印输出的结果是数组在内存中的地址。

int[][]a=new int[3][3];
int[]b = {1,3,9,4,6,7,9};
System.out.println("a的长度是:"+a);//输出结果是数组a的内存地址
System.out.println(b);//输出结果是数组b的内存地址

(2)通过数组.length可以获取数组的长度。

int[]a = new int[6]
string[]b = {a,b,"hello","123"}
System.out.println("a的长度是:"+a.length);//输出结果是6
System.out.println("b的长度是:"+b.length);//输出结果是4

(3)想要输出数组中的单个元素,可以使用下标,注意下标从0开始。

string[]b = {a,b,"hello","123"}
System.out.println(b[0]);//输出结果为a
System.out.println(b[1]);//输出结果为b
System.out.println(b[3]);//输出结果为123

输出二维数组中的单个元素。

int[][]c= {{1,2,3},{2,4,5,6,7},{4,5,6,7}};
System.out.println("二维数组c第一行第三列的值是:"+c[0][2]);//输出结果为3
System.out.println("二维数组c第二行第一列的值是:"+c[1][0]);//输出结果为2

(4)如果要输出数组中的所有元素,则需要遍历

int[]a = new int[6];
int[]b = {1,3,9,4,6,7,9};
//方法一:for循环遍历数组下标
for(int index=0;index<b.length;index++) {
	System.out.print(b[index]+"");
	}
//注意,没有赋值的数组,默认元素值是0
for(int index=0;index<a.length;index++) {
	System.out.print(a[index]+"");
	}
//方法二:直接遍历元素的值,用到foreach增强型for循环
for(int i:b) {
	System.out.print(i);
	}
//没有赋值的数组,结果仍然是0
for(int i:a) {
		System.out.print(i);
	}

遍历二维数组

int[][]b=new int[3][];
int[][]c= {{1,2,3},{2,4,5,6,7},{4,5,6,7}};
//方法一:for循环遍历
//外层循环遍历每一个一维数组,也就是每一行
for(int row=0;row<c.length;row++) {
	// 内层循环遍历每一个一维数组,也就是一列
	for(int column=0;column<c[row].length;column++) {
		System.out.println(c[row][column]+"");
		}
	System.out.print(c[row]);
}
//方法二:foreach遍历
for(int[] A:c) {
	System.out.println(A);
		for(int i:A) {
		System.out.print(i+"");
		}
	}
//没有定义一维数组长度的时候,二维数组中的遍历输出
for(int[]A:b) {
	System.out.println(A);
	}

3、数组增删改操作

增,数组长度由于在初始化声明时已经固定了,所以没有办法插入一个新元素。如果是一个空数组,可以通过下标放入元素。

int[]a = new int[6];
//通过直接赋值放入元素
a[0]=12;
a[1]=20;

删,数组长度由于在初始化声明时已经固定了,所以没有办法删除数组中的元素。
改,更新数组元素的值。

int[]b = {1,3,9,4,6,7,15};
//通过直接赋值修改
b[0]=12;
b[1]=20;
b[8]=18;//b的长度是7,如果增加第8个元素,则运行代码时会报错
for(int i:b) {
	System.out.print(i);
		}

二维数组赋值

//不能给已经初始化完成的数组直接用a[0]= {1,2,3}这种方式赋值,只能对一维数组中的单个元素赋值
int[][]a=new int[3][3];
a[0][0]=1;
a[0][1]=2;
a[0][2]=3;
//输出赋值后的数组a
for(int[]A:a) {
	System.out.println(A);
	for(int i:A) {
		System.out.print(i+"");
			}
	}

4、Arrays类

Arrays类中有一些常用的方法,可直接操作数组。
(1)批量修改数组中的值可使用(Arrays.fill())。

//将数组a的值都修改为8
Arrays.fill(a, 8);
for(int i:a) {
	System.out.print(i);
		}
//将数组b的值都修改为9
Arrays.fill(b, 9);
for (int u : b) {
	System.out.print(u);
		}

(2)想要打印输出数组可使用(Arrays.toString())将数组转为字符串,然后打印输出。

// 直接打印数组
String[] Arrray = new String[]{"a","b","c","d","e"};
String ArrayString = Arrays.toString(Arrray);//将数组转为字符串
System.out.println(ArrayString);//输出结果为[a, b, c, d, e]

(3)数组元素排序,可以使用(Arrays.sort())。

// 数组元素排序
int[] i = {4,9,0,5,1};
Arrays.sort(i);
System.out.print(Arrays.toString(i));//输出结果为[0, 1, 4, 5, 9]

(4)使用(Arrays.aslist())方法将数组转为链表。注意:不能使用基本数据类型的数组用aslist进行转换,这样的话会将整个数组作为一个元素存到list里面去。

// 数组转链表
Integer[] aa = { 1, 2, 3, 5, 4, 6, 9, 7, 8, 0 };
List<Integer> listaa = Arrays.asList(aa);
System.out.println("aslist转链表:" + listaa);//输出[1, 2, 3, 5, 4, 6, 9, 7, 8, 0]

// 不能使用基本数据类型的数组用aslist进行转换
int[] bb = { 1, 2, 3, 5, 4};
List<int[]> listbb =Arrays.asList(bb);
System.out.println("bslist转链表:" + listbb);//输出[[I@15db9742]
;