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

© 番茄君 中级黑马   /  2016-5-10 18:46  /  17911 人查看  /  66 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
        这个this关键字到底是指什么东西,什么时候可以用,什么时候不用,我看书上说有时候还可以省略.再就是经常看到什么this.name=name,我去,名字等于名字,看到就蒙蔽了?this到底怎么用啊

66 个回复

正序浏览
i'm 中级黑马 2016-9-17 23:17:02
66#
当前对象的引用,希望楼主采纳!!!
回复 使用道具 举报
1:当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量。(this是当前对象自己)
2:把自己当作参数传递时,也可以用this.(this作当前参数进行传递)
3:有时候,我们会用到一些内部类和匿名类,如事件处理。当在匿名类中用this时,这个this则指的是匿名类或内部类本身。这时如果我们要使用外部类的方法和变量的话,则应该加上外部类的类名。
4:在构造函数中,通过this可以调用同一类中别的构造函数。
     值得注意的是:
        a:在构造调用另一个构造函数,调用动作必须置于最起始的位置。
        b:不能在构造函数以外的任何函数内调用构造函数。
        c:在一个构造函数内只能调用一个构造函数。
5:this同时传递多个参数。
以上仅仅只是个人的小认识!
回复 使用道具 举报
this关键字:
1.this.方法名() , 这里this指当前对象
2.this.属性名,同理,也只当前对象。加上this的目的是为了区分 成员变量 和 局部变量
比如:public void setName(String name) {
              this.name = name;
         }
this. 后面的name 是属性name, 而后面的name是传过来的参数
3.this可以用来代码提示,不知道调用什么方法的时候,用this加个点,后面的方法名就出来了
回复 使用道具 举报
调用this这个关键字所在类的对象,比如有个学生类Student里面用到this关键字,那么它就代表学生类的对象new Student()
回复 使用道具 举报
6666666666666666666
回复 使用道具 举报
,我刚学的时候也是和你一样,其实this是用来区分局部变量和成员就是的,如果在一个方法体里写了this.xx , 那这个xx就指向了方法体外部的那个成员变量,如果本类中没有那个变量,那就找他的父类了,而=号右边的xx就是方法体里面的变量,我是这样理解的
回复 使用道具 举报
个人理解:

/*
1.区别成员变量和局部变量重名时,如下:
如果输出语句里面的num时,输出的时90,就近原则,
如果要输出10,就要用this.num
意思就是在一个方法内,如果有重名的变量,直接使用的就是局部变量,this.使用的就是成员变量
class Test {
        public static void main(String[] args) {
                        Demo d = new Demo();
                        d.print();       
        }
}
class Demo {

        int num = 10;
        public void print(){
                int num = 90;
                System.out.println(num);
        }
}

2.this代表本类对象的引用,说的通俗点就是:
  哪个对象调用了this所在的函数,this就代表这个对象。
this用途:解决局部变量隐藏成员变量的问题
*/
回复 使用道具 举报
楼主你好!
这个问题是初学者一般容易比较蒙圈的地方。
其实一旦弄清楚它的原理,就很容易理解了。
java是为了区分当前类的属性和函数传进来的参数所以才引入了this的概念。这一点希望楼主先弄明白。
当前类的属性假如已经定义了一个属性叫name,但是函数有一个参数也叫name,那么想把实际传给形参的name赋值给当前类的属性name时,编绎器就搞不懂你写的name到底是哪个name,你想把哪个name赋值给哪个name. 所以,为了能够区分开,就加入了this关键字。
this关键字的意思是“我的”,就代表当前类的对象。哪个对象调用了这个函数,那么这个对象的name就用this.name来表示。希望楼主明白。
纯手打的,满意请采纳,谢谢!有不懂的还可以继续提问哦。
回复 使用道具 举报
this关键字的理解
                (1)this只能代表本类对象
                (2)this代表所属函数(方法)的所属对象
                (3)谁来调用我,我就代表谁
                (4)this可用于区分成员变量和局部变量同名的情况
                    
回复 使用道具 举报
(1)this:代表当前对象的引用,谁来调用我,我就代表谁
                (2)super:代表当前对象父类的引用
                (3)this和super的使用区别
                        a.调用成员变量
                                * this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
                                * super.成员变量 调用父类的成员变量
                        b.调用构造方法
                                * this(...)        调用本类的构造方法
                                * super(...)        调用父类的构造方法
                        c.调用成员方法
                                * this.成员方法 调用本类的成员方法,也可以调用父类的方法
                                * super.成员方法 调用父类的成员方法
回复 使用道具 举报
楼主,你好!很高兴回答您的问题!
this代表当前对象。意思是“我的”,楼主可以这么理解,不会有任何问题。
解决这个问题有两个方法,一个是通过在开发工具中,将源代码写下,源代码会自动将两个name用不同颜色标记,这样你一看就能区分它们,并一眼能看出它们的含义了。
好的,如果上面的方法还不能完全帮你解决问题,那么请听我用代码给您解释:代码如下:
public class Test05 {

        public static void main(String[] args)
        {
                Person p1=new Person();
                p1.age=18;
                p1.Print(p1.age);
        }
       
}
class Person
{
        int age=0;
       

        public void Print(int age)
        {
               
                this.age=age;
                System.out.printf("我的年龄是%d",age);
        }
       
}
我先讲一下他们之间的关系:其实很简单的,楼主听一下就懂:
this.age这里的age 代表当前类person中的属性age.而等号右边的age其实是方法的形参。
我们的语言其实有一点挺好的,为什么会有this的出现呢?因为有了this,系统会告诉编绎器,哪个是属于当前类的,哪个是形参传进来的。
好的,第二层意思是:我们都知道,调用方法要用到对象,只有有了对象,才能调用方法,好了。当我们用对象调用一个方法的时候,这个方法如果有this关键字,那么,这个this 关键字可以理解为这个对象本身。
这么说应该明白了吧?
纯手打的,满意请采纳,谢谢!
回复 使用道具 举报
this指向对象本身,谁调用就指向谁,可以理解为它所在的类的类名,用来区分成员变量与局部变量重名。this只有在创建对象后才能存在,所以在静态方法中不可使用this,因为静态的方法是优先于对象存在的。
回复 使用道具 举报
super和this         super调用构造方法的作用:子类通过调用父类的构造方法,给父类的成员变量赋值                  调用成员变量和成员方法                 this.成员变量名                 super.成员变量名                 this.方法名(实际参数)                 super.方法名(实际参数)         调用构造方法                 this调用本类的无参 this()                 this调用本类的有参 this(实际参数)                 super调用父类的无参 super()                 super调用父类的有参 super(实际参数)          注意事项:this和super调用构造方法,必须放在第一行                              案例         class Fu  {                 public String name = "我是爸爸";         }         class Zi extends Fu{                 public String name = "我是儿子";                                  public void show(String name){                         System.out.println(name);                        //输出 呵呵                         System.out.println(this.name);                        //输出 我是儿子    this:表示从本类成员位置开始找name属性,找到了就使用,找不到就从父类的成员位置找,找到了就使用,找不到就报错                         System.out.println(super.name);                        //输出 我是爸爸    super:表示从父类的成员位置开始找,找到了就使用,找不到就报错                 }         }         class Test{                 public static void main(String[] args) {                         Zi zi = new Zi();                         zi.show("呵呵");                 }         }
回复 使用道具 举报
this通俗点理解就是代表当前创建的对象,this.name 代表对象的变量,name代表局部的变量,两个不同的,还是要理解明白
回复 使用道具 举报
this通俗点理解就是代表当前创建的对象,this.name 代表对象的变量,name代表局部的变量,两个不同的,还是要理解明白
回复 使用道具 举报
this的用法有下面的两种
                1、是表示当前类的引用,谁使用this就表示谁。
2、成员变量和局部变量一致时区分成员变量和局部变量;
回复 使用道具 举报
this的用法有下面的两种
回复 使用道具 举报
this一般会出现在setter和getter方法中,主要就是为了区别开局部变量和成员变量的重名问题。this带表当前对象的引用。
回复 使用道具 举报
前面一个name是该类的属性,后一个name是构造方法传入的参数,为了区分两个量,才把this加上,以区分两个变量(或属性)。
回复 使用道具 举报
通俗点来说就是:我儿子(类)的名字(属性)还没有取,现在看见隔壁村有个叫王二的,我就把王二这个名字赋予我儿子,然后我儿子就有名字了。
回复 使用道具 举报
1234下一页
您需要登录后才可以回帖 登录 | 加入黑马