数组
在我们需要设置许多个类型相同的参数的时候,一个个重复的去使用参数变量去声明去赋值的话会让代码看起来非常的臃肿。这个时候就可以用上我们的数组了。
创建一个数组
创建一个数组首先需要声明一个数组如
int [] nums;
然后再给数组分配需要多少个数据量
nums = new int [10];
//这两步也可以合在一起,像这样
int [] nums = new int [10];
这样就创建了一个拥有十个数据量的数组。但此时我们还没给每个数据进行赋值,所以他们里面的数据是初始量也就是int型的初始量0。
给数组中的元素赋值
只需要输入数组名和在数组中的位置再进行赋值。
同时,数组又分为静态初始化和动态初始化。
静态初始化是创建数组的同时进行赋值,如:
int [] nums = {1,2,3,4,5,6,7,8,9,10}
动态初始化就是我们上面所讲的,创建完数组后对数据一个个进行赋值。
数组的列举是从第零个开始,即nums[0]代表的是数组中的第一个数字,用上面赋值了的数组来说就是nums[0]的值就是1。
在了解了数组的基本概念之后,我们就可以使用一些代码来对数组进行一系列的操作,比如打印数组中的所有数。这里可以用到idea中的arrays.length代码,这个代码的含义是获取此数组的长度。
就比如要求打印出数组,就可以将代码写成
for (int i = 0; i<arrays.length; i++) {
System.out.println(nums[i]);
}
一个这样的for循环就能将我们nums数组中的所有数据打印出来。
当然还远远不止这些应用,还可以求出数组内所有数的和,也可以将数组中的数通过大小区别重新排列。
这些都可以使用for循环轻松的写出来。但是,java中给我们提供了一个功能代码的类,Arrays类。这个类中有许许多多对数组的操作代码,就比如我刚刚提出的两种。
让数组有小到大排列的代码是Arrays.sort(nums);
又比如Arrays.toString(),将所有的数据类型都转换为String类型,使数组内的数据更好的输出。
Arrays类中还有许多功能,再idea界面按住Ctrl用鼠标点击Arrays这个类,就可以查看源代码。
冒泡排序
冒泡排序是一种人尽皆知的排序方法,它是通过比较数组中两个相邻的元素的大小,如果第一个数比第二个数大,就将两个数据的位置来调换一下位置,通过循环来将数组中的数据重新排序。
需要注意的是,两个数据之间的调换不能通过简单的对调来完成,需要一个中间变量来辅助他们完成交换。
所以冒泡排序的代码中需要创建一个中间变量。代码如下
//使用冒泡排序将数组中的数据由小到大重新排序
public static void main(String[] args) {
int a [] = {31,534,541,354,5634,321,54,35,456,4,3524,1563,45}; //随机创造一个数组
int [] sort = sort(a);//调用完我们自己写的排序方法后,返回一个排序后的数组
System.out.println(Arrays.toString(sort));
}
public static int[] sort (int [] array){
int temp = 0;//中间变量
//外层循环,判断我们 这个要走多少次
for (int i = 0; i < array.length-1; i++) {
boolean flag = false;//通过flag标识位减少没有意义的比较
//内层循环,比较两个数,如果第一个数,比第二个数大,则交换位置。
for (int j = 0; j < array.length-i-1 ; j++) {
if (array[j+1]<array[j]){
temp = array[j];
array [j] = array[j+1];
array[j+1] = temp;
flag = true;
}
}
if(flag == false){
break;
}
}
return array;
}
这里我们自己创建了一个方法sort。
需要注意的是,在我们写完创建的方法后,返回main方法去输出数组的时候,需要int一个新的数组来接受返回后的数组。
其中设置布尔值是为了让代码能少进行一次循环。
多重数组
多重数组就是我们在数组的基础上再加一个角标用来多填一些数据。
比如一个a[],这是一个一重数组,如果在后面再加一个判断符[],就变成了一个二重数组,一个单位内能存两个数据量。以此类推。