定义与初始化
数组是相同类型数据的有序集合
每一个数据称作一个数组元素,每个数组元素可以通过下标来访问
package com.zlsaxx.Array;
public class ArrayDemo01 {
public static void main(String[] args) {
int[] arr1; //首选方法
int arr2[];
//静态初始化 创建+赋值
int[] arr3 = {1,2,3,4,5,6,7,8,9};
//动态初始化 默认初始化+赋值
arr1 = new int[10]; //arr1中可以存储10个int型数据
for(int i = 0;i < 10;i ++){
arr1[i] = i;
}
for(int i = 0;i < 10;i ++){
System.out.println("arr1[" + i + "]=" + arr1[i]);
}
}
}
内存分析
跳转大佬文章
Java内存分析
定义数组时的内存分析
使用
遍历数组与求和
package com.zlsaxx.Array;
public class ArrayDemo02 {
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+=arrays[i];
}
System.out.println("sum=" + sum);
}
}
运行结果:
增强版
//增强型for循环
//arrays.for
for (int array : arrays) {
}
多维数组
int[][] array = {{1,2},{2,3},{3,4},{4,5}};
Arrays类
数组工具类:java.util.Arrays
public static void main(String[] args) {
int[] a = {1,8,5,4,6,7,2,9,3,0};
System.out.println(Arrays.toString(a)); //打印数组
Arrays.sort(a); //排序
System.out.println(Arrays.toString(a));
}
更多的可以在JDK帮助文档
中查找
稀疏数组
当一个数组中大部分元素为0,或者为同一值得数组时,可以使用稀疏数组来保存该数组。
处理方式
- 记录数组有几行几列,有几个不同的值
- 把具有不同值的元素及其行列值记录在一个小规模数组中从而缩小程序规模
代码实现
package com.zlsaxx.Array;
public class ArrayDemo04 {
public static void main(String[] args) {
int[][] array1 = new int[7][9];
array1[1][2] = 492;
array1[5][7] = 861;
System.out.println("原始数组:");
for (int[] ints : array1) {
for (int anInt : ints) {
System.out.print(anInt + "\t");
}
System.out.println();
}
int cnt1 = 0;
for(int i = 0; i < 7; i ++){
for(int j = 0; j < 9; j ++){
if (array1[i][j] != 0){
cnt1 ++;
}
}
}
System.out.println("有效值的个数:" + cnt1);
System.out.println("======================================");
int[][] array2 = new int[cnt1+1][3];
array2[0][0] = 7;
array2[0][1] = 9;
array2[0][2] = cnt1;
int cnt2 = 0;
for (int i = 0; i < array1.length; i ++){
for(int j = 0; j < array1[i].length; j ++){
if(array1[i][j] != 0){
cnt2 ++;
array2[cnt2][0] = i;
array2[cnt2][1] = j;
array2[cnt2][2] = array1[i][j];
}
}
}
System.out.println("稀疏数组:");
for(int i = 0; i < array2.length; i++){
System.out.println(array2[i][0] + "\t"
+ array2[i][1] + "\t"
+ array2[i][2]);
}
System.out.println("======================================");
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();
}
}
}
运行结果: