黑马程序员技术交流社区
标题:
this和变量的小疑问
[打印本页]
作者:
郑强强
时间:
2012-4-8 08:15
标题:
this和变量的小疑问
class Person
{
private String name;
private int age;
Person(String name)
{
name=name;
}
}//这个会出错
class Person
{
private String name;
private int age;
Person(String n)
{
name=n;
}
}//这个正确
看视频有点迷惑了, 为什么一个正确,一个错误啊?
那this.name=name;其中this的name是成员变量吗?
毕老师这个地方把我讲晕了,求高手给详解
作者:
宋蕈
时间:
2012-4-8 08:24
this 表示当前对象, 使用this对象后,我指向的就是本类的成员变量,而没有指定this指定,那就
是方法中自己声明的局部变量
作者:
邓海涛
时间:
2012-4-8 08:31
楼上正解,this强调调用的是本类中的方法,除此之外this还有以下作用“
表示类中的属性
可以使用this调用本类的构造方法
this表示当前对象
作者:
张昊镭
时间:
2012-4-8 08:38
是有点不好懂,我也是看了多遍才搞懂.
this有三种表示格式,就是三种用法:
1.
单独使用
的时候表示对当前对象的引用.
2.
this.
用于在成员变量和局部变量同名时区分,表示当前对象所在类的成员变量.你现在的这个this.name=name就是这样,加了this就是当前对象的name,不加就是Person这个构造函数的name,这种用法貌似比较多.
3.
this(构造函数参数列表)
用于在构造函数中调用其他满足参数列表的构造函数.其实就是表示其他满足类型的构造函数.只能用于构造函数间调用,只能调用一个并且写在构造函数第一行.
注意this不能用在static方法中.
作者:
刘_浩
时间:
2012-4-8 10:03
成员之间的访问都是由对象完成的,如果没有对象,他们之前是不存在访问的关系的。当类中出现name=name的时候,那么你在考虑哪个是成员变量,所以加了个this区分,这代表它是类中的成员变量,它接收你所赋给的值。当 Person(String name){name=name;}时如果不加以区分,就成了,自己给自己赋值,要相当于x=2;x=x;这样的情况了。而下面的name=n;不同是因为n接受调用者传进来的参数,再赋给了name没有相同的变量,所以是正确的。
作者:
niceBoy
时间:
2012-4-8 10:11
class Person
{
private String name;
private int age;
Person(String name)
{
name=name;
}
}//这个会出错,因为传入的变量名相同,这就有局部和成员变量同名,name=name虚拟机就根据就进原则,认为name都是局部的
class Person
{
private String name;
private int age;
Person(String n)
{
name=n;
}
}//这个正确,因为不同名,不会出现局部和成员同名的疑惑
this.用于在成员变量和局部变量同名时区分
作者:
zhouxp3323
时间:
2012-4-8 13:03
this是指的是当前调用这个方法的对象,你这个例子中Person类的成员变量和局部变量名相同时,所以就得在调用这个类的对象的成员变量name前加上引用表示区分,而你下面的构造方法的参数是n时,因为和类的成员变量没有同名的所以就可以直接写成 name=n; 上面的同名就只能写成 this.name = name;了
作者:
文密
时间:
2012-4-8 13:15
this代表它所在函数所属对象的引用
简单说: 哪个对象在调用this所在的函数,this 就代表哪个对象
class Person
{
private String name;
private int age;
Person(String name)
{
name=name; //改成 this.name=name 用于区分局部变量和成员变量重名的情况 .
}
}//这个会出错
class Person
{
private String name;
private int age;
Person(String n)
{
name=n;
}
}//这个正确
作者:
张卯
时间:
2012-4-8 13:22
我记得老毕讲的很清楚啊,好像专门总结过this的,认真看视频吧~
作者:
pray
时间:
2014-4-26 05:02
叼!(虽然仅仅一个字,却生动的表达了回复人的不屑于洒脱,反映出作者性格中的冷漠和无奈,以一种打酱油的心情冷眼旁观这世界,足以反应作者被社会冷漠氛围的影响,也反应了河蟹社会人们从敢怒不敢言的心情逐渐转变成不愿言,不想言知道无话可言的一种悲哀,深深的反映出现在网络审查之严厉,跨省之可怕,最后以感叹号结尾,点睛之笔,将文章升华为一切归于不言中,一切又有谁敢言的境界,用最精炼且安全的文字,表达了大家内心深处的抗争
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2