Java基础学习(二)—数组

一、数组的概念

定义: 数组是存储同一种数据类型的多个元素的集合。

数组既可以存储基本数据类型,也可以存储引用数据类型。

格式:

格式1: 数据类型[] 数组名;

格式2: 数据类型 数组名[];

这样定义完了,但是数组中是没有元素的,我们必须对数组进行初始化。

二、数组的初始化

Java数组必须先初始化,然后才能使用。所谓的初始化就是为数组的元素分配内存空间,并为每个数组元素赋值。

动态初始化: 初始化时只指定数组的长度,由系统为数组分配初始值。

静态初始化: 初始化时指定每个数组元素的初始值,由系统决定数组的长度。

1.动态初始化

格式: 数据类型[] 数组名 = new 数据类型[数组长度];

数组长度就是数组元素中的个数。

		//定义一个int类型数组,这个数组中可以存放3个int类型的值
int[] arr = new int[3];

Java为了提高程序的效率,对数据进行了不同空间的分配,具体划分为5个内存空间,栈(存放的是局部变量)、堆(存放的是所有new出来的东西)、方法区(以后详细讲)、本地方法区(和系统相关)、寄存器(CPU使用)。

局部变量: 在方法定义中或方法声明上的变量。

内存图解

Java基础学习(二)—数组

2.静态初始化

格式: 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};

简化: 数组类型[] 数组名 = {元素1,元素2,...};

		//定义一个int类型数组,并且存放了三个值5,10,15
int[] arr = new int[]{5,10,15};
//还可以这样写
int[] arr2 = {5,10,15};

三、一维数组的常见操作

1.数组的遍历

	public static void main(String[] args){
int[] arr = {1,2,3,4,5}; for(int i = 0;i < arr.length;i++){
System.out.println(arr[i]);
}
}

2.获取数组的最值

public class ArrayDemo{

	public static void main(String[] args){

		int[] arr = {33,22,11,55,66,77,10};

		System.out.println("Max: " + getMax(arr));
System.out.println("Min: " + getMin(arr));
} //获取数组的最大值
public static int getMax(int[] arr){
int max = arr[0]; for(int i = 0;i < arr.length;i++){
max = max > arr[i] ? max : arr[i];
}
return max;
} //获取数组的最小值
public static int getMin(int[] arr){
int min = arr[0]; for(int i = 0;i < arr.length;i++){
min = min < arr[i] ? min : arr[i];
}
return min;
}
}

3.从Array中创建ArrayList

		String[] arr = {"a","b","c","d"};
ArrayList<String> list = new ArrayList<String>(Arrays.asList(arr));
System.out.println(list); //[a, b, c, d]

为什么要将Array转换成ArrayList呢?可能是因为ArrayList是动态链表,我们可以更方便地对ArrayList进行增删改,我们并不需要循环Array将每一个元素加入到ArrayList中,用以上的代码即可简单实现转换。

4.检查数组是否包含某一个值

		String[] arr = {"a","b","c","d"};
boolean isContain = Arrays.asList(arr).contains("b");
System.out.println(isContain); //true

先使用Arrays.asList()将Array转换成List<String>,这样就可以用动态链表的contains函数来判断元素是否包含在链表中。

5.数组的逆序

public class ArrayDemo{

	public static void main(String[] args){

		int[] arr = {11,22,33,44,55,66,77};

		reverse(arr);

		for(int i = 0;i < arr.length;i++){
if( i == arr.length - 1){
System.out.print(arr[i]);
}
else{
System.out.print(arr[i] + ",");
}
}
//结果: 77,66,55,44,33,22,11
} //数组的逆序
public static void reverse(int[] arr){
for(int i = 0;i < arr.length / 2;i++){
int temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
}
}

四、二维数组

1.格式1

数据类型[][] 变量名 = new 数据类型[m][n];

注意:

(1)m表示这个二维数组有多少个一维数组。

(2)n表示一个一维数组的元素个数。

内存图解

Java基础学习(二)—数组

2.格式2

数据类型[][] 变量名 = new 数据类型[][]{ {元素...},{元素...},...,{元素} };

简化版: 数据类型[][] 变量名 = { {元素...},{元素...},...,{元素} };

eg: int[][] arr{ {1,2,3},{4,5},{6}};

Java基础学习(二)—数组

五、二维数组的常见操作

1.二维数组的遍历

	public static void main(String[] args){

		int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};

		for(int i = 0;i < arr.length;i++){

			for(int j = 0;j < arr[i].length;j++){

				System.out.print(arr[i][j] + " ");
} System.out.println();
}
}

结果:

1 2 3
     4 5 6

7 8 9

上一篇:ThinkPhp5.0模型验证规则


下一篇:原生JS:Function对象(apply、call、bind)详解