一、 数组操作与数组封装类Arrays
数组元素拷贝:System.arraycopy
//方法原型 public static native void arraycopy(Objet src,int srcPos,Object dest,int destPos,int length);
native关键字告诉编译器(JVM)调用的该方法在外部定义
作用是从src数组的srcPos位置往dest数组的destPos位置拷贝length个元素,
注意,数组拷贝位置或元素数量不对时,可能出现ArrayTndexOutOfBoundException异常;
类型不匹配时,,会出现ArrayStoreExcaption。示例:
//有点问题
import java.util.Arrays;//导入包
public class Example56_1{
public static void main(String[] args){
int []a=new int[10];
int []b={1,2,3,4,5};
System.out.println("copy all elements of b[5] to a[10]:");
System.arraycopy(b,0,a,0,b.length);
//从b[0]开始,拷贝b.length个元素,然后a[0]位置开始粘贴
System.out.println(Arrays.toString(a));//Arrays.toString(a)?
System.out.println("copy 4 elements of a[10] "+
"from index 0 to index 4:");
System.arraycopy(a,0,a,4,4);
System.out.println(Arrays.toString(a));//toString()不能理解。。
System.out.println("copy 3 elements of a[10] "+
"from index 0 to index 8:");
System.arraycopy(a,0,a,8,3);
System.out.println(Arrays.toString(a));
}
} 错误:因为Arrays是外部的,要导入包 :import java.util.Arrays;
正确:
toString()不能理解
判断数组内容相等:Arrays.equals
//Arrays中针对不同类型的数组提供了equals()方法的多个重载版本,包括各种基本类型的比较: public static boolean equals(int[] a,int[] a2); public Static boolean equals(long[] a.long[] a2); public Static boolean equals(boolean[] a.boolean[] a2); //... 以及对象组之间的比较: public static boolean equals(Object[] a,Object[] a2);
示例:
//有点问题
import java.util.Arrays;
public class Example56_2{
public static void main(String[] args){
int []a={1,2,3,4};
int []b={1,2,3,4};
System.out.println("int array compare equal?"+Arrays.equals(a,b));
Integer c[]={new Integer(1),new Integer(3)};
//Intege是int的封装类...不能理解。
Integer d[]={new Integer(1),new Integer(3)};
System.out.println("Integer array compare equal?"+Arrays.equals(c,d));
Integer []e={1,3};//auto boxing;
Integer []f={new Integer(1),new Integer(3)};
System.out.println("Integer arry of autoBoxing and common Integer array:"+
Arrays.equals(e,f));
}
} 正确: Integer那不能理解
Arrays.fill:数组填充
//方法原型 public dtatic void fill(Object[] a,Object val); //此方法将val填充至数组a中的每一个位置。此处赋值是浅拷贝
示例:
//有点问题
import java.util.Arrays;
public class Example57_3{
public static void main(String[] args){
String strings[]=new String[10];//这个意思是?
Arrays.fill(strings,"A");
System.out.println(Arrays.toString(strings));
}
} 正确:
String strings[]=new String[10];什么鬼?
Arrays.asList:将数组转换为List
//方法原型 public staticList asList(T...a); //此方法使用泛型作为参数及返回值,因此当方法参数和返回值List参数类型不一致时,编译器会报错
示例:
//有点问题
import java.util.Arrays;
public class Example57_4{
public static void main(String[] args){
String strings[]=new String[10];
Arrays.fill(strings,"A");
ListasList=Arrays.asList(strings);
System.out.println(asList);
int integers[]={1,2};
Listintegers1=Arrays.asList(integers);//编译出错
}
} 错误:
不太明白错误
Arrays.sort:数组排序
//方法原型 public static void sort(T[]a) //sort方法对于不同类型提供了多个重载版本
示例:
import java.util.Arrays;
public class Example57_5{
public static void main(String[] args){
int []a={2,3,1,5,4};
Arrays.sort(a);
System.out.println(Arrays.toString(a));
}
} 正确:
二、引用类型作方法参数(地址传递)
按值调用:方法接受的是调用者提供的值;
按引用调用:方法接受的是调用者提供的变量地址;
一个方法可以修改传递引用所对应的变量值;而不能修改传递值调用所对应的变量值;
方法参数有两种类型:基础数据类型和对象引用;



