四、数组——小白秃头史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中的常用方法
- boolean equals(int[] a,int[] b) 判断两个数组是否相等
- String toString(int[] a) 输出数组信息
- void fill(int[] a,int val) 将指定值填充到数组之中
- void sort(int[] a) 对数组进行排序。
- int binarySearch(int[] a,int key) 对排序后的数组进行二分法检索指定的值。
6.数组中常见的异常
- 数组脚标越界异常(ArrayIndexOutOfBoundsException)
int[] arr = new int[2];
System.out.println(arr[2]);
System.out.println(arr[-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