Java基础学习(二)—数组

一、数组的概念

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

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

     格式:

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

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

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

二、数组的初始化

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

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

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

1.动态初始化

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

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

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

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

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

内存图解

          image

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表示一个一维数组的元素个数。

内存图解

          image

2.格式2

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

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

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

image

五、二维数组的常见操作

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

原文地址:https://www.cnblogs.com/yangang2013/p/5390413.html