Java学习笔记(三):数组

数组声明

java语言中,数组是一种最简单的复合数据类型。数组是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和下标来唯一地确定数组中的元素。

int arr1[];
int[] arr2;

两种写法都可以。

初始化

动态初始化

使用new来为数组分配内存空间:

int[] arr;
arr = new int[10];

需要注意的是分配内存空间时要指定数组的数量,同时数组中的每一个元素都会被设置为对应类型的默认值。

内存结构

Java学习笔记(三):数组

静态初始化

相对于上面的初始化,还有一种初始化的方式可以在初始化时就指定好数组的内容:

int[] arr = {0,1,2,3,4,5,6,7,8,9};//静态初始化必须在声明时进行
arr = {9,8,7,6,5,4,3,2,1,0};//这里不是声明编译器会报错

动态初始化和静态初始化在使用和内存结构上都没有区别。

使用数组

数组的使用时非常广的,这里写一个冒泡排序的例子来展示一下数组的使用:

 package org.hammerc.study;

 public class Main
{
public static void main(String[] args)
{
int[] arr = {100, 187, 22, 9, 199, 500, 1, 134};
for (int i = 0; i < arr.length - 1; i++)
{
for (int j = i + 1; j < arr.length; j++)
{
if (arr[i] < arr[j])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
System.out.print("第" + (i + 1) + "次排序:");
for (int j = 0; j < arr.length; j++)
{
System.out.print(arr[j] + " ");
}
System.out.println("");
}
for (int i = 0; i < arr.length; i++)
{
System.out.println(arr[i]);
}
}
}

降序排序。

二维及多维数组

声明

int arr1[][];
int[] arr2[];
int[][] arr3;

和一维数组一样,数组声明以后在内存中没有分配具体的存储空间,也没有设定数组的长度。

动态初始化

int[][] arr;
arr = new int[2][3];

数组所有元素都按类型的默认值来设定。

静态初始化

int[][] m = {
{1,2,3},
{2,3,4}
};

和1维数组使用一致;

使用

 package org.hammerc.study;

 public class Main
{
public static void main(String[] args)
{
int[][] m = {
{1,2,3,1},
{1,3},
{3,4,2}
};
int sum = 0;
for(int i = 0;i < m.length;i++){ //循环第一维下标
sum += m[i].length; //第二维的长度相加
}
}
}

需要注意的是Java允许多维数组的第二维的数组的长度不一样,如上面的例子。

上一篇:记得初学JS时候练个九九乘法表都写的要死要活


下一篇:从零开始一个http服务器(五)-模拟cgi