一、什么是数组?
数组是相同类型数据据的有序集合。每一个数据都是数组的一个元素,每一个数据都可以通过下标来进行访问。
数组的特点:
二、数组的声明和创建
声明:
首先必须声明数组变量,才能在程序中使用数组。声明语法:DataType[ ] arrayRefVar or DataType arrayRefVar[ ]。其中,前一种声明方法为首选方法。
创建:
Java中使用new操作符来创建数组,语法:
data Type[ ] arrayRefVar=new dataType [ arraysize];
*数组的索引是从0开始的。
*下标的合法区间:[0,arraysize-1],越界则程序报错。
Exc:计算一个数组中元素的总和值;
public static void main(String[] args) {
int[]nums=new int[4]; //定义和创建数组语句
nums[0]=2;
nums[1]=4;
nums[2]=6;
nums[3]=8;
int sum=0; //通过编号给数组赋值
for(int i=0;i< nums.length;i++){
sum+=nums[i];
}
System.out.println(sum);
}
三、初始化及内存分析
内存分析:Java的内存可分为:栈、堆、方法区。各部分作用如下表:
**当我们声明一个数组时,内存会先在栈中创建一个数组对象,此时的数组只是空有其名;当我们创建数组时,内存才会在堆中分配出相应大小的内存来存储数据。
初始化:对数组的初始化可分为静态初始化和动态初始化。具体区别如下方代码可见。
public static void main(String[] args) {
//动态初始化
int[] nums = new int[4];
nums[0] = 2;
nums[1] = 4;
nums[2] = 6;
nums[3] = 8;
//静态初始化
int nums1[]={2,4,6,8};
System.out.println(nums1[0]);
}
四、数组的使用
普通for循环:如前面程序中求数组总和的方法,即为数组普通for循环的应用。
For-Each循环:只适用于数组元素的输出,不应用数组下标,可节约打印时间。
eg:
public static void main(String[] args) {
int nums1[]={2,4,6,8};
for (int array : nums1) { //确定所打印的数组
System.out.println(array); //打印数组中的元素
}
}
数组作方法入参:
eg:定义一个输出数组的方法,并输出数组。
public static void main(String[] args) {
int nums1[] = {1,2,3,4,5};
printArray(nums1); //方法的引用
}
public static void printArray (int[] arrays){ //定义输出数组的方法
for (int i = 0; i < arrays.length; i++) {
System.out.println(arrays[i]);
}
}
数组作为返回值:
eg:将一个数组中的元素反向输出
public static void main(String[] args) {
int nums[] = {1,2,3,4,5};
int result[]= replay(nums);
printArray(result);
}
public static void printArray (int[] arrays){
for (int i = 0; i < arrays.length; i++) {
System.out.println(arrays[i]);
}
}
public static int[] replay(int[] arrays){
int[] result=new int[arrays.length];
for (int i = 0, j= result.length-1;i < arrays.length; i++,j--) {
result[i]=arrays[j];
}
return result;
}
五、多维数组(以二维数组为例)
多维数组可以理解为是数组的嵌套,即在一维数组的基础上嵌套了一个新的数组。Java中多维数组的应用不多,因此此部分仅了解即可。
定义二维数组:
int[][]arrays={{1,2},{2,3},{3,4},{4,5}};
六、冒泡排序
冒泡排序是Java八大排序中最著名的一种排序方式,实质就是对一组数据进行循环的比较,较大的数排在后面,最终排除大小顺序。下面是对数组内数据的排序代码:
public static void main(String[] args) {
int[] nums = {12, 5, 8, 9, 6, 3, 2};
int[] sort = PAI(nums);
System.out.println(Arrays.toString(sort));
}
public static int[] PAI(int[] arrays) {
// 定义一个排序函数
int temp = 0; //定义一个临时变量,用于数据的交换
for (int i = 0; i < arrays.length - 1; i++) {
for (int j = 0; j < arrays.length - 1 - i; j++) {
if (arrays[j + 1] < arrays[j]) {
temp = arrays[j];
arrays[j] = arrays[j + 1];
arrays[j + 1] = temp;
//一定要注意赋值的顺序,是后面的数值赋给前面的,赋值顺序错了,可能导致输出的结果错误
}
}
}
return arrays;
}