本帖最后由 黑马_许芸 于 2012-8-28 18:02 编辑
- <p>下面这段代码,是我看“24_黑马程序员_张孝祥_Java基础加强_数组与Object的关系及其反射类型”这集视频做的笔记,其中我有两个问题不太懂,在代码中用红色标出。</p>
复制代码 package cn.itcast.day1;
import java.util.Arrays;
public class ReflectTest6
{
public static void main(String[] args)
{
int[] a1 = new int[]{1,2,3};
int[] a2 = new int[4];
int[][] a3 = new int[2][3];
String[] a4 = new String[]{"a","b","c"};
System.out.println(a1.getClass() == a2.getClass());
// System.out.println(a1.getClass() == a3.getClass());//为什么这两行代码,老师的可以编译通过,而我的通不过?
// System.out.println(a1.getClass() == a4.getClass());
System.out.println(a1.getClass().getName());
//下面这两行打印出来的结果都是java.lang.Object,表明int[]和String[]都是Object的子类。
System.out.println(a1.getClass().getSuperclass().getName());
System.out.println(a4.getClass().getSuperclass().getName());
Object aObj1 = a1;
Object aObj2 = a4;
// Object[] aObj3 = a1; //编译通不过,因为这个数组里面装的不是Object(int)
Object[] aObj4 = a3; //有一个数组,数组里面装的是Object(int[])
Object[] aObj5 = a4; //有一个数组,数组里面装的是Object(String)
//下面两行代码打印出来的结果是[[I@de6ced] [a, b, c]
//这是因为asList方法要求传入的是Object[].而a1是一个int[],不能被转换成Object[]。
//那为什么能够编译通过呢?在运行的时候,Arrays.asList(a1)这个方法又做了些什么呢?
System.out.println(Arrays.asList(a1));
System.out.println(Arrays.asList(a4));
}
}
|