黑马程序员技术交流社区
标题:
求助各位大神
[打印本页]
作者:
陈世涛
时间:
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