class shuzu
{
public static void main (String [] args)
{
int[][] a ={{1,2,},{3,4}};
int[]b=(int[])a;//在这里,会出错,难道(int[])不能强制转换a为int[]型?为什么不能啊?必须是同一种类型的类才可以?int[]和int[][]不是同一种类,所以不能互相强制转换。是吗?
    }
}

解决方案 »

  1.   

    因为我在做这道scjp题:class Dims{
    public static void main (String [] args) {
    int[][]a={{1,2,},{3,4}};
    int[] b=(int[])a[1];
    Object o1=a;
    int[][]a2=(int[][])o1;
    int[]b2=(int[])o1;
    System.out.println(b[1]);
    }}What is the result?
    a.2 b.4 c.An exception is thrown at runtime d.Complilation fails due to an error on line 4.
      

  2.   

    我想应选C,int[] b=(int[])a[1];这句不是将一个两维数组里的a[1]行也就是{3,4}两个数组元素转成一维数组,我认为a[1]表示的是数组a[1]行所在的内存地址,而不是a[1]内的数组元素。
      

  3.   

    选C记住:不存在不同类型且没有继承关系的类之间的转换。int[]和int[][]是两种不同的类型,且互相没有继承关系。
      

  4.   

    谢谢两位
    1.Dan1980 ,你说的很清楚。我明白了这一点,谢谢。2.China_red,你回答的也是我很想知道的部分,但还是不大清楚。int[] b=(int[])a[1];//这句代表着什么呢?谁能解释清楚一些呢 最好用stack和heap来讲讲,谢谢啦~  头疼
      

  5.   

    问一下a[1]算是什么?就像animal或dog一样是一个类?