数组
| package array; |
| |
| public class ArrayDemo01 { |
| public static void main(String[] args) { |
| int[] nums01; |
| int nums02[]; |
| |
| nums01 = new int[10]; |
| |
| nums01[0] = 1; |
| nums01[1] = 2; |
| nums01[2] = 3; |
| nums01[3] = 4; |
| nums01[4] = 5; |
| nums01[5] = 6; |
| nums01[6] = 7; |
| nums01[7] = 8; |
| nums01[8] = 9; |
| nums01[9] = 10; |
| |
| |
| int sum = 0; |
| for (int i = 0; i < nums01.length; i++) { |
| sum = sum + nums01[i]; |
| } |
| System.out.println(sum); |
| } |
| } |
数组的初始化
| package array; |
| |
| public class ArrayDemo02 { |
| public static void main(String[] args) { |
| |
| int[] a = {1, 2, 3, 4, 5, 6, 7}; |
| a[0]=10; |
| System.out.println(a[0]); |
| |
| |
| int[] b = new int[10]; |
| b[0] = 13; |
| b[3] = 21; |
| |
| for (int i = 0; i < b.length; i++) { |
| System.out.println(b[i]); |
| } |
| } |
| } |
特点:
- 长度确认,数组一经创建,大小不可改变
- 数组内元素类型必须相同
- 数组内元素可以是任何数据类型,包括基本类型和引用类型
- 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量
- 数组本身就是对象,放在堆中的,数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的
常见数组操作
| package array; |
| |
| public class ArrayDemo03 { |
| public static void main(String[] args) { |
| int[] arrays = {1, 2, 3, 4, 5}; |
| |
| |
| for (int i = 0; i < arrays.length; i++) { |
| System.out.println(arrays[i]); |
| } |
| System.out.println("==============="); |
| |
| |
| int sum = 0; |
| for (int i = 0; i < arrays.length; i++) { |
| sum = sum + arrays[i]; |
| } |
| System.out.println("数组元素和为:" + sum); |
| System.out.println("==============="); |
| |
| |
| int max = arrays[0]; |
| for (int i = 1; i < arrays.length; i++) { |
| if (arrays[i] > max) { |
| max = arrays[i]; |
| } |
| } |
| System.out.println("最大元素为:" + max); |
| System.out.println("==============="); |
| |
| } |
| } |
| package array; |
| |
| public class ArrayDemo04 { |
| public static void main(String[] args) { |
| int[] arrays = {1, 2, 3, 4, 5}; |
| |
| |
| |
| |
| |
| printArray(reverse(arrays)); |
| |
| } |
| |
| |
| public static void printArray(int[] arrays) { |
| for (int i = 0; i < arrays.length; i++) { |
| System.out.println(arrays[i]); |
| } |
| } |
| |
| |
| public static int[] reverse(int[] arrays) { |
| int[] result = new int[arrays.length]; |
| |
| |
| for (int i = 0, j = arrays.length - 1; i < arrays.length; i++, j--) { |
| result[j] = arrays[i]; |
| } |
| |
| return result; |
| } |
| |
| |
| } |
二维数组
| package array; |
| |
| public class ArrayDemo05 { |
| public static void main(String[] args) { |
| int[][] arrays = {{1, 2}, {2, 3}, {3, 4}, {4, 5}}; |
| |
| |
| for (int i = 0; i < arrays.length; i++) { |
| for (int j = 0; j < arrays[i].length; j++) { |
| System.out.println(arrays[i][j]); |
| } |
| } |
| } |
| } |
使用Arrays类的方法
| package array; |
| |
| import java.util.Arrays; |
| |
| public class ArrayDemo06 { |
| public static void main(String[] args) { |
| int[] a = {1, 4, 998, 3628, 77, 0, 58, 330, 21}; |
| System.out.println(a); |
| |
| |
| System.out.println(Arrays.toString(a)); |
| |
| |
| Arrays.sort(a); |
| System.out.println(Arrays.toString(a)); |
| |
| |
| Arrays.fill(a, 2,5,0); |
| System.out.println(Arrays.toString(a)); |
| } |
| } |
使用数组实现冒泡排序
| package array; |
| |
| import java.util.Arrays; |
| |
| public class ArrayDemo07 { |
| |
| |
| |
| |
| |
| public static void main(String[] args) { |
| int[] test = {2, 6, 33, 21, 56, 8, 76, 335, 0}; |
| System.out.println(Arrays.toString(test)); |
| sort(test); |
| System.out.println(Arrays.toString(test)); |
| } |
| |
| |
| public static int[] sort(int[] arrays) { |
| int tmp = 0; |
| |
| for (int i = 0; i < arrays.length - 1; i++) { |
| |
| for (int j = 0; j < arrays.length - 1 - i; j++) { |
| if (arrays[j + 1] < arrays[j]) { |
| tmp = arrays[j]; |
| arrays[j] = arrays[j + 1]; |
| arrays[j + 1] = tmp; |
| } |
| } |
| } |
| return arrays; |
| } |
| } |
稀疏数组
稀疏数组是一种用来压缩数据量的数据结构,一般用于一些特殊的数组,一个数组中大部分元素为0,或者为同一数值时,可以使用稀疏数组来保存该数组,以节省数据量。简而言之,就是记录特殊值,然后剩下大量重复的数据可以消减。通过学习稀疏数组,在处理某些问题的时候可以节省存储空间并加快计算速度。
稀疏数组案例:
| package array; |
| |
| public class ArrayDemo08 { |
| |
| public static void main(String[] args) { |
| |
| int[][] array01 = new int[11][11]; |
| array01[1][2] = 1; |
| array01[2][3] = 2; |
| |
| |
| System.out.println("输出原始数组:"); |
| |
| for (int[] i : array01) { |
| for (int j : i) { |
| System.out.print(j + "\t"); |
| } |
| System.out.println(); |
| } |
| |
| |
| |
| int sum = 0; |
| for (int i = 0; i < array01.length; i++) { |
| for (int j = 0; j < array01[i].length; j++) { |
| if (array01[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 < array01.length; i++) { |
| for (int j = 0; j < array01[i].length; j++) { |
| if (array01[i][j] != 0) { |
| count++; |
| array02[count][0] = i; |
| array02[count][1] = j; |
| array02[count][2] = array01[i][j]; |
| } |
| } |
| } |
| |
| |
| System.out.println("输出稀疏数组:"); |
| |
| for (int[] i : array02) { |
| for (int j : i) { |
| System.out.print(j + "\t"); |
| } |
| 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]; |
| } |
| |
| |
| System.out.println("输出还原后的数组:"); |
| for (int[] i : array03) { |
| for (int j : i) { |
| System.out.print(j + "\t"); |
| } |
| System.out.println(); |
| } |
| } |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!