史迪奇的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}};