数组
数组在我们做Java代码的时候,经常会用到的一个结构,掌握数组就可以做出许多有意思的代码,可以更快乐的“玩耍”
数组是个啥:
是一种数据结构;用来存放同一类型元素的集合。
如何创建数组:
首先要声明一个数组,格式为:数据类型 [] 数组名。举个栗子:int [] arr 。当然如果你写int arr [] 这个也不会报错,但不建议。创建数组的方式有两种,分别是静态创建和动态创建。
静态创建:在开辟数组的同时,开辟了存储空间,且给存储空间赋值了。举个栗子:int [] arr = {1,2,3,4,5};这是一个数组里面有5个元素分别是1,2,3,4,5。
动态创建:所谓动态创建和静态创建不一样的地方就是它并没有赋值给存储空间,而是定义了数组长度,格式为:数据类型 [] 数组名 = new 数据类型[数组长度]。举个栗子:int [] arr = new int [5];
如何输出数组:
输出数组首先要明白怎么表达数组元素,在Java中,数组元素是通过数组元素下标表示的,也就是数组名[元素下标],元素下标是从0开始的;输出数组可以通过for循环进行遍历,一个一个的输出。还有一种方法是通过System.out.println(Arrays,toString(数组名));这种方式直接输出一个数组,下面直接上代码:
public static void main(String[] args) {
//静态创建数组
int [] arr={1,2,3,4,5,5,5,5,5};
//输出数组中 元素下标为3 的元素,也就是 4
System.out.println(arr[3]);
//访问数组中的元素 数组名[元素下标]
//数组的元素通过下标来表示,下标从0开始
int length = arr.length;//把数组的长度赋值给length
//输出数组长度
System.out.println("当前数组长度"+length);
//因为元素下标从0开始,所以下标的最后一位是 数组长度-1
System.out.println(arr[arr.length-1]);
//for循环输出数组
for(int i = 0;i<=arr.length-1;i++){
System.out.print(arr[i] );
}
//使用Arrays.toString(arr),直接输出数组
System.out.println(Arrays.toString(arr));
}
如果Arrays报错,把鼠标移上去,选择import Arrays(java.util);或者手动添加import java.util.Arrays;,在package下面,就可以了。
如何复制数组
数组的复制可不是利用赋值号进行复制,那样的复制是假的,其实还是一个数组,因为地址并没有变化,而数组的复制分为两种:数组元素的复制和数组的复制;
数组元素的复制:顾名思义,就是复制数组的元素,这里使用的是: System.arraycopy(src, srcPos, dest, destPos, length) 这里按顺序打到“(”按回车就可以了。
src是指原数组;
srcPos指原数组的起始位置;
dest指目标数组;
destPos指目标数组的起始位置;
length指元素长度。
举个栗子:
public static void main(String[] args) {
// 数组的复制
int [] arr1={1,2,3,4,5};
//数组元素的复制
int [] arr2 = new int [8];
//原数组 原数组起始位置 目标数组 目标数组的起始位置 元素个数
System.arraycopy(arr1,0, arr2, 1, 3);
//把arr1的从0到2的元素复制到arr2的1到3位置
System.out.println(Arrays.toString(arr2));
arr1[0]=9;
//如果是一个数组,则arr1变,arr2也变
//这里如果arr2[1]不是9,表示这是两个数组
System.out.println(Arrays.toString(arr2));
}
数组的复制:通过Arrays.copyOf(original, newLength) 来实现数组的复制。original指原数组,newLength指所要复制的元素长度。举个栗子:
public static void main(String[] args) {
int [] arr={1,2,3,4,5};
//实现对数组的复制
int [] arr1;//声明一个数组
arr1 = Arrays.copyOf(arr,arr.length);
//把arr复制给arr1
arr[0] = 8;//arr1[0]不为8则说明是两个数组
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr));
}
数组的扩容,缩容,修改:通过数组元素的复制和数组的复制可以实现数组的扩容,缩容,修改。上代码:
public static void main(String[] args) {
int [] arr = {1,2,3,4,5};
//扩容
/*arr = Arrays.copyOf(arr, arr.length+1);
System.out.println(arr.length);
System.out.println(Arrays.toString(arr));*/
//缩容
/*arr = Arrays.copyOf(arr, arr.length-1);
System.out.println(Arrays.toString(arr));*/
//修改(多利用一个数组,是删掉元素的数组按原来
//的顺序排列)
/*int [] arr1;
arr1 = Arrays.copyOf(arr, arr.length);
arr = Arrays.copyOf(arr,arr.length-5);
System.out.println(Arrays.toString(arr));
arr =Arrays.copyOf(arr,arr.length+4);
System.out.println(Arrays.toString(arr));
System.arraycopy(arr1,6,arr,5,4);
System.out.println(Arrays.toString(arr));*/
//修改(这种修改是将最后一个元素赋值给要修改元素,
//删除最后一个元素)
arr[2] = arr[arr.length-1];
arr = Arrays.copyOf(arr, arr.length-1);
System.out.println(Arrays.toString(arr));
}
数组的快速排序:
数组的快速排序: Arrays.sort(数组名),这个是数组中自带的快速排序方法,是从小到大排序,很方便。数据结构中有多种排序方法,包括冒泡排序之类的,这里就不写了,就使用这个封装好的快速排序。
public static void main(String[] args) {
int [] arr={1,3,5,6,2,4};
//数组中自带的快速排序方法(从小到大排序)
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
}
二维数组
其实就是一个数组里面嵌套一个数组。
arr[3][2]是指arr有三个元素,这三个元素,每个元素有两元素
看代码吧:
public static void main(String[] args) {
int [] [] arr = new int [3] [2];
//如果把2改成5,那么arr[2].length为5
//a是数组,a里面有3个元素,每个元素下面有2个元素
System.out.println(arr[2] .length);
arr[2][0] = 1;
System.out.println(Arrays.toString(arr[2]));
}
(个人学习总结,如有错误,敬请斧正,学习时间,20,10)