数组基本要素
-
标识符:数组的名称,用于区分不同的数组
-
数组元素:向数组中存放的数据
-
元素下标:对数组元素进行编号,从0开始,数组中的每个元素都可以通过下标来访问
-
元素类型:数组元素的数据类型
-
格式
标识符[] 数组名称 = new 标识符[长度];
标识符 数组名称[] = new 标识符[长度];
数组定义格式详解:
-
数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
-
[] : 表示数组。
-
数组名字:为定义的数组起个变量名,满足标识符规范,可以使用名字操作数组。
-
new:关键字,创建数组使用的关键字。-数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
-
[长度]:数组的长度,表示数组容器中可以存储多少个元素。
-
注意:数组有定长特性,长度一旦指定,不可更改。
.创建数组
-
静态初始化
//第一种方式 int[] arr = new int[]{1,2,3,4,5,6}; //第二种方式 int[] arr = {1,2,3,4,5,6};
-
动态初始化
int[] arr = new int[6];
数组的访问
-
索引: 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为
数组索引 (index)
,可以通过数组的索引访问到数组中的元素。 -
数组的长度属性: 每个数组都具有长度,而且是固定的,Java中赋予了数组的一个属性,可以获取到数组的长度,语句为:
数组名.length
,属性length的执行结果是数组的长度,int类型结果。由次可以推断出,数组的最大索引值为数组名.length-1
。 -
索引访问数组中的元素:
-
数组名[索引] = 数值,为数组中的元素赋值
int[] arr = new int[6]; arr[0] = 7;
-
变量 = 数组名[索引],获取出数组中的元素
int[] arr = {1,2,3,4,5}; int num = arr[0]; System.out.println(num);//1
-
二维数组
-
格式
//动态初始化二维数组 标识符[] 数组名称 = new 标识符[行][列]; int[][] arr = new int[10][10]; //静态初始化二维数组 int[][] arr = {{1,2,3},{4,5,6},{7,8,9}}; System.out.println(arr[0][1]);//2
数组遍历
-
for循环遍历
int[] arr = {1,2,3,4,5,6}; for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); }//1,2,3,4,5,6
-
增强for循环foreach
int[] arr = new int[]{1,2,3,4,5,6,4,7}; for(int value :arr){ System.out.println(value); }//1,2,3,4,5,6,7
Arrays工具类
1.用法
-
import java.util.Arrays; Arrays.方法;
-
Arrays.fill(数组,值); //填充数组
-
Arrays.sort(数组); //数组排序
-
Arrays.toString(); //将数组中的内容全部打印出来
-
Arrays.equals(); //比较数组元素是否相等
-
Arrays.binarySearch(数组,值); //二分查找法找指定元素的索引值(下标)必须是排好序的
-
Arrays.copeOf() 和Arrays.copeOfRange(数组,长度); //截取数组
-
Arrays.copyOf(数组,长度)//指定数组长度进行拷贝
冒泡排序
int[] arr = new int[]{15, 456, 11, 51, 34151, 31, 5, 82, 1, 5};
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;
}
}
}
System.out.println("从小到大排序后的结果是:");
for (int i = 0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}//1 5 5 11 15 31 51 82 456 34151
选择排序
int[] arr = {15,48,61,12,95,-65,-7,6};
for (int i = 0; i < arr.length - 1; i++) {
int min = i;
for (int j = i; j < arr.length; j++) {
if (arr[min] > arr[j]) {
min = j;
}
}
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
System.out.println("从小到大排序为:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}//-65 -7 6 12 15 48 61 95
二分法查找
int[] arr = {1, 5, 7, 9, 48, 99, 454, 888};
int value = 99;
int index = -1;
int begin = 0;
int end = arr.length - 1;
while (begin <= end) {
int middle = (begin + end) / 2;
if (arr[middle] == value) {
index = middle;
break;
} else if (arr[middle] < value) {
begin = middle + 1;
} else {
end = middle - 1;
}
}
System.out.println(index);//查询结果下标为:5