A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈世涛 中级黑马   /  2012-7-16 08:34  /  1461 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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()); 实现的功能跟上面是一样的,为什么这个就不要写无参数的构造方法呢?(类里有一个有参数的构造方法)

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
贴出来的代码不完整,不知道staff是哪里来的,可以说的是,每个类在声明的时候都会有一个默认的无参构造方法。
回复 使用道具 举报
本帖最后由 陆鹏 于 2012-7-16 12:30 编辑

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

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

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
定义一个类,可以不写无参数的构造方法,jvm会有一个默认构造函数。事实上你写不写无所谓
回复 使用道具 举报
原因:你第二段代码没有new Empoyee();即没有用到空参数的构造方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马