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

© 张涛的狂怒 中级黑马   /  2014-7-26 12:47  /  1270 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张涛的狂怒 于 2014-8-6 09:57 编辑

public class Person {
        private String name;
        public Person(String name){
                this.name=name;
        }
}
这时候是很明显的,this.name是类的属性,等号后面的name是参数传进来的。
public class Person {
        private String name;
        public Person(String name){
                name=name;
        }
}
这时候等号前面的name代表什么?等号后面的name代表什么?

7 个回复

倒序浏览
等号前后的name都是参数传进来的
回复 使用道具 举报
你可以测试下,在不同地方打印下name的结果
回复 使用道具 举报
都是传进来的参数吧
回复 使用道具 举报
public class Person {
        private String name;
        public Person(String name){
                this.name=name;//此时,this.name调用该方法的对象的属性,而后面那个name是函数的形参;
        }
}


public class Person {
        private String name;
        public Person(String name){
                name=name;//这个时候,前后两个name都只表示形参,如果这样编写程序,是达不到预期的效果的。
        }
}
回复 使用道具 举报
this关键其实还有一个目的防止同名变量的问题,前面不加this代表的参数的this
回复 使用道具 举报
本帖最后由 单线程xia 于 2014-7-26 14:21 编辑

前面的name是本类的成员变量,不可省略this. ,完整的应该是this.name    ,否则会null
后面的name接收的是传过来的实参。
回复 使用道具 举报
成员变量与局部变量重名时,成员变量前必须加上this,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马