JavaSE数组
目标
数组的基本概念及作用
- 数组是相同数据类型元素的集合(一个数组中可以存储多个值)
- 数组本身是引用数据类型,即对象。但是数组可以存储基本数据类型,也可以存储引用数据类型,取决于声明数组时,可以存储的数据类型。
数组的创建
- 数组的声明的两种方式
•数据类型 [ ] 数组名字 例如: int [ ] a;
•数据类型 数组的名字 [ ] 例如: int a [ ];
注意:
在Java语言中两种声明方法没有任何区别,但是建议大家用第一种,避免混淆a的数据类型。
- 数组创建的三种方式:
- 声明数组的同时,根据指定的长度分配内存,但数组中元素值都为默认的初始化值
int[] a = new int[5];//数组创建 必须指定长度
//System.out.println(a);//[I@1b6d3586默认输出是数组在内存中地址
System.out.println(Arrays.toString(a));//Arrays.toString(a)将数组中的元素拼接位一个字符串表示
char[] c = new char[5];
System.out.println(Arrays.toString(c));
float[] f = new float[5];
System.out.println(Arrays.toString(f));
String[] s = new String[5];
System.out.println(Arrays.toString(s));
- 声明数组并分配内存,同时将其初始化
int [] x = new int[]{1,2,3,4,5,6,7};
System.out.println(Arrays.toString(x));
- 与前一种方式相同,仅仅只是语法相对简略
int[] y = {1,2,3,4,5,6,7};
System.out.println(Arrays.toString(y));
- 从另一个角度,数组创建可以分为动态和静态两种
动态创建数组(没有为元素赋值,可以结合for循环进行赋值)
char[] chAry = new char[10];
静态创建数组,在创建的时候,即为每个元素赋初值
int[] ary1 = new int[]{1, 2, 3, 4, 5};
- 数组的长度:length属性
int [] b1 = new int []{1,2,3,4,5,6,7};System.out.println(b1.length);
数组的访问与迭代
-
数组元素的访问:
数组名字[索引] 例如:a[0],a[1]; -
注意:
数组的索引从0开始
索引的数据类型是整型
索引最大值和数组长度始终差1 -
数组迭代的两种方式
第一种:for循环
第二种:增强for循环
//for循环
int[] a = {1,2,3,4,5};
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
/*
增强for循环
a: 需要遍历的数组
int t: 声明一个变量
每循环一次,从数组中取出一个元素,赋给变量t,进入到循环体,重复操作,直到数组中元素遍历完成.
*/
for(int t : a){
System.out.println(t);
}
数组排序
- 冒泡排序
每次取出相邻的两个元素比较,较大的值向后移动。
int[ ] a = {5,4,3,2,1};
5,4,3,2,1
4 3 2 1 5
3 2 1 4 5
2 1 3 4 5
1 2 3 4 5
int [] b = {45,56,12,32,0};
for (int i = 0; i < b.length-1; i++) {//控制循环次数
for (int j = 0; j < b.length-1-i; j++) {//相邻元素比较
if(b[j]<b[j+1]){
int m = b[j];
b[j] = b[j+1];
b[j+1] = m;
}
}
}
System.out.println(Arrays.toString(b));
- 选择排序
假设第一个元素最大值,与之后的每一个位置上的元素进行比较,满足条件交换位置。
int [] c = {45,89,13,47,2};
for(int i = 0;i < c.length-1;i++){//控制循环次数
for (int j = i+1; j < c.length ; j++) {
if(c[i]<c[j]){
int n = c[i];
c[i] = c[j];
c[j] = n;
}
}
}
System.out.println(Arrays.toString(c));
- debug调试
1.设置断点 开始调试程序的位置
2.启动时使用debug模式运行程序
3.调试按键
二维数组
- 二维数组的定义
数组的数组-----二维数组的每一个元素是一个一维数组
例如:
int [ ][ ]a = {{1,2,3},{1,2,3},{1,2,3}};
- 二维数组的声明
int [ ] [ ] a;
int a2[ ] [ ];
注意:建议用第一种,不容易混淆a的数据类型
- 数组创建
int[][]a = new int[3][4];
int[][]b = new int[][]{{101,80,70,60},{102,80,70,60},{103,80,70,60}};
int[][]c = {{101,80,70,60},{102,80,70,60},{103,80,70,60}};
-
int[ ][ ] arr = new int[3][5];
定义了一个整型的二维数组 ,这个二维数组有3个一维数组,每一个一维数组包含5个元素. -
二维数组的迭代
int[][] a = new int[][]{{10010,50,30,90},{10011,70,80,100},{10012,86,89,99}};
//二维数组遍历
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();
}