数组同样可以当做基本类型来看待。可以通过反射来操作数组
import java.lang.reflect.Array;
import java.util.Arrays;
public class Test4 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] i1 = new int[] { 1, 2, 3 };
int[] i2 = new int[] { 4, 5, 7, 8, 6, };
int[][] ii3 = new int[2][];
String[] s = new String[]{"ddd", "ss", "457" };
System.out.println(i1.getClass() == i2.getClass());//只要数组里面的类型相同则他们的数组类型是相同的同一个class文件
System.out.println(s.getClass());
System.out.println(i1.getClass());
System.out.println(ii3.getClass());
System.out.println(i1.getClass().getSuperclass());
System.out.println(ii3.getClass().getSuperclass());
System.out.println(s.getClass().getSuperclass());
// Object[] obj1=i1;
// int[] obj2=i2;
// System.out.println(Arrays.asList(obj1));
// System.out.println(Arrays.asList(obj2));
/**
* 以上要报错啦说什么不能从int[]转化为Object[]数组因为int是基本数据类型不属于Object,而String就不同了,?
* String不是基本数据类型,是与其他对象一样继承自Object
*/
Object[] obj3=ii3;
Object[] obj4=s;
System.out.println("下面:");
System.out.println(Arrays.asList(obj3));
System.out.println(Arrays.asList(obj4));
System.out.println("array数组");
printlnObj(i1);//测试java.lang.reflect.Array数组
}
/**
* 下面使用了反射里面的Array数组
* @param obj
*/
public static void printlnObj(Object obj){
Class class1=obj.getClass();
if(class1.isArray()){
int len=Array.getLength(obj);
for(int i=0;i<len;i++){
System.out.println(Array.get(obj, i));
}
}else{
System.out.println(obj);
}
}
}
总结:Array其实就是好似数组的字节码。通过字节码来操作数组的方法。和直接得到字节码,随后操作相应的类方法一样。
注意:基本类型不是Object,例如int[ ]数组不是Object数组。基本类型不是Object。不过数组类型是Object的。