Object args[]={k.getKname(), k.getKstus(),k.getCdate()};
Stu[] s=new Stu[10];这2个都是构造数组的 有什么区别吗为什么第一个不能这样写呢 Object[] args={k.getKname(), k.getKstus(),k.getCdate()};
Stu[] s=new Stu[10];这2个都是构造数组的 有什么区别吗为什么第一个不能这样写呢 Object[] args={k.getKname(), k.getKstus(),k.getCdate()};
你把两句写到一起了,导致了变量重了,你把下面的args改成别的试试!!
第一个是直接创建的!
第二个先在栈中找“s"如果没有的话 直接压入 然后在创建数组 然后把s指向数组!
恩....新建string 是这么个流程 数组 理论上应该差不多吧!
可以的啊,我试过了
Object[] args={k.getKname(), k.getKstus(),k.getCdate()};
是一样的,他们存的都是Object类型
数组声明:
Object[] args和Object args[]这两种声明方式相同对于构造数组的方法:
Object args[]={k.getKname(), k.getKstus(),k.getCdate()};
它完成的是:
args = new Object[3];
args[0] = k.getKname();
……
而Stu[] s=new Stu[10];
完成的是,定义一个长度为10的数组,而且数组中的每个位置都对应null
重名的问题。 再要不就是你的有一个get方法无返回
第二种是只定义并为s分配了内存,并没有赋值,s的元素都是null第一个可以那样写,效果是一样的,即 Object[] a 和 Object a[]是一个意思,写法上个人喜好选择不同而已String[] a = {"a", "b", "c"}; //定义并赋值
String[] b = new String[]{"a", "b", "c"}; //定义并赋值
String[] c = new String[3]; //定义并分配空间
for (int i=0; i<c.length; i++) c[i] = ""+i; //通过循环对每个元素赋值
String[] d; //只是定义,也没分配空间