黑马程序员技术交流社区

标题: 求助各位大神 [打印本页]

作者: 陈世涛    时间: 2012-7-16 08:34
标题: 求助各位大神
1.Employee e = new Employee();
for(int i = 0;i<staff.length;i++){
e = staff[i];
System.out.println("name=" + e.getname() +",salary=" + e.getsalary()); 代码new一个Employee对象,是需要写无参数的构造方法的,因为类里有有参数的构造方法。

2.for(Employee e : staff){
System.out.println("name=" + e.getname() +",salary=" + e.getsalary()); 实现的功能跟上面是一样的,为什么这个就不要写无参数的构造方法呢?(类里有一个有参数的构造方法)

作者: 柯玲    时间: 2012-7-16 08:43
贴出来的代码不完整,不知道staff是哪里来的,可以说的是,每个类在声明的时候都会有一个默认的无参构造方法。
作者: 陆鹏    时间: 2012-7-16 12:22
本帖最后由 陆鹏 于 2012-7-16 12:30 编辑

这里是到高级for循环的内容
第一个普通for循环赋值的话要赋值给一个变量,但是要明确这个变量的类型,如果你直接 e =staff
,而之前没有声明 Employee e = new Employee(),就不能赋值,因为不知 e 是什么类型的。

而第二个是高级for循环,在for中已经声明了 e是 Employee类型的,然后在循环里有个隐式的赋值 e = staff
,每循环一次赋值一次,而且赋值的默认是空参数的对象。i++,一直加到最后。
不指定构造方法的参数,就默认执行空参数的构造函数。


作者: 黑马刘涛    时间: 2012-7-16 12:28
定义一个类,可以不写无参数的构造方法,jvm会有一个默认构造函数。事实上你写不写无所谓
作者: 黑马-王言龙    时间: 2012-7-16 13:05
原因:你第二段代码没有new Empoyee();即没有用到空参数的构造方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2