1、数组概述
1)数组的定义
public class Demo01 { public static void main(String[] args) { // 1、 声明数组 // 2、创建数组 // 3、赋值 int [] nums; nums = new int[10]; } }
<a name="WRwSr"></a>### 3、数组使用<a name="QX220"></a>#### 1) 内存分析<br /><a name="h3hp7"></a>#### 2) 三种初始化```javapackage com.array;public class Demo02 {public static void main(String[] args) {// 1、静态初始化: 创建 + 赋值int [] a = {1,2,3,4,5,6,7,8,9};// 2、动态初始化 包含默认初始化值是0int [] b = new int[2];b[0] = 1;System.out.println(b[0]); // 1System.out.println(b[1]); // 0//数组的默认初始化/*数组是引用类型,元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化*/}}
3) 数组的四个特点
4) 数组边界
5)数组使用
- for-each循环
- 数组作方法入参
- 数组作返回值 ```java package com.array;
import java.util.Arrays;
public class Demo03 { public static void main(String[] args) { int[] nums = {1,2,3,4,5};
// for (int array:nums) { // System.out.println(array); // } // printArrays(nums); int [] reverArrays = reverseArrays(nums); for (int item: reverArrays) { System.out.println(item); } } // 数组作为方法入参 public static void printArrays(int[] arrays){ for(int i = 0; i < arrays.length; i ++){ System.out.println(arrays[i]); } } // 数组作为返回值 反转数组 public static int [] reverseArrays(int [] arrays){ int [] result = new int [arrays.length]; for(int i = 0,j = arrays.length -1; i < arrays.length; i ++,j —){ result [i] = arrays[j]; } return result; }
}
<a name="AR60v"></a>### 4、多维数组<a name="lqSrd"></a>#### 1) 代码示例```javaint [] [] arraysTwo = {{1,2},{3,4}};for (int [] itemArray:arraysTwo) {for (int item:itemArray) {System.out.println(item);}}
5、Arrays 类
1) 定义
2) 冒泡排序

package com.array;import java.util.Arrays;public class Demo04 {public static void main(String[] args) {int [] arrays = {1,2,3,4,5};System.out.println(Arrays.toString(arrays));}}#####################################package com.array;import java.util.Arrays;public class Demo04 {public static void main(String[] args) {int [] arrays = {1,2,3,4,5};int [] srotArrays = sortArrays(arrays);for (int item:srotArrays) {System.out.println(item);}}public static int [] sortArrays(int [] arrays){for(int i = 0;i < arrays.length-1; i ++){int temp = 0;boolean flag = false;for (int j = 0; j< arrays.length -1-i; j ++){if (arrays[j+1] > arrays[j]){temp = arrays[j];arrays[j] = arrays[j+1];arrays[j+1] = temp;flag = true;}}if(!flag){break;}}return arrays;}}
6、稀疏数组
public class Demo05 { public static void main(String[] args) { // 1、创建一个二维数组,11*11, 0:没有棋子 1-黑棋 2-白棋 int [] [] originArrays = new int[11][11]; originArrays[1][2] = 1; originArrays[2][3] = 2; // 2、输出原始数组 for (int[] originArray : originArrays) { for (int item : originArray) { System.out.print(item + “\t”); } System.out.println(); } // 3、转换稀疏数组保存 // 获取有效值个数 int sum = 0; for(int i = 0; i < originArrays.length; i ++ ){ for (int j = 0; j < originArrays.length; j++) { if(originArrays[i][j] != 0){ sum ++; } } } System.out.println(“有效值个数:” + sum); // 创建稀疏数组的数组 int [][] array02 = new int[sum+1][3]; array02[0][0] = 11; array02[0][1] = 11; array02[0][2] = sum;
int count = 0;// 读取稀疏数组for (int i = 0; i < originArrays.length; i++) {for (int j = 0; j < originArrays.length; j++) {if(originArrays[i][j] != 0){count ++ ;array02[count][0] = i;array02[count][1] = j;array02[count][2] = originArrays[i][j];}}}System.out.println("##############################");for (int [] array:array02) {for (int item:array) {System.out.print(item + "\t");}System.out.println();}System.out.println("###############################");// 还原int [][] array03 = new int[array02[0][0]][array02[0][1]];for (int i = 1; i < array02.length; i++) {array03[array02[i][0]][array02[i][1]] = array02[i][2];}for (int [] array:array03) {for (int item:array) {System.out.print(item + "\t");}System.out.println();}}
}
#
F:\my-learning\ES\jdk1.8.0_251\bin\java.exe “-javaagent:F:\java\IntelliJ IDEA 2021.1\lib\idea_rt.jar=53029:F:\java\IntelliJ IDEA 2021.1\bin” -Dfile.encoding=UTF-8 -classpath F:\my-learning\ES\jdk1.8.0_251\jre\lib\charsets.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\deploy.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\ext\access-bridge-64.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\ext\cldrdata.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\ext\dnsns.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\ext\jaccess.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\ext\jfxrt.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\ext\localedata.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\ext\nashorn.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\ext\sunec.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\ext\sunjce_provider.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\ext\sunmscapi.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\ext\sunpkcs11.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\ext\zipfs.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\javaws.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\jce.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\jfr.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\jfxswt.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\jsse.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\management-agent.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\plugin.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\resources.jar;F:\my-learning\ES\jdk1.8.0_251\jre\lib\rt.jar;F:\javacode\JavaSE\out\production\基础语法;F:\javacode\JavaSE\lib\kotlin-stdlib.jar;F:\javacode\JavaSE\lib\kotlin-reflect.jar;F:\javacode\JavaSE\lib\kotlin-test.jar;F:\javacode\JavaSE\lib\kotlin-stdlib-jdk7.jar;F:\javacode\JavaSE\lib\kotlin-stdlib-jdk8.jar com.array.Demo05
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
有效值个数:2
#
11 11 2
1 2 1
2 3 2
#
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
进程已结束,退出代码为 0 ```
```java
package com.array;