- import java.lang.reflect.Array;
- import java.util.Arrays;
- public class ArrayRef {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- int [] a1=new int []{1,2,3};
- int [] a2=new int [4];
- int [][] a3=new int [2][3];
- String [] a4=new String []{"1","2","3"};
- System.out.println("--------------------");
- //判断数组a1和数组a2的字节码是否相同
- System.out.println("数组a1和数组a2的字节码是否相同"+(a1.getClass()==a2.getClass()));
- //Array类的一些方法
- System.out.println("--------------------");
- System.out.println("a3数组名字"+a3.getClass().getName());
- System.out.println("a1数组超类的名字"+a1.getClass().getSuperclass().getName());
- //数组与object[]的对应关系
- Object obj1=a1;
- Object obj3=a4;
- Object [] obj4 =a4;
- Object obj5 =a3;
- Object [] obj6 =a3;
- System.out.println("--------------------");
- System.out.println("无工具类Arrays的输出"+a1);
- System.out.println("无工具类Arrays的输出"+a4);
- System.out.println("--------------------");
- //调用工具类Arrays的asList()方法
- System.out.println("--------------------");
- System.out.println("有工具类Arrays的输出"+Arrays.asList(a1));
- System.out.println("有工具类Arrays的输出"+Arrays.asList(a4));
- System.out.println("--------------------");
- //调用printObject()方法
- printObject(a1);
- printObject(1);
- }
- //打印对象中的成员方法
- private static void printObject(Object obj){
- Class cla=obj.getClass();
- if(cla.isArray()){
- System.out.println("调用自定义方法的数组输出");
- int len=Array.getLength(obj);
- for(int i=0;i<len;i++){
- System.out.println(Array.get(obj, i));
- }
- System.out.println("--------------------");
- }
- else{
- System.out.println("调用自定义方法的普通对象输出");
- System.out.println(obj);
- System.out.println("--------------------");
- }
- }
- }
- /*
- 程序分析:
- 1.具有相同维数和元素类型的数组的字节码相同,即具有相同的Class实例对象。
- 2.通过调用Class实例对象的getName方法可以返回字节码的名字,通过调用Class实例对象的getSuperclass方法可以返回父类
- 3.当直接输出数组时,得到的输出结果不理想
- 4.通过工具类Arrays的asList方法可以输出数组中参数的值
- 5.为了避免工具类Arrays的asList方法的弊端,可以编写自定义的方法进行输出。
- */
复制代码
|