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) 内存分析
![image.png](https://cdn.nlark.com/yuque/0/2021/png/12881754/1622365996943-0813680f-4e33-4ace-9290-2e8a3ab71fe3.png#clientId=u665660f6-df33-4&from=paste&height=276&id=udca58e6f&margin=%5Bobject%20Object%5D&name=image.png&originHeight=552&originWidth=1475&originalType=binary&size=346491&status=done&style=none&taskId=ud3c28486-97ec-45eb-abb2-cfa42b5d33b&width=737.5)<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/12881754/1622366354052-b858ce4b-8357-4a7d-99cc-5eeaf3c199d1.png#clientId=u665660f6-df33-4&from=paste&height=311&id=u009aee4a&margin=%5Bobject%20Object%5D&name=image.png&originHeight=622&originWidth=1117&originalType=binary&size=84862&status=done&style=none&taskId=u8d85b89c-ebf1-4137-85c1-c61e7662573&width=558.5)
<a name="h3hp7"></a>
#### 2) 三种初始化
```java
package com.array;
public class Demo02 {
public static void main(String[] args) {
// 1、静态初始化: 创建 + 赋值
int [] a = {1,2,3,4,5,6,7,8,9};
// 2、动态初始化 包含默认初始化值是0
int [] b = new int[2];
b[0] = 1;
System.out.println(b[0]); // 1
System.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) 代码示例
```java
int [] [] 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 ```