1、二维数组
(1)Java中操作多位数组的语法与一维数组类似。在实际应用中,三维以上的数组很少使用,主要使用二维数组。
(2)二维数组是一个元素为一维数组的一维数组。
(3)从语法上Java支持多维数组,但从内存分配原理的角度看,Java中只有一维数组,没有多维数组。或者说,从表面上是多维数组,实质上都是一维数组。
(4)定义二维数组的语法格式如下:
数据类型[][] 数组名;
或者:
数据类型 数组名[][];
--->数据类型为数组元素的类型。
--->“[][]”用于表明定义了一个二维数组,通过多个下标进行数据访问。
--->“数组名[下标]”表示二维数组里的一个元素,这个元素还是一个一维数组。
--->“数组名[下标][下标]”表示二维数组里的一个元素(一维数组)里的一个元素。
2、二维数组的使用
(1)初始化二维数组
二维数组初始化的语法格式如下:
数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2,···,元素n},{元素1,元素2,···,元素n},···,{元素1,元素2,···,元素n}};
或者:
数据类型[][] 数组名 = {{元素1,元素2,···,元素n},{元素1,元素2,···,元素n},···,{元素1,元素2,···,元素n}};
(2)二维数组的遍历
for(int i = 0;i<数组名.length;i++){
for(int j = 0;j<数组名[i].length;j++){
System.out.println(数组名[i][j]);
}
}
冒泡排序
package com.bdqn.study08;
public class Study02 {
public static void main(String[] args) {
// 冒泡排序:每次比较相邻两数,小的交换到前面,每轮结束后大的交换到最后
int[] nums = { 37, 75, 29, 74, 52, 66 };
System.out.println("数组排序前:");
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i] + " ");
}
System.out.println();
// 外层循环控制轮数
for (int i = 0; i < nums.length - 1; i++) {
// 内层循环控制每一轮比较的次数
for (int j = 0; j < nums.length - 1 - i; j++) {
if (nums[j] < nums[j + 1]) {
// 比较相邻两个元素大小,将元素值大的交换到后面
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
// 遍历数组元素
System.out.println("数组排序后:");
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i] + " ");
}
System.out.println();
}
}
Arrays类的使用
package com.bdqn.demo05;
import java.util.Arrays;
public class ArraysDemo02 {
public static void main(String[] args) {
int[] nums1 = {11,22,33,44,55};
int[] nums2 = {11,22,33,55,44};
//boolean equals(数组名1,数组名2):比较两个数组中的元素是否完全一致(比较对应下面上的元素是否相同),如果所有元素值都相同,返回true,否则返回false
boolean result1 =Arrays.equals(nums1, nums2);
System.out.println("两个数组完全相同:"+result1);
//String toString(数组名):将数组转换成字符串输出
int[] nums3 = {12,25,96,43,11,56};
String result2 =Arrays.toString(nums3);
System.out.println(result2);//"[12, 25, 96, 43, 11, 56]"
//void fill(数组名,数据):将数组中所有的元素值替换为你指定数据
String[] strs ={"hello","java,","html","js"};
Arrays.fill(strs, "qwert");
System.out.println(Arrays.toString(strs));//"[qwert, qwert, qwert, qwert]"
//数据类型[] copyOf(数组名,长度):赋值指定数组中指定长度的元素,生成一个新的对应类型的数组,当复制的长度小于等于被复制数组长度的时候,取数组里的元素,如果复制的长度大于被复制的数组长度,不够的元素用默认值补充
char[] chs = {'q','w','e','r','t','y','u'};
char[] copyChs=Arrays.copyOf(chs, 9);
System.out.println(Arrays.toString(copyChs));
//数据类型[] copyOfRange(数组名,起始下标,结束下标):复制指定数组中起始下标到结束下标之间的元素,注意,包括起始下标的元素,不包括结束下标的元素
char[] copyChs2=Arrays.copyOfRange(chs, 2, 4);
System.out.println(Arrays.toString(copyChs2));
//int binarySearch(int[] a,int key)使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。必须在进行此调用之前对数组进行排序(通过 sort(int[]) 方法)。如果没有对数组进行排序,则结果是不确定的。如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。
//如果你要查找的元素值不在数组中,会返回一个负值
int[] nums4 = {11,56,76,9,32,42,9,55};
Arrays.sort(nums4);
System.out.println(Arrays.toString(nums4));
int index =Arrays.binarySearch(nums4, 11);
System.out.println("你要找的元素的下标:"+index);
}
}