一、数组的拷贝
System类里也包含了一个static void arraycopy(object src,int srcpos,object dest, int destpos,int length)方法,该方法可以将src数组里的元素值赋给dest数组的元素,其中srcpos指定从src数组的第几个元素开始赋值,length参数指定将src数组的多少个元素赋给dest数组的元素。
1 public class Test04 { 2 public static void main(String args[]) { 3 String[] s = {"我","乔欣","应该","努力","学习","加油"}; 4 String[] sBak = new String[6]; 5 System.arraycopy(s,1,sBak,0,5); 6 for (int i = 0; i < sBak.length; i++) { 7 System.out.print(sBak[i]+ " "); 8 } 9 } 10 }
执行结果如图所示:
二、java.util.Arrays类
JDK提供的java.util.Arrays类,包含了常用的数组操作,方便我们日常开发。Arrays类包含了:排序、查找、填充、打印内容等常见的操作。
1.打印数组
1 import java.util.Arrays; 2 public class Test { 3 public static void main(String args[]) { 4 int[] a = { 1, 2 }; 5 System.out.println(a); // 打印数组引用的值; 6 System.out.println(Arrays.toString(a)); // 打印数组元素的值; 7 } 8 }
注意:此处的Arrays.toString()方法是Arrays类的静态方法,不是Object的toString()方法。
2.数组元素的排序
1 import java.util.Arrays; 2 public class Test { 3 public static void main(String args[]) { 4 int[] a = {1,2,323,23,543,12,59}; 5 System.out.println(Arrays.toString(a)); 6 Arrays.sort(a); 7 System.out.println(Arrays.toString(a)); 8 } 9 }
如果数组元素是引用类型的排序(Comparable接口的应用),重写Comparable接口中的compareTo方法,自定义排序规则,然后在调用Arrays.sort(a)方法,一般自定义排序规则模式如下:
1 import java.util.Arrays; 2 3 public class Test04 { 4 public static void main(String[] args) { 5 Man[] msMans = { new Man(3, "张三"), new Man(60, "王五"), new Man(2, "赵六") }; 6 Arrays.sort(msMans); 7 System.out.println(Arrays.toString(msMans)); 8 } 9 } 10 11 class Man implements Comparable { 12 int age; 13 int id; 14 String name; 15 16 public Man(int age, String name) { 17 super(); 18 this.age = age; 19 this.name = name; 20 } 21 22 public String toString() { 23 return this.name; 24 } 25 26 public int compareTo(Object o) { 27 Man man = (Man) o; 28 if (this.age < man.age) { 29 return -1; 30 } 31 if (this.age > man.age) { 32 return 1; 33 } 34 return 0; 35 } 36 }
3.二分法查找
1 import java.util.Arrays; 2 public class Test { 3 public static void main(String[] args) { 4 int[] a = {1,2,323,23,543,12,59}; 5 System.out.println(Arrays.toString(a)); 6 Arrays.sort(a); //使用二分法查找,必须先对数组进行排序; 7 System.out.println(Arrays.toString(a)); 8 //返回排序后新的索引位置,若未找到返回负数。 9 System.out.println("该元素的索引:"+Arrays.binarySearch(a, 12)); 10 } 11 }
4.数组填充
1 import java.util.Arrays; 2 public class Test { 3 public static void main(String[] args) { 4 int[] a= {1,2,323,23,543,12,59}; 5 System.out.println(Arrays.toString(a)); 6 Arrays.fill(a, 2, 4, 100); //将2到4索引的元素替换为100; 7 System.out.println(Arrays.toString(a)); 8 } 9 }