Java随堂笔记05-Java数组
数组的定义
- 数组是相同类型数据的有序集合
- 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成
- 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问他们
数组初始化
int[] array = {1,2,3,4,5}; //静态初始化
int[] array = new int[10]; //动态初始化,包含默认初始化
int[0]=10;
//...
数组的四个基本特点
- 其长度是确定的。数组一旦被创建,其大小就不可再被改变
- 其元素必须是相同类型的,不允许出现混合类型
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型
- 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量
数组本身就是对象,Java中的对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
多维数组
二维数组
int[4][2] array = {{1,2},{3,4},{5,6},{7,8}};
//遍历二维数组
for(int i = 0;i < array.length;i++){
for(int j = 0;i < array[i].length;j++){
System.out.print(array[i][j] + " ");
}
}
Arrays类
常用方法举例
Arrays.sort(a); //给a数组排序
Arrays.fill(a,0); //用0填充a数组
Arrays.fill(a,2,4,1); //用1填充a数组下标[2,4)
Arrays.toString(a); //打印数组a 即将a数组的所有元素以一个String类型的字符串返回
//...
稀疏数组
public class Dome{
public static void main(String[] args) {
int[][] arrays = new int[11][11];
arrays[1][2]=1;
arrays[2][3]=2;
System.out.println("原数组:");
for (int i = 0; i <arrays.length ; i++) {
for (int j = 0; j <arrays[i].length ; j++) {
System.out.print(arrays[i][j]+"\t");
}
System.out.println();
}
int sum=0;
for (int i = 0; i <arrays.length ; i++) {
for (int j = 0; j <arrays[i].length ; j++) {
if(arrays[i][j]!=0){
sum++;
}
}
}
int[][] arrays2 = new int[sum+1][3];
arrays2[0][0]=arrays.length;
arrays2[0][1]=arrays.length;
arrays2[0][2]=sum;
int count = 0;
for (int i = 0; i <arrays.length ; i++) {
for (int j = 0; j <arrays[i].length ; j++) {
if(arrays[i][j]!=0){
count++;
arrays2[count][0]=i;
arrays2[count][1]=j;
arrays2[count][2]=arrays[i][j];
}
}
}
System.out.println("====================");
System.out.println("稀疏数组:");
for (int i = 0; i <arrays2.length ; i++) {
for (int j = 0; j <arrays2[i].length ; j++) {
System.out.print(arrays2[i][j]+"\t");
}
System.out.println();
}
System.out.println("===========================");
System.out.println("复原后:");
int[][] arrays3 = new int[arrays2[0][0]][arrays2[0][1]];
for (int i = 1; i < arrays2.length ; i++) {
arrays3[arrays2[i][0]][arrays2[i][1]] = arrays2[i][2];
}
for (int i = 0; i <arrays3.length ; i++) {
for (int j = 0; j <arrays3[i].length ; j++) {
System.out.print(arrays3[i][j]+"\t");
}
System.out.println();
}
}
}
结果: