本文共 3875 字,大约阅读时间需要 12 分钟。
首先类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。 所以java数组继承类Object下的所有方法(以下为常用方法):
boolean equals(Object obj) // 指示其他某个对象是否与此对象“相等”。 protected void finalize() //当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 int hashCode() //返回该对象的哈希码值。 String toString() //返回该对象的字符串表示。
数组的长度一旦定义后,无法改变(元素值可以更改),如果长度变化了,一定是产生了新的数组
,所以出现一些数组复制的方法://数组的复制(一)System.arraryCopy(源数组的名字,源数组的开始下标,目标数组名字,目标数组下标,复制的长度);//应用int[] iis = { 11, 22, 33}; // System:java公司 提供的类名 // arraycopy:System类 提供的一个功能 作用是实现 数组的复制 int[] copyIIS = new int[iis.length]; // arraycopy(源数组名, 源数组的开始下标,目标数组名,目标数组的下标,复制的长度); System.arraycopy(iis, 0, copyIIS, 0, iis.length); for (int i = 0; i < copyIIS.length; i++) { System.out.println(copyIIS[i]); }//数组的复制(二)Arrarys.copyOf(目标数组名称,目标数组长度或者是扩容长度)//应用int[] cs = { 100, 200, 300}; // Arrays:java提供一个类名 记住要导包(java.util.Arrays) // copyOf(): 是 Arrays类的功能 作用是:数组复制 int[] newCs = Arrays.copyOf(cs, cs.length); System.out.println(Arrays.toString(newCs)); for (int i = 0; i < newCs.length; i++) { System.out.println(newCs[i]); }//数组的复制(三) int[] as = { 10, 20, 30}; int[] copyAs = new int[as.length]; System.out.println("数组复制方法1:"); for (int i = 0; i < copyAs.length; i++) { // 将 as数组中i下标位置的元素值 赋值给 copyAs数组的对应 i下标位置 copyAs[i] = as[i]; } // 循环输出 copyAs数组的每一个元素的值 for (int i = 0; i < copyAs.length; i++) { System.out.println(copyAs[i]); }
由于数组大小一旦确定就不可更改,所以可以通过数组的复制来实现数组的扩展,如下:
/*例子(1)* 数组的扩容。(Arrays.copyOf方法)给定一个数组,要求写一个 expand 函数,把原有数组的长度扩容一倍,并保留原有数组原有的内容。* */public class Expand { public static void main(String[] args) { int[] e = new int[]{ 1,2,3,4,5}; int[] expand = Arrays.copyOf(e,10); System.out.println(Arrays.toString(expand)); }}/*例子(2)*数组的扩容。(System.arraycopy方法)*/public class Ex2 { public static void main(String[] args) { int[] a = { 1, 2, 3, 4, 5}; expand(a); System.out.println(); } public static void expand(int[] a) { int[] newArray = new int[a.length * 2]; System.arraycopy(a, 0, newArray, 0, a.length); }}
数组既然可以进行扩展那就可以进行缩容,由此可以实现数组的元素删除和插入:
//删除public class delete { public static void main(String[] args) { int[] array = { 1, 2, 3, 4, 6}; System.out.println("请输入要删除的数组元素下标"); Scanner input = new Scanner(System.in); //获取用户的输入 int index = input.nextInt(); if (index < array.length) { for (int i = index; i < array.length - 1; i++) { array[i] = array[i + 1]; } System.out.println(Arrays.toString(array)); int[] newArray = Arrays.copyOf(array, array.length); newArray[array.length - 1] = 0; System.out.println("删除后的数组为:" + Arrays.toString(newArray)); } else { System.out.println("下标溢出!"); } }}//插入public class insert { public static void main(String[] args) { int[] ary = { 1, 2, 3, 6, 0}; Scanner scanner = new Scanner(System.in); System.out.println("请输入要插入元素的下标:"); int index = scanner.nextInt(); System.out.println("请输入要插入元素的值:"); int value = scanner.nextInt(); if (index < 5) { int[] newAry = new int[ary.length]; for (int i = 0; i < ary.length; i++) { newAry[i] = ary[i]; } for (int i = newAry.length - 1; i > index; i--) { newAry[i] = newAry[i - 1]; } newAry[index] = value; ary = newAry; System.out.println(Arrays.toString(ary)); } else { System.out.println("下标溢出!"); } }}
转载地址:http://axewi.baihongyu.com/