先摆结论:

ClassName[] classes=new ClassName[]{ 	new ClassName(/*参数列表*/), 	//其余的初始化操作 } 

今天我想初始化一个自定义的JAVA类数组,结果发现不能像初始化C++的结构体,或者JAVA中初始化一个基本类型,如int那样:

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

直接在中括号后的大括号里写参数列表会被编译器认为是非法的初始化操作。在stackoverflow的这篇回答中找到了答案How to initialize array of custom class objects? [duplicate]

这是因为JAVA中每个自定义类必须通过new操作进行初始化,否则只是一个引用(reference),可以对应的理解为C++中的指针(但是两者有区别)。只有new操作后才能实例化成一个对象,并赋以相应的值。