其他分享
首页 > 其他分享> > 四、数组——小白秃头史05

四、数组——小白秃头史05

作者:互联网

四、数组

1.数组的概念

数组是一种容器,可以同时存放多个数据值

2.数组的特点

1.数组是一种引用数据类型
2.数组只能储存是同一种数据类的多个数据
3.数组的长度在此程序运行期间不可改变

3.一维数组

数组的初始化:在内存当中创建一个数组,并且向其中赋予一些默认值。

1.动态初始化

动态初始化(指定长度),在创建数组的时候指定元素的个数
格式:数据类型[] = new 数据类型[数组长度];

int[] array = new int[6];

2.静态初始化

静态初始化(指定内容),在创建数组的时候自己插入元素
标准格式:数据类型[] = new 数据类型[] {内容};

int[] array = new int[] {1,89,34,26,78};`

简写格式:数据类型[] = {内容};

int[] array ={1,89,34,26,78};`

注意事项:虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容,也可以自动推算出来长度。

3.解析含义

左侧数据类型:也就是数组当中保存的数据,全都是统一的什么类型
左侧的中括号:代表我是一个数组
左侧数组名称:给数组取一个名字
右侧的new:代表创建数组的动作
右侧数据类型:必须和左边的数据类型保持一致
右侧中括号的长度:也就是数组当中,到底可以保存多少个数据,是一个int数字

使用建议:
如果不确定数组当中的具体内容,用动态初始化;否则,已经确定了具体的内容,用静态初始化。

4.一维数组的遍历

System.out.println(array);//直接输出数据得到的是相对应的地址值
System.out.println(array[i]);//得到数组某个索引相对应的值
for (int i = 0; i < array.length; i++) {
	System.out.println(array[i]);
}

4.二维数组

1.动态初始化

int[][] array = new int[4][5];//给数组分配了内存空间
array[1][0]=45;//给array数组的第二行第一列赋初值
array[0] = new int[] {12,25,12,32,15};//给第一行分配一个一维数组

2.静态初始化

 int[][] array = new int[][] {{62,62,62},{36,36,36}};//标准
 int[][] array = {{62,62,62},{36,36,36}};//省略方法

4.二维数组的遍历

public static void main(String[] args) {
	int a[][] = { { 1, 2, 4 }, { 1, 3, 4 } };
	// 二维数组的第一种方法遍历
	for (int i = 0; i < a.length; i++) {
		for (int j = 0; j < a[i].length; j++) {
			if (j != 0)
				System.out.print(" ");
			System.out.print(a[i][j]);
		}
		System.out.println();
	}
	
	//二维数组的第二种遍历
	for (int i[] : a) {
		for (int j : i) {
			System.out.print(j + " ");
		}
		System.out.println();
	}
}

5.数组中的常用算法、

1.元素交换

@Test
public void testArrayExchange(){
	int[] arrayExchange = {12,24,99,33,66};
	for (int i = 0; i < arrayExchange.length / 2; i++){
		 int exchange = arrayExchange[i];
		 arrayExchange[i] = arrayExchange[arrayExchange.length-1-i];
		arrayExchange[arrayExchange.length-1-i] = exchange;
	}
	for (int i = 0; i < arrayExchange.length; i++) {
		System.out.print(arrayExchange[i] + " ");
	}
}

2.最大值&最小值

@Test
public void testArrayMax(){
	int[] arrayMax = {12,23,32,3,5,33,54,87,21};
	int max = arrayMax[0];
	for (int i = 1; i < arrayMax.length; i++){
		if (max < arrayMax[i]){//修改>为<号则可以求出最小值
			 max = arrayMax[i];
		}
	}
	System.out.println("最大值是:" + max);
}

3.冒号排序

@Test
public static void bubbling(){
	int[] arr = {12,34,22,1,53,24};
	for (int i = 0; i < arr.length - 1; i++) {
		for (int j = 0; j < arr.length - 1 - i; j++) {
			if (arr[j] > arr[j+1]){
				int temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}
	for (int i : arr) {
		System.out.print(i + " ");
	}
}

4.选择排序

@Test
public static void select(){
	int[] array = {12,34,22,1,53,24};
	for (int i = 0; i < array.length - 1; i++) {
		int index = 0;
		for (int j = 1; j < array.length - i; j++) {
			if (array[j] < array[index]){
				index = j;
			}
			int temp = array[array.length - 1 - i];
			array[array.length - 1 - i] = array[index];
			array[index] = temp;
		}
	}
	for (int i : array) {
		System.out.print(i + " ");
	}
}

5.Array中的常用方法

  1. boolean equals(int[] a,int[] b) 判断两个数组是否相等
  2. String toString(int[] a) 输出数组信息
  3. void fill(int[] a,int val) 将指定值填充到数组之中
  4. void sort(int[] a) 对数组进行排序。
  5. int binarySearch(int[] a,int key) 对排序后的数组进行二分法检索指定的值。

6.数组中常见的异常

  1. 数组脚标越界异常(ArrayIndexOutOfBoundsException)
int[] arr = new int[2];
System.out.println(arr[2]);
System.out.println(arr[-1]);
//访问到了数组中的不存在的脚标时发生
  1. 空指针异常(NullPointerException)
int[] arr = null;
System.out.println(arr[0]);
//arr引用没有指向实体,却在操作实体中的元素时。

标签:arr,05,int,System,小白,数组,array,out,秃头
来源: https://blog.csdn.net/javalimou/article/details/111383885