------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
数组:
数组可以分为很多维度的数组,根据自己所学知识,总结一维数组和二维数组内容。
特点:
1、只能存储同一种数据类型且多个元素的容器。可以存储基本类型,也可以存储引用类型。
2、数组长度是固定不可变的。
3、每一个元素都有对应的编号,从左边第一位以0开始,直到最后一个元素。
编号的专业叫法:索引。
4、每一个数组都有自己的长度,从左边第一位以1开始,直到最后一个元素。
长度的获取方法:数组名.length;
所以根据上面4点的特点,如果一个数组的元素很多,不可能一个个的去数,才能获取索引,此时就用数组名.length-1,就能知道一个数组的最大索引。
一维数组的初始化:
1、动态初始化:只给长度,系统给出默认值,数组元素的默认值为0。
数据类型[] 数组名 = new 数据类型[给出的长度];
int[] arr = new int[3];
2、静态初始化:给出每一个元素,系统决定长度。
数据类型[] 数组名 = {给出的元素};
int[] arr = {1,2,3};
一维数组遍历:
public class ArrayDemo {
public static void main(String[] args) {
//定义一维数组,静态初始化
int[] arr ={1,2,3,4,5,6};
//使用for循环对数组进行遍历
for(int i=0;i
二维数组的初始化:
理解:二维数组的每一个元素都是一维数组。
1、动态初始化:只给出二维数组的长度和其元素的长度,二维数组的元素索引也是从0开始。
数据类型[][] 数组名 = new 数据类型[一维数组的数量][每一个一维数组的长度];
int[][] arr = new int[3][2];
2、静态初始化:给出每一个元素和其元素的内容,系统决定长度。
数据类型[][] 数组名 ={{第一个元素内容},{第二个元素内容},{第三个元素内容}};
int[][] arr ={{1,2},{3,4},{5,6}};
二维数组遍历:
如何遍历呢?
拿int[][] arr ={{1,2},{3,4},{5,6}};举例,这个二维数组里面有三个元素,那其长度也就是3,索引也就是数组名.length-1等于2,这样就知道二维数组三个元素的索引arr[0]、arr[1]、arr[2]。而这时只是得到了二维数组中的一维数组的地址值,要想遍历获取所有的内容,那么在每一个元素的基础上再去遍历获取每一个索引的值,如:arr[0][0],表示的是二维数组中的第一个一维数组上的第0个索引的值。
public class ArrayDemo {
public static void main(String[] args) {
//定义二维数组,静态初始化
int[][] arr ={{1,2},{3,4},{5,6}};
/**
* 用for循环嵌套,先获取每一个一维数组,
* 再获取这个一维数组内的每一个索引的值
*/
for(int i=0;i
数组的注意事项:
1、使用数组就是为了存储同一种数据类型且多个元素,那么就一定要初始化数组,否则无意义。
2、使用数组很容易出现访问数组越界,即“ArrayIndexOutOfBoundsException”运行时异常。
数组排序:
数组排序有很多种方法,下面就举几个常用的排序方法作为演示:
import java.util.Arrays;
public class ArrayDemo {
public static void main(String[] args) {
// 定义一维数组
int[] arr = { 8, 5, 4, 2, 7, 1, 9, 6, 3 };
// 调用Arrays数组工具类的sort()方法
// method_1(arr);
//调用选择排序方法
// method_2(arr);
//调用冒泡排序方法
method_3(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
//冒泡排序,相邻的两个数,两两相比,大的就往后移动(此方法要注意数组越界和重复比较)
public static void method_3(int[] arr) {
for(int i=0;iarr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
//选择排序,从索引0开始每个值都和后面的每一个索引值比较,大的往后移动,依次递增相比。
public static void method_2(int[] arr) {
for(int i=0;iarr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
//Arrays类的sort()方法省时省力
public static void method_1(int[] arr) {
Arrays.sort(arr);
}
}
数组查找:
举基本查找和二分查找两种常用方法:
不过要注意二分查找是针对数组有序的情况下适合使用。
public class ArrayDemo {
public static void main(String[] args) {
// 定义无序数组
// int[] arr = { 8, 5, 4, 2, 7, 1, 9, 6, 3 };
//调用基本查找法
// int index = method_1(arr,1);
//定义有序数组
int[] arr ={1,5,9,12,25,55,65,89};
//调用二分查找法
int index = method_2(arr,9);
System.out.println(index);
}
/**
* 二分查找法,针对数组有序的情况。
* 如果为了使用二分查找而把原数组进行排序,
* 那么得到的索引值已经不是原数组的索引值
*/
public static int method_2(int[] arr, int value) {
int min = 0,max = arr.length-1,mid = (min+max)/2;
while(arr[mid] != value){
if(arr[mid] > value){
max = mid - 1;
}else if(arr[mid] < value){
min = mid + 1;
}
if(min > max){
return -1;
}
mid = (min+max)/2;
}
return mid;
}
//基本查找,对于数组有序或无序都能使用
public static int method_1(int[] arr, int value) {
int index = -1;
for(int i=0;i
Arrays工具类:
这是针对数组进行操作的工具类。其中包括排序、查找、复制、比较等功能。
注:数组和集合很相似,对于初学者很容易弄混,小弟会自开一篇集合。
------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------