Java数组的定义与使用
1、数组的简介
数组是最基本的数据结构,它是相同数据类型的元素的集合。组成数组的各个变量称为数组的分量,也称为数组的元素,数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。
2、Java数组的定义
Java数组定义有三种方法:
int[] array1 = new int[10];
//int[]为数组的类型,array1为数组名称,int[10]为开辟内存,其能够存放十个数组元素
int[] array2 = {1,2,3,4,5};
int[] array3 = new int[]{1,2,3,4,5};
3、Java数组的初始化
初始化数组有动态初始化和静态初始化两种。
动态初始化:在创建数组时,只定义数组中元素的个数,并未给里面的元素进行赋值。例如:
int [] array = new int[10];
静态初始化:在创建数组时不指定数据元素个数,而直接将数组里的数据内容进行赋值,编译器会自己判定数组有几个元素,例如:
当数组中的元素为动态初始化时,会有对应的默认值,如下所示:
byte,short,int,long类型定义的数组,元素默认值是0;
float、double类型定义的数组,元素默认值是0.0;
boolean类型定义的数组,元素默认值是false;
char类型定义的数组,元素默认值是'' ,即 \u0000;
String类型定义的数组,元素默认值是null。
4、Java数组的使用
数组在内存中是一块连续的内存空间,通过数组的下标进行访问,数组的下标是从0开始的,所以数组用下标访问最大能到数组长度-1。
public class Test
{
public static void main(String[] args)
{
int[] array = {1,2,3,4,5};
System.out.println(array[3]);
}
}
越界则会报异常,如下所示:
public class Test
{
public static void main(String[] args)
{
int[] array = {1,2,3,4,5};
System.out.println(array[5]);
}
}
5、Java数组的遍历
Java数组的遍历有两种方式,如下所示:
(1)for循环遍历数组
public class Test
{
public static void main(String[] args)
{
int[] array = {1,2,3,4,5};
for (int i = 0; i < array.length; i++)
{
System.out.print(array[i]+" ");
}
}
}
(2)foreach遍历数组
public class Test
{
public static void main(String[] args)
{
int[] array = {1,2,3,4,5};
for (int x:array)
{
System.out.print(x+" ");
}
}
}
6、Java数组的二分查找
二分查找是一种非常高效的查找方式,但是二分查找必须是有序数组。
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
int[] array = {1,2,3,4,5,6,7,8,9,10};
int index = Arrays.binarySearch(array,4);
System.out.println(index);
}
}
7、Java数组的排序
我们可以使用工具类Arrays
中的的sort
方法对Java数组进行排序:
import java.util.Arrays;
public class Test {
public static void main(String[] args)
{
int[] array = {1,2,3,6,5,0,4,8,7,9};
Arrays.sort(array);
System.out.println(Arrays.toString(array));
}
}
8、Java数组的反转
我们可以使用Collections.reverse()
方法对Java数组进行反转。首先使用java.util.Arrays.asList(array)
将数组转换为列表,然后反转列表,如下所示:
public class Test
{
public static void main(String[] args)
{
Integer [] arr = {10, 20, 30, 40, 50};
reverse(arr);
}
static void reverse(Integer[] a)
{
Collections.reverse(Arrays.asList(a));
System.out.println(Arrays.asList(a));
}
}
需要注意的是:Collections类的reverse()方法会修改原始集合,而不是创建一个新的反转后的集合。因此,在使用该方法时应注意备份原集合数据,以免造成数据丢失。