A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区


String strArr = new String[]{"str1", "str2", "str3", "str4", "str5", "str6"};
//String strArr = new String[6]{"str1", "str2", "str3", "str4", "str5", "str6"}; //error

技术要点:main()方法只接受一个参数,String[]也是一种类型

public class TestMain{
    public static void main(String[] args){
        if(args == null){
            System.out.println("args is null");
            return;
        }
        for(String str : args)
            System.out.print(str + "  ");
        System.out.println();      
    }
}



技术要求:1、使用反射调用其它类的main方法

技术要点:1、main()的第一个参数时类名
          2、避免编译器对数组进行拆分,使用Object对数组进行封装

public class Test{
    public static void main(String[] args){
        String className = args[0];
        String[] args = new String[]{"str1", "str2", "str3"};
        Method mainMethod = Class.forName(className).getMethod("main", 5);
        //TestMain.main(args);               //通过类型静态方法调用
        //mainMethod.invoke(null, args);     //error, JDK1.5中,编译器把args拆分成3个参数
        mainMethod.invoke(null, (Object)args);
        mainMethod.invoke(null, new Object[]{args});
        
    }
}



技术要点:数组是一个Object,基本类型的一维数组是一个Object

int[] a1 = new int[3]{1, 2, 3};
Integer[] a2 = new Integer[4];
int[][] aa1 = new int [2][3];
String[] strArr = new String[]{"A", "B", "C"};

Object obj1 = a1;      //一维数组是一个Object
Object obj2 = a2;
//Object[] obj3 = a1;  //error,Object[]中不能装基本类型
Object[] obj4 = aa1;   //Object[]中装的是一维数组


技术要求:打印基本类型数组的数据列表,不能使用for
          给的参数是一个数组,打印数组内的元素;给的参数不是是数组,打印该对象

技术要点:使用反射
          数组反射的一个应用

问题引出:
System.out.println(Arrays.asList(a1));     //output: [I0cfb549 JDK1.5 asList(T...a)       a1当成一个对象
System.out.println(Arrays.asList(strArr)); //output: A B C     JDK1.4 asList(Object[] a)  strArr当成了数组


public static void printObject(Object obj){
    Class class = obj.getClass();
    if(class.isArray()){
       //System.out.print(obj.toString() + ": ");
       int len = Array.getLength(obj);
       for(int i = 0; i < len; i++){
           System.out.print(Array.get(obj, i) + " ");
       }
       System.out.println();
    }else{
       System.out.println(obj);
    }
}

//main
printObject(a1);     //output: 1 2 3
printObject(strArr); //output: A B C
printObject("abc");  //output: abc

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马