本人近期学习JAVA,从基础看起,在学到类构造函数重载时,使用不同的构造函数创建对象,看起来代码非常冗杂,就想着使用数组的方式一次性创建多个对象。
本人结合字符串String数组创建的办法创建类对象,代码如下:
M[] m = {(),("小旺财"),("大旺财",0),("王旺财",5,'女')};
却发现程序报错:
---------- javac ----------
J630f.java:11: 错误: 需要->
M[] m = {(),("小旺财"),("大旺财",0),("王旺财",5,'女')};
^
为什么会出现错误呢?
我们知道直接创建多个字符串是可以直接使用:
String [] s={"gdfs","gsdfh","hh","jyt"};
或者:
String [] s=new String []{"gdfs","gsdfh","hh","jyt"};
而这两者在创建类对象时都不能用了。
通过查询资料,我发现字符串的存储都是先在常量池中创建字符串对象,然后再在堆内存中创建对象。具体参照文章点击打开链接
但创建类对象时并不涉及常量池,而是直接使用new调用构造函数在堆内存中开辟内存空间进行存储的,所以每次创建新对象都需要使用new,对象数组依然。故,创建数组对象可以使用下面语句:
M[] m = {new M(),new M("小旺财"),new M("大旺财",0),new M("王旺财",5,'女')}
也可以使用:
M[] n = new M [5];
n[0]=new M();
n[1]=new M("大旺财");
分别对对象初始化。