2021-08-14

史迪奇的java之旅 | day04 数组

数组指的是一组数据的集合数组中每个数据被称为元素,且每个元素必须是相同的数据类型。数组分为一维数组和多维数组,现在先了解简单的一维数组。

一、数组的基本语法结构+

数组类型[] 数组名=new 数组类型[数组长度];
数组类型[] 数组名=new 数组类型[]{数组元素0,数组元素1.....};
数组类型[] 数组名={数组元素0,数组元素1....};

这是常用的三种定义方式,第一种方式定义了数组的长度,而第二种和第三种方式则定义了数组的变量并完成了初始化。
注意:数组中每个元素都有个索引,索引最小的值是0,最大的索引是数组长度-1,在java中为了方便获取数组长度设置了一个属性length,即数组元素的个数。

二、数组的常见操作

2.1 数组的遍历

在操作数组时 ,经常需要依此访问数组中的每个元素,这种操作称作数组的遍历。接下来我们来了解通过for循环来了解数组的遍历。
Example1:

public class Hello{
	public static void main(String[] args){
		int[] arr={1,2,3,4,5};
		//使用for循环遍历数组中的元素
		for(int i=0;i<arr.length;i++){
			System.out.println(arr[i]);
}
	}
}

该例子中定义了一个长度为5的数组,数组角标范围为0~4,然后通过for循环中i的值从1变化到4,因此可以作为索引,然后依次去访问。

2.2 数组的最值

Example 2:

public class Hello{
	public static void main(String[] args){
		int[] arr={4,1,6,3,9,8};
		int max=arr[0];
		for(int i=1;i<arr.length;i++){
			if(arr[i]>max){
				max=arr[i];
			}
		}
			System.out.println("数组中最大的值:"+max);
	}
}

这里定义了一格初始值max,并把第一个arr[0]赋给它,然后通过for循环进行遍历,只要碰到比max的值就把改制max。

2.3 数组排序

数组的数据在很多情况下都需要排序, 最常见到就是冒泡排序,冒泡排序是指不断比较数组中相邻的两个元素,较小者向上浮,较大者往下沉,整个过程与水中气泡上升的原理相似。
实现过程原理:
①比较相邻的元素。如果第一个比第二个大,就交换他们两个。 (从小到大排序)

②对每一对相邻元素做相同的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

③针对所有的元素重复以上的步骤,除了最后一个。

④持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

然后我们通过一个案列来了解冒泡排序如何工作:

public class sorts{
	public static void main(String[] args){
		int[] arr= {9,8,3,5,4};
		//冒泡排序前线打印数组元素;
		for(int i=0;i<arr.length;i++) {
			System.out.print(arr[i]+",");
		}
		System.out.println();//用于换行;
		//进行冒泡排序,外层循环定义需要比较的轮数(两数对比,要比较n-1两轮)
		for(int i=1;i<arr.length;i++) {
			//内层循环定义第i轮需要比较2个数
			for(int j=0;j<arr.length-i;j++) {
				//比较相邻元素,然后元素交换
				if(arr[j]>arr[j+1]) {
					int temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}
			}
		}
		//完成冒泡排序之后再次打印数组元素;
		for(int i=0;i<arr.length;i++) {
			System.out.print(arr[i]+",");
		}
	}
}

第二步通过一个for的嵌套循环实现了冒泡排序,其中,外层循环是用来控制进行多少轮比较,每一轮可以确定一个元素的位置,然后最后一个元素是不用进行比较的,因此外层循环的次数是arr.length-1,内层循环的循环变量用来控制每次循环时进行比较的两个数,因为变量是在做自增操作的,所以可以实现两个变量的依此比较,然后把较小的值移到前面,从而实现排序。

三、多维数组

为了实现在数组储存不同类型的数据,也可以理解成在数组中嵌套数组,从而衍生出多维数组,最常见的是二维数组。基本的语法格式如下:

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

上面这种形式定义了3*4的二维数组,这个数组长度为3,我们可以把他看成3个int[ ]类型的一维数组,每个一维数组中的元素又是一个长度为4的一维数组。
还有一种定义方式,如下:

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

这个是指定二维数组的长度,不确定每个数组的元素个数。
第三种方式是直接用{ }来初始化赋值,其基本语法格式如下:

int[][] arr={{1,2,3},{6,4,5}{8,4,5}};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值