——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
1.概念
同一种类型数据的集合。其实数组就是一个容器。
2.数组的好处
可以自动给数组中的元素从0开始编号,方便操作这些元素。
3.格式:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
int[] arr = new int[5];
元素类型[] 数组名 = new 元素类型[]{元素,元素, ……};
int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};
4.会出现异常
数组脚标越界异常(ArrayIndexOutOfBoundsException)
int[] arr = new int[2];
System.out.println(arr[3]);
访问到了数组中的不存在的脚标时发生。
空指针异常(NullPointerException)
int[] arr = null;
System.out.println(arr[0]);
arr引用没有指向实体,却在操作实体中的元素时。
5.数组常见的操作
import java.util.Arrays;
public class ArrayTest {
public static void main(String[] args)
{
/*
给定一个数组{5,1,6,4,2,8,9}。
1,获取数组中的最大值,以及最小值。
2.排序
3.对给定的数组进行反转。
{3,1,5,6,2} --->
{2,6,5,1,3}
*/
//int[] arr={5,1,6,4,2,8,9};
// System.out.println(getMax(arr));
// System.out.println(getMin(arr));
//sort(arr);
//System.out.println(Arrays.toString(arr));
int[] arr = {3,1,5,6,2};
reserse(arr);
}
public static void reserse(int[] arr)
{
for(int start=0,end=arr.length-1;start<end;start++,end--)
{
swap(arr,start,end);
}
System.out.println(Arrays.toString(arr));
}
public static void swap(int[] arr,int a,int b)
{
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
public static int getMax(int[] arr)
{
int max=0;
for(int x=1;x<arr.length;x++)
{
if(arr[max]<arr[x])
max=x;
}
return arr[max];
}
public static int getMin(int[] arr)
{
int min=0;
for(int x=1;x<arr.length;x++)
{
if(arr[min]>arr[x])
min=x;
}
return arr[min];
}
public static void sort(int[] arr)
{
for(int a=0;a<arr.length;a++)
{
for(int b=a+1;b<arr.length;b++)
{
int temp=0;
if(arr[a]>arr[b])
{
temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
}
}
for(int ar:arr)
{
System.out.println(ar);
}
}
}
数组的二分法查找(数组必须为有序的)
import java.util.Arrays;
public class ArrayTest2 {
public static void main(String[] args)
{
// int[] arr={5,1,6,4,2,8,9};
// Arrays.sort(arr);
// System.out.println(Arrays.toString(arr));
// int a = Arrays.binarySearch(arr,2);
// System.out.println(a);
int[] arr = {3,2,1,5,4,2,9};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
System.out.println(halfSearch(arr,2));
}
public static int halfSearch(int[] arr,int a)
{
int min=0,max=arr.length,mid;
while(min<=max)
{
mid = (min+max)>>1;
if(a>arr[mid])
min=mid+1;
else if(a<arr[mid])
max=mid-1;
else
return mid;
}
return min;
}
}
二维数组[][]
格式1: int[][] arr = new int[3][2];
定义了名称为arr的二维数组
二维数组中有3个一维数组
每一个一维数组中有2个元素
一维数组的名称分别为arr[0], arr[1], arr[2]
给第一个一维数组1脚标位赋值为78写法是: arr[0][1] = 78;
格式2: int[][] arr = new int[3][];
二维数组中有3个一维数组
每个一维数组都是默认初始化值null
可以对这个三个一维数组分别进行初始化
arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];
格式3: int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};
定义一个名称为arr的二维数组
二维数组中的有三个一维数组
每一个一维数组中具体元素也都已初始化
第一个一维数组 arr[0] = {3,8,2};
第二个一维数组 arr[1] = {2,7};
第三个一维数组 arr[2] = {9,0,1,6};
第三个一维数组的长度表示方式: arr[2].length;
注意:
一维数组表示方式:int[] x; int x[]
二维数组表示方式:int[][] y; int y[][]; int[] y[]
int[] x,y[]; //x表示一维数组,y表示二维数组。
==>int[] x; int [] y[];