如题,
this关键字在不同的地方,
都分别表示什么啊、?
这个问题一直搞不清楚,
大家帮忙解释下,
谢谢

解决方案 »

  1.   

    this 是指当前对象 呵呵 如
    你类里面的属性 this.proprtey = proprtey ;
    意思就是你传参的属性赋值给类里的属性;
      

  2.   

    使用this调用本类中的属性现在观察以下代码,看会有那些问题:public void setName(String name){name = name ;} 这里面的两个name都是setName方法中的name参数。此时,特别希望可以通过一个指定的标识明确的表示要把传入的name参数的值给类中的属性,所以此时就需要使用this关键字,使用this.name就表示类中的属性。class Person{private String name ;private int age ;public Person(String name,int age){this.setName(name) ;this.setAge(age) ;}public void setName(String name){this.name = name ;}public void setAge(int age){this.age = age ;}public String getName(){return this.name ;}public int getAge(){return this.age ;}public void print(){System.out.println("姓名:"+this.name+",年龄:"+this.age) ;}};public class Demo35{public static void main(String args[]){Person p1 = new Person("张三",30) ;p1.print() ;}}; 使用this还可以从一个构造方法中调用其他构造方法。例如:有以下一个要求,一个类中存在了三个构造方法,但是要求, 不管怎么调用,最终都要求可以在对象实例化的时候打印一个“新的对象产生了”的提示。class Person{private String name ;private int age ;public Person(){System.out.println("新的对象产生了") ;}public Person(String name){System.out.println("新的对象产生了") ;this.setName(name) ;}public Person(String name,int age){System.out.println("新的对象产生了") ;this.setName(name) ;this.setAge(age) ;}public void setName(String name){this.name = name ;}public void setAge(int age){this.age = age ;}public String getName(){return this.name ;}public int getAge(){return this.age ;}public void print(){System.out.println("姓名:"+this.name+",年龄:"+this.age) ;}}; 以上代码虽然可以实现功能,但是同样的代码出现了三次,而且后面的两次出现纯属多余吧。用this()的形式可以调用类中的无参构造方法。class Person{private String name ;private int age ;public Person(){System.out.println("新的对象产生了") ;}public Person(String name){// 最终都是调用无参构造方法this() ;this.setName(name) ;}public Person(String name,int age){this(name) ;this.setAge(age) ;}public void setName(String name){this.name = name ;}public void setAge(int age){this.age = age ;}public String getName(){return this.name ;}public int getAge(){return this.age ;}public void print(){System.out.println("姓名:"+this.name+",年龄:"+this.age) ;}};public class Demo36{public static void main(String args[]){Person p1 = new Person("张三",30) ;p1.print() ;}}; 注意点1:如果使用了this调用其他构造方法,则此语句,必须写在构造方法的首行。public void fun(){// 发现在调用fun方法的时候,必须先设置name的值this("zhangsan") ;} public Person(String name,int age){this.setAge(age) ;this(name) ; //--> 必须放在首行} 注意点2:使用this可以调用本类中的其他构造方法,但是至少留一个构造方法,作为程序的出口。public Person(){this("a",10) ;System.out.println("新的对象产生了") ;}public Person(String name){// 最终都是调用无参构造方法this() ;this.setName(name) ;}public Person(String name,int age){this(name) ; //--> 必须放在首行this.setAge(age) ;} this最重要的特性 —— 表示当前对象当前对象在程序中用以下形式体现:· 当前操作此方法的对象,就称为当前对象。class Demo{public void print(){System.out.println(this) ;}};public class Demo38{public static void main(String args[]){Demo d1 = new Demo() ;System.out.println(d1) ;d1.print() ;System.out.println("---------------------") ;Demo d2 = new Demo() ;System.out.println(d2) ;d2.print() ;}}; 回顾:之前讲解的两个对象比较的程序。// 在类的内部增加一个比较的方法public boolean compare(Person p){Person p1 = this ;Person p2 = p ;if(p1.name.equals(p2.name)&&p1.age==p2.age){return true ;}else{return false ;}} 分析程序的运行过程:class A{private B b = null ;public A(){this.b = new B(this) ;this.b.fun() ;}public void hello(){System.out.println("Hello World!!!") ;}};class B{private A a = null ;public B(A a){this.a = a ;}public void fun(){this.a.hello() ;}};public class OODemo40{public static void main(String args[]){A aa = new A() ;}}; 
      

  3.   

    当前对象就是你new出来的那个对象,没有特指,是泛指,!!!!
      

  4.   

    this指当前对象。
    比如一个类中,你使用this就是这个类。
    如果用this.属性和this.方法表示,这个属性是全局属性。方法是成员方法。
      

  5.   

    this:指调用当前方法或属性的对象。是哪个对象在调用这个方法,属性就是指哪个属性的
      

  6.   

    同意楼上几位的说发,this 就是当前类!
      

  7.   

    6楼说当前对象,7楼说当前类,我都晕了,到底是哪一个啊?是不是自动就有一个this在当中啊?想不通???
      

  8.   

     简单的说,一个类不论有多少个实例,方法总是在一起的。类调用非静态方法的时候,会把当前实例做为一个参数传入函数,这个参数在函数里命名为this。 是被系统隐含使用的。而静态方法,this是不传的。
      

  9.   

    this,写在哪个类里,指的就是谁。
      

  10.   

    this. 指你调用的那个对象,即当前对象。同意15L,多做点题 就能明了。
      

  11.   

    this通常的两种用法:
    1、this.调用,调用当前this所在类的成员(属性+方法);
    2、this() 作为对构造函数的调用。综述:this是所在类的句柄,也就是所在类能够创建的对象的 引用。
      

  12.   

    this就是你使用哪个对象就是那个对象的引用,,它指向自己本身。
      

  13.   

    this 你可以理解成为这个类
      

  14.   

    this就是当前的对象
    可以通过this.fun()来调用当前对象的方法
    通过this.a来调用当前对象那个的属性
    通过this()来调用当前对象的构造方法
      

  15.   

    this最简单的理解是指向当前对象。就是指向自己。
    调用自己的属性和方法或者是从父类继承的。
      

  16.   

    this 就是当前类的对象或方法
      

  17.   

    this可以得到当前对象,当然也可以得到本类属性
      

  18.   

    this 一般在java中有两种用法:1.表示当前对象,表示当前类中的实例(同js)2。调用重载的构造方法,例:
    public THIS(){
     String str;
     public THIS(){
      this("hehe");
     }
     public THIS(String str){
      this.str=str;
     }
    }
      

  19.   

    如果局部变量和类变量或者实例变量重名,要使用this关键字
    例如:
    public class Test{
      private String name;
      public void test(name){
        this.name = name ;//this.name 就是你的实例变量,=后面的name是局部变量
      }
    }
      

  20.   

    this就是在一个方法中,代指调用此方法的本类的对象的引用,主要用于区分同名类成员变量方法内的局域变量
      

  21.   

    2楼那哥们真能兴趣举例子,不过我没有时间看完。this相当于当前对象里面隐含的一个关键字,也就是说你调用某一个函数,function(),与this.function效果是一样的。那为什么还要用到this这个关键字呢,就是为了区别来自当前对象外面传过来的参数用的。
      

  22.   

    你只要记住 this代表当前类的本身就可以慢慢理解了 ,要自己多去体验,  做几次就明白了
      

  23.   

    我是新学的,其它的地方我不知道,但在Eclipse里面,43楼说的是不行的,比如在下例
    public class{
    private String name;
    public setName(String name){
    this.name=name; 

    }
    有this程序就可以正常运行,没this,Eclipse会提醒"name = name;"这条语句无意义,需要进行修改。this关键字的用法主要在3个地方:
    1.在类本身的方法或构造器中引用该类的实例变量和方法。
    2.将当前对象作为参数传递给其它方法或构造器
    3.用来调用其它的重载的构造器
      

  24.   

    this两种用法:
    一:相当于对象自身。例1:
     class A{
       public A getMyself(){
         return this;
       }
     }
     class B{
       public static void main(String[] args){
         A a1=new A();
         A a2=a1.getMyself();//此时引用a1和a2都指向new A()所产生的对象
       }
     }
     例2:
     class A{
       private int a=0;
       public void set(int a){
         this.a=a;//这里的this.a代表类A的一个对象内的变量a,也就是private int a=0;
       }
     }
    二:在构造方法中使用(这是一个特殊用法,但是经常会用到)
    例:
      class A{
        private int a;
        private float b;
        public A(){
          this(0,0.0f);//这里相当于调用了构造方法public A(int _a,float _b)
        }
        public A(int _a,float _b){
          a=_a;
          b=_b;
        }
      }
      

  25.   

    当然是当前对象的引用,this不能在静态方法里使用!因为只有非静态方法才会有隐含参数this
      

  26.   

    更多查看  http://www.java1995.cn/search/tag/java
      

  27.   

    this用在类代码中,指当前被实例化的对象。可以通过this引用内部变量等,一般不用写,默认就是类内部的变量,但当有变量与这些变量重名时,就需要利用this加以区分了。如
    public void setAge(int age){this.age = age ;} 
      

  28.   

    以前我也很困惑。不过后来我知道了。这么来理解:你想我们在不停的编类,当这些类实际应用的时候,一般都 要生成对象吧?这些对象就是this.
      

  29.   

    this调用本类中实例化的对象,以及本类对象的属性。
    还可以给基类构造函数传参数
      

  30.   

    this调用本类中实例化的对象,以及本类对象的属性。
    还可以给基类构造函数传参数
      

  31.   

    this调用本类中实例化的对象,以及本类对象的属性。
    还可以给基类构造函数传参数
      

  32.   

    哪个对象调用这个方法,this就代表这个对象
      

  33.   

    类A,类B  其中B是A的父类 
    在A类中通过this对象可访问A类的方法和属性,亦可以访问B类中的属性和方法,当用this访问B类的属性和方法时只能访问到B类中以public和protected修饰符修饰的方法和属性,若是访问A类则可访问到A类的所有方法和属性;
      

  34.   

    this是指向当前对象的引用,就好像super是指向父类对象的引用一样
      

  35.   

    1. this指针的用处: 
      一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。 
      例如,调用date.SetMonth(9) <===> SetMonth(&date, 9),this帮助完成了这一转换 . 
      2. this指针的使用: 
      一种情况就是,在类的非静态成员函数中返回类对象本身的时候,直接使用 return *this;另外一种情况是当参数与成员变量名相同时,如this->n = n (不能写成n = n)。 
      3. this指针程序示例: 
      this指针是存在与类的成员函数中,指向被调用函数所在的类实例的地址。 
      根据以下程序来说明this指针 
      #include<iostream.h> 
      class Point 
      { 
      int x, y; 
      public: 
      Point(int a, int b) { x=a; y=b;} 
      void MovePoint( int a, int b){ x+=a; y+=b;} 
      void print(){ cout<<"x="<<x<<"y="<<y<<endl;} 
      }; 
      void main( ) 
      { 
      Point point1( 10,10); 
      point1.MovePoint(2,2); 
      point1.print( ); 
      } 
      当对象point1调用MovePoint(2,2)函数时,即将point1对象的地址传递给了this指针。 
      MovePoint函数的原型应该是 void MovePoint( Point *this, int a, int b);第一个参数是指向该类对象的一个指针,我们在定义成员函数时没看见是因为这个参数在类中是隐含的。这样point1的地址传递给了this,所以在MovePoint函数中便显式的写成: 
      void MovePoint(int a, int b) { this->x +=a; this-> y+= b;} 
      即可以知道,point1调用该函数后,也就是point1的数据成员被调用并更新了值。 
      即该函数过程可写成 point1.x+= a; point1. y + = b; 
      4. 关于this指针的一个精典回答: 
      当你进入一个房子后, 
      你可以看见桌子、椅子、地板等, 
      但是房子你是看不到全貌了。 
      对于一个类的实例来说, 
      你可以看到它的成员函数、成员变量, 
      但是实例本身呢? 
      this是一个指针,它时时刻刻指向你这个实例本身
      

  36.   

    1. this指针的用处: 
      一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。 
      例如,调用date.SetMonth(9) <===> SetMonth(&date, 9),this帮助完成了这一转换 . 
      2. this指针的使用: 
      一种情况就是,在类的非静态成员函数中返回类对象本身的时候,直接使用 return *this;另外一种情况是当参数与成员变量名相同时,如this->n = n (不能写成n = n)。 
      3. this指针程序示例: 
      this指针是存在与类的成员函数中,指向被调用函数所在的类实例的地址。 
      根据以下程序来说明this指针 
      #include<iostream.h> 
      class Point 
      { 
      int x, y; 
      public: 
      Point(int a, int b) { x=a; y=b;} 
      void MovePoint( int a, int b){ x+=a; y+=b;} 
      void print(){ cout<<"x="<<x<<"y="<<y<<endl;} 
      }; 
      void main( ) 
      { 
      Point point1( 10,10); 
      point1.MovePoint(2,2); 
      point1.print( ); 
      } 
      当对象point1调用MovePoint(2,2)函数时,即将point1对象的地址传递给了this指针。 
      MovePoint函数的原型应该是 void MovePoint( Point *this, int a, int b);第一个参数是指向该类对象的一个指针,我们在定义成员函数时没看见是因为这个参数在类中是隐含的。这样point1的地址传递给了this,所以在MovePoint函数中便显式的写成: 
      void MovePoint(int a, int b) { this->x +=a; this-> y+= b;} 
      即可以知道,point1调用该函数后,也就是point1的数据成员被调用并更新了值。 
      即该函数过程可写成 point1.x+= a; point1. y + = b; 
      4. 关于this指针的一个精典回答: 
      当你进入一个房子后, 
      你可以看见桌子、椅子、地板等, 
      但是房子你是看不到全貌了。 
      对于一个类的实例来说, 
      你可以看到它的成员函数、成员变量, 
      但是实例本身呢? 
      this是一个指针,它时时刻刻指向你这个实例本身
      

  37.   

    this 关键字指向当前类,用this可以解决参数和当前类的属性字段名称相同的问题,也可以调用当前类的所有属性和方法。
      

  38.   

    this 指针不是指向当前对象么·具体情况如果都能说的清楚的话·程序也没这么高深啊
    个人认为指针真的很难
      

  39.   

    this 指当前类。 目的是当类改变的时候也可指向当前类
      

  40.   

    孙鑫的视频 java无难事 个人觉得讲得还可以!
      

  41.   

        每个对象都可以通过this指针访问自己的地址。对象的this指针不是对象本身的一部分。但this指针在每次非static成员函数调用对象时作为第一个隐式参数传递给对象。
        (1)this指针隐式引用对象的数据成员和成员函数
         (2)防止对象赋值给自己(函数重载会涉及到)
        (3)允许连续使用成员函数调用
    class point{
    public:
      point(){x=0;y=0;}
      point* GetPoint(){  return *this ; }
      void SetX(int x){ this->x=x; }
      void SetY(int y){ this->y=y;}
      int GetX(){ return x;}  //隐式引用,也可以显式引用,写成{return this->x;}
      int GetY(){ return y;}  //同上private:
       int x;
       int y;
    }
    void main()
    {
       point*p=new point();
       p->GetPoint()->SetX(10);// 连续使用成员函数调用,先调用GetPoint(),然后调用SetX()
       p->GetPoint()->SetY(10);// 连续使用成员函数调用
    }
        
      

  42.   

    忘了一点,补充一下:
    void SetX(int x){ this->x=x; } //显示引用,这时不能写为{ x=x ;},否则
                                         不能把括号中的参数x赋给类私有数据成员x,此x非彼x,
                                         所以要用this指针来区分。
    void SetY(int y){ this->y=y;}  //同上
      

  43.   

    this代表本类的实例
    例如
    class A
    {
      sting b = string.Empty;
      this.b = "123";  相当于
      A a = new A();
      a.b = "123";
    }
      

  44.   

    指着猪说 this is a pig! this 当然就是指头猪
      

  45.   

    当调用一个成员函数时,系统自动产生一个隐藏的指针,这个指针称为this指针,它始终指向产生这个调用的对象,并将该指针作为一个参数自动传递给该成员函数。这就是说,成员操作符总是要使用的,只不过在对象内是隐式的,而在对象外是显式的。即在对象内省略了this指针
      

  46.   

    楼主问的是Java的this还是js的this啊?
      

  47.   

    在Java和C#中,this指代对所在的对象的引用(如指代它所在的类)~不能指代静态对象
      

  48.   

    #2楼的仁兄解释的非常之详细啊!在面向对象中,一般的this指的是当前对象……
      

  49.   

    不在内部类的情况下,this就是主类的对象
    如果在内部类里用,就是内部类的对象
      

  50.   

    在哪个类里用this 就是指的哪个类的当前对象啦
      

  51.   

    this就是被屏蔽的当前类的对象
      

  52.   

    this是指当前对象(即具体实例),楼主在静态方法中用下this就明白了,会发现ide工具会提示你静态方法不能用this。为什么呢。因为静态方法是类一加载的时候就会初始化,是凌驾于实例之上的。此时还没有建立对象。this可以看做一个指针,更确切说是一个对象的引用,只有实例化一个实例的时候,才会产生这么一个引用,指向对象本身。