Java里this一什么作用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

我也来说几句吧,呵呵! 希望用通俗的语言,让你能明白this的作用!
其实this关键字是很容易理解的,下面我举两个例子作对比,可能你就看明白了:
<1>没有使用this的情况:
class A
{
private int aa,bb;//声明两个整形变量
public int returnData(int x,int y) //一个返回整形数的方法
{
aa = x;
bb = y;
return aa + bb;
}
}
<2>使用this的情况
class A
{
private int aa,bb;//声明两个整形变量
public int returnData(int aa,int bb) //一个返回整形数的方法
{
this.aa = aa;//第一个aa是全局变量的aa,后一个aa是参数aa
this.bb = bb;//第一个bb是全局变量的bb,后一个bb是参数bb
return (this.aa + this.bb);
}
}
//////////////////////////////////////////////////



请看下面程序中
MyDate newDay=new MyDate(this);
this是什么作用?






class MyDate{
private int day;
private int month;
private int year; //定义三个成员变量;
public MyDate(int day,int month,int year){
this.day=day;
this.month=month;
this.year=year;
} //构造方法;
public MyDate(MyDate date){
this.day=date.day;
this.month=date.month;
this.year=date.year; //将参数Date类中的成员变量赋给MyDate类;
} //构造方法;
public int getDay(){
return day;
}//方法;
public void setDay(int day){
this.day=day;//参数Day赋给此类中的Ddy;
}
public MyDate addDays(int moreDay){
MyDate newDay=new MyDate(this);
newDay.day=newDay.day+moreDay;
return newDay; //返回整个类;
}
public void print(){
System.out.println("My Date: "+year+"-"+month+"-"+day);
}
}
public class TestMyDate{
public static void main(String args[]){
MyDate myBirth=new MyDate(19,11,1987); //利用构造函数初始化;
MyDate next=myBirth.addDays(7);
//addDays()的返回值是类,将其返回值赋给变量next;
next.print();
}
}
结论:
上面的两个类,本质是相同的,而为什么在第<2>类中使用this关键字呢,注意到第<2>类中的方法returnData(int aa,int bb),形式参数分别为aa和bb,刚好和“private int aa,bb;”这里的变量名是一样的,现在问题来了:在returnData的方法体中如何区别形式参数aa和全局变量aa,两 个 bb也是如此?这就是引入this关键字的用处所在了!this.aa表示的是全局变量的aa,而没有加this的aa表示形式参数的aa,bb也是如此!
建议:
在编程中,过多的使用this关键字不是好方法。这从上面也看得出来,相同的变量名加上this关键字过多时,有时会让人分不清哪个是对哪个。这时可以使用以下方法修改,避免使用this关键字:
<3>
class A
{
private int aa,bb;//声明两个整形变量
public int returnData(int aa1,int bb1)
{
aa = aa1;//在aa后面加上一数字1加以区分,其他以此类推
bb = bb1;
return aa + bb;
}
}
总结:
可以看出,上面的<1>,<2>,<3>都是一

样的,但<3>既避免了使用this关键字,又避免了<1>中x和y 这种参数意思不明确的缺点.所有建议使用<3>一样的方法!
以上是我的个人心得,原创发贴!希望你能看懂,呵呵!献丑了!

相关文档
最新文档