以前一直没注意,现在才突然发现了, 也许是自己基础不够扎实。
我在声明int数组的时候
int[] num;
int[] num = {};
都是对的,对于第二种方式中,可以得到num.length;
现在就有个问题了,就是如何动态确定num数组的维数
例如  int[10] num= {};这种写法在编译过程中就通不过,于是我就用了 int[] num = new int[10];这在编译和执行中都没问题.
但是我个人觉得基本数据类型,跟他们的封装类不同,例如 int-->Integer 
new Integer[10],我没意见

new int[10]
总觉得不妥,于是上网查了一下,很多人都在用 new int[length];
但也有人说这中写法是不对的想问问大家,这种动态声名基本类型数组,正确的做法呢?

解决方案 »

  1.   

    int[] num = new int[10];
    这就是正确的做法。如果这种写法不放心,我们写成:
    int[] num;
    num = new int[10];这实际上和:
    Date now;
    now = new Date();
    没有差异。要知道,在java中,数组 是 作为对象对待的。所以,int[] num只是一个句柄而已,实际的内存是在new的时候被分配的。
      

  2.   

    LZ要搞清楚java中的数组是作为引用数据类型存在的,int[] num = new int[10]; 也就是开始在内存栈中分配了变量num,在new的时候又在内存堆里分配了空间,变量num指向堆空间!
      

  3.   

    你用了数组还打算用动态的 那你用LIST不是更好些?
      

  4.   

    数组就是静态的分配空间,要想动态,你可以用Vector。
      

  5.   

    int[] num = {}; 
    int[10] num= {};
    我想楼主还没搞懂数组定义的规定吧。为什么第二种会编译不通过呢》先了解下数组的声明格式:数据类型+[]+变量名=XX 或者 数据类型+变量名+[]=XX,
    []是代表此变量为数组,而长度是后面定义的。而你写的int[10] num= {};意思是想初始化数组的长度吧,但写法是错误的,可以这么写,int [] num=new int[10];或int [] num={1,1,1,1,1,1,1,1,1,1};
      

  6.   

    补充一下,int [] num={1,1,1,1,1,1,1,1,1,1};这种声明方法,数组的长度由后面的初始化元素决定,如果你初始化几个元素,那么数组的长度就是初始化为元素的个数。
      

  7.   

    数组就是静态的分配空间,要想动态,你可以用集合,比如ArrayList
      

  8.   

    我所说的动态不是说让数组大小随时改变
    只是说在初始设置时指定一个固定维数 
    但是不确定用int[] num = new int[length] 好不好
      

  9.   

    不知道楼主说的维数是指数组的长度还是维数
    维数一般使用的是一维或者二维
    要是长度,楼主的意思是不是
    public void test(int length){
        int[] num = new int[length]
        ... 
    }
    这种动态分配数组空间。
    如果是的话这样做是可以的,理论如4楼所说:int[] num是在栈中分配1个空间,new int[length],则是在堆中分配的,分配的大小就是length,而test方法在执行前就已经接到这个length参数,所以是没有问题的。
      

  10.   

    数组在new的时候在内存堆里分配了空间,变量是指向内存堆的首地址的