数组的拷贝
System 类里包含了一个static void arraycopy(object src,int srcops,object dest,intdestpos,int length)方法,该方法可以将src数组中的元素赋值给dest数组的元素,其中srcpos 制定从src数组第几个元素开始赋值,length参数指定将src数组的多少元素赋给dest数组的元素。
/*
* 数组的拷贝:
* static void arraycopy(object src,int srcpos,
* object dest,int destpos,int length)
* object src:被拷贝元素的数组
* int srcpos:拷贝数组元素在原数组中的位置
* object dest:得到拷贝数组元素的数组
* int destpos:拷贝元素在现数组中的位置
* int length: 拷贝的数组元素长度
*/
package cn.wu.array;
public class Test04 {
public static void main(String[] args) {
String[] t0 = {"关云长","吕奉先","赵子龙","典韦","许仲康"};
String[] t1 = new String[6];
System.arraycopy(t0, 0, t1, 0, t0.length);
for(int i=0;i<t1.length;i++){
System.out.println(t1[i]);
}
}
}
java.util.Arrays类:
JDK提供的java.util.Arrays类。包含了常用的数组操作方便我们日常开发。Arrays类包含了:排序,查找,填充,打印内容等常见的操作。
Arrays.toString()方法:打印数组元素的值:
/*
* 测试java.util.Arrays类
* 使用Arrays类输出数组的元素
*/
package cn.wu.array;
import java.util.Arrays;
public class Test05 {
public static void main(String[] args) {
int[] a = {1,2};
System.out.println(a);//打印数组引用的值
System.out.println(Arrays.toString(a));//打印数组元素的值
/*此处Arrays.toString()方法是Arrays类的静态方法,
而不是前面的Object的toString方法*/
}
}
Arrays.sort()方法:对数组元素进行排序(从小到大)
/*
* 测试java.util.Array类
* 使用Arrays类对数组进行排序《一》
*/
package cn.wu.array;
import java.util.Arrays;
public class Test06 {
public static void main(String[]args){
int[] a = {1,2,323,23,543,12,59}; //静态初始化
System.out.println(Arrays.toString(a));//Arrays类对数族元素打印
Arrays.sort(a); //Arrays类对数组元素进行排序
System.out.println(Arrays.toString(a));//Arrays类对数族元素打印
}
}
Arrays.binary.search()方法:对数组元素进行二分法查找
/*
* 测试java,util,Arrays类
* 使用Arrays类实现数组二分法查找
*/
package cn.wu.array;
import java.util.Arrays;
public class Test07 {
public static void main(String[]args){
int[] a = {10,343,5234,33,534,34};
System.out.println(Arrays.toString(a));
Arrays.sort(a);//使用二分法必须对数组进行排序
System.out.println(Arrays.toString(a));
//返回排序后新的索引位置,若为找到返回负数
System.out.println("该元素的索引:"+Arrays.binarySearch(a, 343));
}
}
Arrays.fill(a,2,4,100):对数组元素进行填充
/*
* 测试java.util.Arrays类;
* 使用Arrays类对数组进行填充
*/
package cn.wu.array;
import java.util.Arrays;
public class Test08 {
public static void main(String[] args) {
int[] a = {13,3234,32,343,23234,23};
System.out.println(Arrays.toString(a));
Arrays.fill(a, 2,4,100);//将2到4索引的元素替换为100(2到4等同于【2,4));
System.out.println(Arrays.toString(a));
}
}
Comparable接口(imterface,implements):
相对某个类中的对象之间做比较,就需要实现Comparable接口。接口中只有一个方法compareTo(),该方法定义了对象之间的比较规则,一句这个“比较规则”就可以对所有对象的比较’
事实上,java中排序算法的底层也依赖于Comparable接口
Comparable接口中只有一个方法:
public int compareTo(object obj)obj为要做比较的对象;
方法中,将当前对象和obj这个对象进行比较,如果大于返回1,等于返回0,小于返回-1(此处1可以是正整数,-1也可以是负整数)
compareTo方法的代码也比较固定案例如下:
public int compareTo(Object o) { Man man = (Man) o;
if (this.age < man.age) {
return -1;
}
if (this.age > man.age) {
return 1;
}
return 0;
}
/*
* 测试comparable接口
* 并使用Arrays类对数组进行排序
*/
package cn.wu.array;
import java.util.Arrays;;
public class Test09 {
public static void main(String[]args){
Hero[] h = { //静态初始化创建数组赋值并分配空间
new Hero(20,"Spiderman"),
new Hero(38,"Batman"),
new Hero(35,"Superman"),
new Hero(95,"Captain America")
};
Arrays.sort(h);//对数组h用Arrays类的方法进行排序
System.out.println(Arrays.toString(h));//用Arrays类的方法打印数组h
}
}
class Hero implements Comparable{//Hero类实现接口Comparable
int age;
int id;
String name;//定义属性;
public Hero(int age, String name) { //实参构造器
super();
this.age = age;
this.name = name;
}
public String toString(){
return this.name;
}
public int compareTo(Object o){//接口comparable只有的唯一的方法:compareTo()方法
Hero h = (Hero) o ; //定义要比较的类的对象
if(this.age<h.age){ //if-if循环条件比较对象返回int值,
return -1;
}if(this.age>h.age){
return 1;
}{
return 0;
}
}
}