【Java】数组

来源:互联网 发布:华大基因携手阿里云 编辑:程序博客网 时间:2024/06/05 10:05

       数组只是相同类型的、用一个标识符名称封装到一起的一个对象序列或基本类型数据序列。数组是通过方括号操作符[ ]来定义和使用的。要定义一个数组,只需要在类型名后加上一对空括号即可:

       int [ ] array;

       也可以将方括号放于标识符后面:

       int array [ ]; // 这也是C/C++中数组的定义方式

     

       1.数组的初始化:

       1)int [ ] array = {1,2,3,4,5}; // 这种方式只能用于数组创建之时

       2)int [ ] a1 = array; // 定义一个数组的引用,并用另一个数组的引用给这个引用赋值

       3)int [ ] = new int[10]; // 创建指定大小的数,如果没有对数组的元素初始化,则编译器将数组元素默认初始化为0(null);

       2.所有的数组中都有一个固有成员,可以通过它获知数组内包含了多少个元素,但不能对其修改(只读),这个成员就是length,而且它只表示数组的大小而不是实际保存的元素个数。

       3.数组的下标是从0开始的,直到length - 1,如果下标超出这个有效范围,程序运行时将出现数组下标越界之异常。


       程序实例:

public class Test {public static void main(String[] args) {int[] array1 = { 1, 2, 3, 4, 5 };int array2[] = array1;int[] array3 = new int[5];for (int i = 0; i < array2.length; i++) {array2[i] = array2[i] * 10;}for (int i = 0; i < array2.length; i++) {System.out.println(array1[i]);}}}

程序输出:10,20,30,40,50


       5.多维数组

       1)int [ ] [ ]  a = { { 1,2,3,},{4,5,6, }, { }, }; // 特别之处是可以在最后一个元素后面加,以便于代码的修改

       2)int [ ] [ ]  b = new int [5][ ] ;


       6.Java类库中的Arrays(下面介绍的这几个方法都是static方法且参数只适用于一维数组)

       1)Arrays.fill() —— 只能用同一个值填充各个位置,而只对对象而言,就是复制同一个引用进行填充;

       2)Arrays.equals() —— 用于比较两个数组是否相等(deepEquals()用于多维数组);

       3)Arrays.sort() —— 用于对数组排序;

       4)Arrays.binarySearch() —— 用于在已排序数组中利用二分查找法查找元素;

       5)Arrays.toString() —— 产生数组的String表示;

       6)Arrays.hashCode() —— 产生数组的散列码;

       此外,Arrays.asList() —— 接受任意的序列或数组作为其参数,并将其转变为List容器

       复制数组的方法 System.arrayCopy(); // 其需要的参数分别为:原数组,从原数组的那个位置开始复制,目标数组,复制到目标数组中的起始位置,要复制的元素个数


       程序实例:

public class TestArray {public static void main(String[] args) {int[] array1 = new int[10];int array2[] = new int[10];// 数组的填充Arrays.fill(array1, 0);Arrays.fill(array2, 1);// 比较两个数组是否相等(长度相等,数组中的各个元素也相等才是真相等)System.out.println("array1==array2 : " + Arrays.equals(array1, array2));for (int i = 0; i < array1.length; i++) {array1[i] = new Random().nextInt() % 1000;}// 数组复制System.arraycopy(array1, 0, array2, 0, array1.length);System.out.println("array1==array2 : " + Arrays.equals(array1, array2));// 将数组转化为字符串打印输出System.out.println("array1=" + Arrays.toString(array1));// 对数组进行排序——基本类型使用快排,非基本类型使用归并排序,其中字符串按照字典序进行排序Arrays.sort(array1);System.out.println("array1=" + Arrays.toString(array1));int findValue = 10;// 利用二分法在数组中查找指定元素——如果找到则返回其插入的恰当位置(插入点),反之返回一个负值(-插入点-1)int position = Arrays.binarySearch(array1, findValue);System.out.println("position=" + position);}}

程序的输出:

array1 == array2 : false
array1 == array2 : true
array1 = [-980, 342, -564, -933, 360, 618, -124, -759, -78, 103]
array1 = [-980, -933, -759, -564, -124, -78, 103, 342, 360, 618]
position = -7




0 0
原创粉丝点击