日期:2014-05-20  浏览次数:20739 次

直接定义数组和用new定义数组区别是什么
请问大侠
int a[] = new int[] {1, 2, 3} 与 int a[]={1,2,3}区别是什么啊?

------解决方案--------------------
没有本质上的区别,简写而已
------解决方案--------------------
按照thinking in java上的说法
int a[]={1,2,3}叫聚集初始化
int a[] = new int[] {1, 2, 3}叫动态聚集初始化

具体区别看看下面代码:
Java code
import java.lang.reflect.*;

public class Test78 {
    public static void main(String[] args) {
        int[] a = new int[] { 1, 2, 3 };
        a = new int[] { 4, 5, 6 }; //可以在任意地方创建和初始化数组对象
        print(new int[] { 7, 8, 9 }); //可以在任意地方创建和初始化数组对象

        int[] b = { 1, 2, 3 }; // 前一种形式的简写形式
        // b = { 4, 5, 6 }; 必须在定义时候使用
    }

    //打印数组的方法
    public static void print(Object o) {
        Class cl = o.getClass();
        if (!cl.isArray())
            return;
        Class componentType = cl.getComponentType();
        int length = Array.getLength(o);
        System.out.print(componentType.getName() + "[" + length + "] = { ");
        for (int i = 0; i < length; i++) {
            System.out.print(Array.get(o, i));
            if (i != length - 1)
                System.out.print(",");
            System.out.print(" ");
        }
        System.out.println("}");
    }
}