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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 电饭煲 中级黑马   /  2014-3-24 22:49  /  1509 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

this关键字的作用!求详细,谢谢了.最好附上代码解说!

4 个回复

倒序浏览
this关键字的特点和使用以及应用场景
             
        class Person
{
        private String name;
        private int age;

        Person()
        {
       
        }


this:   代表的是对象。其实就一个对象的引用。
    它代表哪个对象呢?   哪个对象调用了this所在的函数,this就代表哪个对象。

        this的使用之一:当成员变量和局部变量同名时,可以用this来区分。

        this的使用之二:使用this(参数列表)的方式可以实现构造函数之间的调用。

   注意:构造函数之间调用时,this语句只能定义在构造函数的第一行。

        Person(String name)
        {
                this.name = name;
        }

        Person(String name,int age)
        {
                this(name); //必须是第一行。为什么呢?因为初始化动作必须先执行。
//                this.name = name;//  
                this.age = age;
        }
}


评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

回复 使用道具 举报
(I)this关键字

在一个类中,当调用构造方法创建对象实例时,如果类的实例变量和局部变量名称相同,则要用this关键字区分。反之,编译可能出错。
(II)this关键字事例

public class Test{

        String name;

        Public Test(String name){

             this.name  = name;

     }

}
(III)使用this关键字的情况

第一、通过this调用另一个构造方法,用法是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用,只能引用一个构造方法且必须位于开始。

第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错。
第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。
第四、不能用于静态方法。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
this关键字表示的是“当前对象”,当出现在类的实例方法中,代表的是调用该方法的对象;当出现在类的构造方法中时,代表的是调用该构造方法创建的对象。在下列两种情况下,必须使用this:
方法的形式参数与类的成员变量同名:
例如:
class Person{
String name;
int age;
public Person(String name, int age){
this.name=name;
this.age=age;
}
}

一个类中的构造器调用同一个类中的另一个构造器:
调用的方法:
this([参数列表]) //处于构造器的第一行位置上
例如:
class Person{
String name;
int age;
public Person(String name){
this.name=name;
}
public Person(String name, int age){
this(name);//调用另一构造器,必须放在第一条语句位置上
this.age=age;
}
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
this就是调用当前对象。在调用中他是指向本类对象的。如
class abc{
  String name;
  void show(){
       name = 20; //其实这个name前面是有一个省略掉的this。这个是系统默认有的。因为this是把这个name标识为本类对象
  }
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马