前几天去面试,一位大哥问我int [100] [2] =new int [100] [2]和 int [2] [100] =new int [2] [100]各分配了多少对象,我几天还没来得及查,哪位大哥能给我讲讲,谢了

解决方案 »

  1.   

    0个对象,因为这个int是基础类型的!
      

  2.   

    都有一個二維數組
    int[100] [2] 產生100個數組,每個數組兩個數值。
    int[2] [100] 產生 2 個數組,每個數組100個數值。
    數組才算是對象吧。
      

  3.   

    都是1个,数new就是了。因为问的是对象,而不是“引用”
      

  4.   

    谢谢楼上两位大哥,我懂得二维数组嘛,就是数组的数组,然后有引用过去,可是从来没有听说过一个数组作为一个对象,当时被问住了,觉得里面应该都存了200个int转为Integer的对象,可是那位面试我的大哥又说不一定所有的int值都转为Integer,我就搞迷糊了,大哥们觉得里面是存的是Integer对象还是基本型的数据啊?
      

  5.   

    呵呵,我在《编程思想》里,找到这么一句话“数组标识符只是一个引用,指向堆中创建的一个真实的对象,这个(数组)对象用以保存指向其他对象的引用”我的理解有两种,第一种,对int [2][100] 首先有一个"引用数组(两个引用)"是一个对象,分别指向了含有100个元素的两个对象,也就是数组对象,也就是三个对象,第二种理解就荒谬了,既然二维数组是数组中的数组,那既然一维有这么一个引用数组,那二维也肯定有,也就是说,这个“引用数组”又指向了两个“引用数组(每个有100个引用)”然后又分别指向200个元素,这样算下来有202个对象,这就有点扯了,引用跟对象混为一谈,呵呵,谁来为我指点迷津
      

  6.   

    数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
      

  7.   

    数组就可以理解成一种对象,比如数组有从Object类继承下来的各种方法,如toString等。题目跟Integer没有任何关系。看具体代码:int[][] array = new int[2][100];
    for(int i = 0; i < array.length; i++){
    array[i] = new int[100];
    }array是一个数组,它是length为2的数组,它有2个元素,每个元素是一个数组(长度为100的int数组)。对象数目,数new吧。
      

  8.   

    各自2个啊
    (1)int [100] [2] =new int [100] [2]    2个,
    若是 int [] [] =new int [100] [2]        1个。
    int [] [] 语句到这里只是引用,new int [100] [2]才产生了一个,分配了内存。
    int [100] [2]由于默认产生了,后面接着new一个,就是2个。(2) int [2] [100] =new int [2] [100]   2个,
    若是  int [] [] =new int [2] [100]       1个。
      

  9.   

    我觉得”ZangXT“大哥说的很有道理,数new吧,呵呵,最古老有效的方式,答案应该就是这个吧,int[][] array = new int[2][100];这个new到底是个什么对象,又是怎么能够动态的确定这个对象内容,以后能看看底层的书能有个答案吧,呵呵