一个java语句不能理解

来源:百度知道 编辑:UC知道 时间:2024/05/29 21:32:16
下面语句:
JComboBox jcb = new JComboBox(new Object[]{"Item1", "Item2", "Item3"});
请问这句话该怎么理解啊?主要是圆括号里的,new一个对象数组,后面大括号里为啥又直接放几个字符串呢?它们之间是怎么赋值的呢?如有知道的,请详细告诉,越详细越好,最好说到本质,有内存分析更好。谢谢!

JComboBox jcb = new JComboBox(new Object[]{"Item1", "Item2", "Item3"});
现在拆分下
Object[] objs = new Object[]{"Item1", "Item2", "Item3"});//1
JComboBox jcb = new JComboBox(objs);//2
1、新建一个Object类型的数组,注意Object是所有类的超类,然后使用字符串(注意,双引号是创建String对象的一个快捷方式)填充这个Object数组。所以此时这个Object数组实质就是一个String数组。
2、使用这个Object数组(即String[])新建一个JComboBox对象jcb。

你可以使用System.out.println(objs[0].getClass().getName());输出一下Object数组中各个对象的类型,你就可以看到了。

并没有你想像的那么复杂,
A a = new A();
这种形式你懂吧?这是实例化一个对象
JComboBox jcb = new JComboBox(new Object[]{"Item1", "Item2", "Item3"});
也是实例化一个对象,不同的是,这个实例化调用了JComboBox的有参构造方法,
需要传一个Object[]类型的参数,而()里边new Object[]{"Item1", "Item2", "Item3"}这也是实例化对象,这是创建一个Object数组,并且给它初始化有三个元素是String类型,因为String是Object的子类所以这样写是可以的,这种写法是数组初始化的一种写法。