数组---Java
数组的总结
1. 数组的初始化
package com.wxdStudyJava.array;
public class Demo02 {
public static void main(String[] args) {
//静态初始化:创建 + 赋值
int[] a = {1,2,3,4,5,6,7,8};
System.out.println(a[0]);
//动态初始化:包含默认初始化 String -> NULL int -> 0
int[] b = new int[10];
b[0] = 10;
System.out.println(b[0]);
}
}
关于堆与栈,推荐这篇博客:
2. Arrays类
package com.wxdStudyJava.array;
import java.util.Arrays;
public class ArrayDemo04 {
public static void main(String[] args) {
int a[] = {1,2,3,4,9090,31231,543,21,3,23};
//打印数组元素
System.out.println(Arrays.toString(a));
//数组排序
Arrays.sort(a);
System.out.println(Arrays.toString(a));
//填充数组
Arrays.fill(a,2,4,0);//从2到4填充为0 左闭右开 [2,4)
System.out.println(Arrays.toString(a));
}
}
等等还有一系列的方法可以按住ctrl再点击Arrays来查看
3. 增强for循环和数组简单应用
package com.wxdStudyJava.array;
public class Demo03 {
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
//增强for循环 array.for 省去了数组的下标,适合打印输出
// for (int i : array) {
// System.out.println(i);
// }
printArray(array);
System.out.println();
reverse(array);
}
//打印数组
public static void printArray(int[] array){
for (int i : array) {
System.out.print(i+" ");
}
}
//反转数组
public static void reverse(int[] array){
int[] result = new int[array.length];
for(int i = 0,j = array.length-1; i < array.length; i++,j--){
result[j] = array[i];
}
printArray(result);
}
}
4. 稀疏数组
package com.wxdStudyJava.array;
public class Demo06 {
public static void main(String[] args) {
//1.创建一个二维数组 11*11 0:没有棋子 1:黑棋 2.白棋
int[][] array1 = new int[11][11];
array1[1][2] = 1;
array1[2][3] = 2;
//输出原始数组
for (int[] ints : array1) {
for (int anInt : ints) {
System.out.print(anInt+"\t");
}
System.out.println();
}
//转换为稀疏数组
//1.获取有效值的个数
int sum = 0;
for(int i = 0; i < 11; i++){
for(int j = 0; j < 11; j++){
if(array1[i][j] != 0){
sum++;
}
}
}
//2.创建稀疏数组
int[][] array2 = new int[sum+1][3];
array2[0][0] = 11;
array2[0][1] = 11;
array2[0][2] = sum;
//遍历二维数组,将非0的值存入稀疏数组
int count = 0;
for(int i = 0; i < 11; i++){
for(int j = 0; j < 11; j++){
if(array1[i][j] != 0){
count++;
array2[count][0] = i;
array2[count][1] = j;
array2[count][2] = array1[i][j];
}
}
}
System.out.println("==============");
for (int[] ints : array2) {
for (int anInt : ints) {
System.out.print(anInt+"\t");
}
System.out.println();
}
System.out.println("===============");
//3.还原数组
int[][] array3 = new int[array2[0][0]][array2[0][1]];
for(int i = 1; i < array2.length; i++){
array3[array2[i][0]][array2[i][1]] = array2[i][2];
}
for (int[] ints : array3) {
for (int anInt : ints) {
System.out.print(anInt+"\t");
}
System.out.println();
}
}
}
5. 关于多维数组
因为拥有c语言的基础,多维数组可以逐级分解来理解:
二维数组,即数组中的每个元素都是一个一维数组;
三维数组,即数组中的每个元素都是一个二维数组,而这每个二维数组中又储存了多个一维数组;
以此类推。

浙公网安备 33010602011771号