苦。

解决方案 »

  1.   

    http://topic.csdn.net/u/20090311/22/6031a6be-bea1-4de2-89a2-eb6a247dfe74.html?682887505#replyachor
      

  2.   

    int[] a = new int[]{1,2};
      

  3.   

    不能这样写吧,
    我一直是写int[] a = new int[]{1,2};
      

  4.   

    int[] a = {1,2};
    可以吧。
      

  5.   

    new int[3]{1,2,3};
    为什么中间的3不能有??
    这个可以有。
      

  6.   

    1)   int[] a = new int[3];
    2)   int[] b = new int[]{1,2,3};
    ---------------------------------------------------
    就这两种写法
    等号后面的中括号里的数字是用来声明的,不是用来实例化的。
    如果你加上大括号就相当于把它直接实例化了,就不需要声明了。
    ---------------------------------------------------
    也不知道我说的对不对,LX的补充纠正
      

  7.   

    晕啊,
    int[] a = new int[2]{1,2}; 
    你这样写,让虚拟机判断用哪个么?
    虚拟机是通过new int[2] 中的"2" 知道你要建的这个数据对象的大小的,或者通过后面的{1,..}来确定,
    如果不指定就分给默认的大小空间,
    而你两个都加上了,它怎么知道要哪个???
      

  8.   

    你这个从逻辑上就由错误,如果一个人写成new int[2]{1,2,3}这样的形式怎么办,JAVA虚拟机还得报个运行时异常。
      

  9.   

    一般用两种方法:
    1、int[] a = {1,2}; 2、int[] a = new int[2];
       a[0] = 1; a[2] =2;
      
      

  10.   

    int[] a = new int[3];
    int[] a = new int[]{1, 2, 3};
    int[] a = {1, 2, 3};
    应该就这3种,int[] a = new int[2]{1,2};为什么不行这要问SUN公司啊,人家定的规则,呵呵~
      

  11.   

    理论上讲,楼主的这种写法是应该可以的但这有一个前提条件,那就是用于定义数据长度的中括号内部应该是一个常量,并且数组内部的元素个数都是固定的,也就是说这些信息在编译时就必须确定。
    比如说有个方法:
    private void f(int length){
        int[] a = new [length]{1, 2, 3, 4}
    }如果这段程序编译通过的话,结果是无法预知的当然,如果在设计编译器时规定这个 length 必须是一个常数就可以通过编译的话,我觉得也是应该办得到的。
    不知道sun的设计都是怎么想的,但是至少我觉得编译器不是很有必要支持这种写法。