黑马程序员技术交流社区
标题:
this问题
[打印本页]
作者:
遮天
时间:
2014-6-12 16:18
标题:
this问题
本帖最后由 遮天 于 2014-6-13 17:27 编辑
/*
构造函数
*/
class Person
{
String name;
int age;
Person(String name, int age)
{
this.name = name;
this.age = age;
}
void speck()
{
System.out.println("姓名:"+name+"______年龄:"+age);
}
}
class Demo
{
public static void main(String[] args)
{
Person p = new Person("脚本小子", 22);
p.speck();
}
}
问题:在Person类的构造函数中
这种写法
Person(String name, int age)
{
this.name = name;
this.age = age;
}
和这种写法
Person(String n, int a)
{
name = n;
age = a;
}
以上两种写法都可以,但是有什么区别呢?
复制代码
作者:
yanghu
时间:
2014-6-12 17:08
这里没什么区别,这里的this主要是区分你函数中的参数命名与类中变量名,防止混淆。例如:
Person(String name, int age)
{
name = name;
age = age;
}
复制代码
这样的话你会看的懂这句话是什么意思吗?
如果你加了this的话,就知道,哦,这是实例中的变量名,而不是函数中的参数。
作者:
Crystal静新
时间:
2014-6-12 17:14
嗯,嗯,它们俩本质上没有什么区别,是一样的,只是个代码编写习惯与规范问题。
this表示本类中,区分传进这个类的参数与本类中变量名相同的参数名。但一般不写this也没有什么影响,只是你看着分不清而已,不利于代码的可读性。如果就是不写this,但还是为了提高点可读性,就把名字取成不一样的,但同时,还是不利于理解程序,因为你不知道你传进来的那个东东是要给谁,如果名字一样,你一定就知道,那个东东是要给谁了。name给name,age给age。
作者:
姿_`态
时间:
2014-6-12 17:20
Person(String name, int age)
{
this.name = name;
this.age = age;
}
和这种写法
Person(String name, int age)
{
name = name;
age = age;
}
你看上面两个有什么区别,是不是第二个不知道哪个是对象的name,哪个是参数的name
所以用this指定一下,就更加清晰明白
作者:
790324255a
时间:
2014-6-12 17:56
如果参数跟类中的成员变量相同,为了避免混乱在参数前加this可以辨别
作者:
yi岁⑨很乖❤
时间:
2014-6-12 17:58
Person(String name, int age)
{
this.name = name;
this.age = age;
}
此构造函数使用了this, this表示的是本类对象,就是Person类。
this.name = name 这句话的意思是,将局部变量(参数的变量)name赋值给成员变量的name。
因为局部变量和成员变量重名了,就引入了this。在这里可以用来区分变量名。
Person(String n, int a)
{
name = n;
age = a;
}
此构造函数的参数的变量名和成员变量并不重名,其实他也省略了this,但是因为变量名不重名,
所以可以省略:this.name = n;
但是往往在写写程序的时候,往往会写第一种。因为变量名统一,可以有利于代码的阅读性,
而且定义过多其他变量名,会导致代码看上去非常不整洁。
希望我的回答,你还算满意!
作者:
黄宝宝
时间:
2014-6-12 18:03
楼上回答得很清楚!
作者:
不去会死
时间:
2014-6-12 18:36
你的形参跟成员变量一样了就需要this 如果不一样就不需要用啊
作者:
遮天
时间:
2014-6-12 18:43
不去会死 发表于 2014-6-12 18:36
你的形参跟成员变量一样了就需要this 如果不一样就不需要用啊
简单得体,懂了,谢谢..........
作者:
liujie445012100
时间:
2014-6-12 20:50
代码可读性很重要的
作者:
MR.Sun
时间:
2014-10-8 10:00
没什么区别,但是再程序中,需要做到的是尽量见名知意,所以才将写成name与age。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2