数组的基本概念及作用:
java数组概念
数组是一组相同数据类型元素的集合(是一个容器),本身是引用数据类型,是一个对象
可以存储基本数据类型,也可以存储引用数据类型,创建时必须指定长度,且长度不可变
数组中每个元素空间是连续的
数组的创建:
数据类型 [] 变量名 例如:int [] a;
数据类型 变量名 [] 例如: int a [];
/*
数组下标/索引
索引特点:
数组索引类型是整数(int)
数组索引从0开始
最大值是数组长度-1
*/
创建一个容量为5的一个数组,使用默认值对其进行初始化
int[] ary0 = new int[5];
创建数组同时将其用指定的值初始化,有几个元素容量就是多少
int[] ary1 = new int[]{1, 2, 3, 4, 5};
方式2还可以简化为下面写法
int[] ary2 = {1, 2, 3, 4,5};
数组的访问与迭代:
(即数组的遍历)
第一种:for循环
int [] b1 = new int []{1,2,3,4,5,6,7};
数组的迭代
for(int i =0;i<b1.length;i++){
System.out.println(b1[i]);
}
第二种:增强for循环
int [] b1 = new int []{1,2,3,4,5,6,7};
for(数组元素的类型 临时变量名字 :数组的名字){
System.out.println(临时变量名字 );
}
即:
for(int x : b1){
System.out.println(x);
}
数组的排序:
冒泡排序
/*
冒泡排序:
每次取出相邻的两个元素进行比较,把较大的向后移动
5,4,3,2,1
经过分析,最多比较了4趟
4,3,2,1,5
3,2,1,4,5
2,1,3,4,5
1,2,3,4,5
*/
int [] a = {5,4,3,2,1};
//控制比较几趟
for (int i = 0; i < a.length-1; i++) {
//控制每趟比较过程
for (int j = 0; j <a.length-1-i; j++) {
if(a[j]>a[j+1]){
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(a));
选择排序
/*
选择排序
假设第一个元素就是最小值/最小值,用第一个位置上的元素与后面每一个位置上的元素进行比较,满足条件,交换位置.
debug调试
设置断点 开始调试的位置
debug模式启动
逐步调试
取消断点
释放程序
*/
int [] a = {5,4,3,2,1};
for (int i = 0; i <a.length-1; i++) {
for (int j = i+1; j <a.length ; j++) {
if(a[i]>a[j]){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
System.out.println(Arrays.toString(a));
二维数组:
二维数组的定义:数组的数组,二维数组的每一个元素是一个一维数组
例如:
int [][]a = {{1,2,3},{1,2,3},{1,2,3}};
二维数组的声明:
int [][] a;
int a2[][];
注意:建议使用第一种,不容易混淆a的数据类型
二维数组的创建:
int [][]a = new int[][]{{1,2,3},{1,2,3},{1,2,3}};
int [] [] b = {{1,2,3},{1,2,3},{1,2,3}};
int [][] c = new int[3][5];
int[][] arr = new int[3][5];
定义了一个整型的二维数组 ,这个二维数组有3个一维数组,每一个一维数组包含5个元素
二维数组的遍历:
int [][] b1 = new int [][]{{1,2},{3,4}};
for(int i =0;i<b1.length;i++){
for(int j =0;j<b1[i].length;j++){
System.out.print(b1[i][j]);
例如:
/*
二维数组:
数组中的每一个元素又是一个数组.
数据类型 [][] 数组名;
数据类型 数组名[][];
new int[3][4];
3--二维数组长度是3
4--表示二维数组中每一个一维数组长度是4
指定长度后创建,会自动对数组进行初始化
{{0,0,0,0},{0,0,0,0},{0,0,0,0}}
*/
int[][] a = {{1,2,3,3},{4,5,6,4},{7,8,9,5}};
//循环二维数组 从二维数组中每次取出一个一维数组
for (int i = 0; i < a.length; i++) {
//遍历每一个一维数组
for (int j = 0; j <a[i].length ; j++) {
System.out.print(a[i][j]+" ");
}
System.out.println();
}