JAVA中this关键字的用法

this关键字主要有三个应用:

1.调用本类中的属性,也就是类的成员变量;

2.调用本类中的其他方法;

3.调用本类中的其他构造方法,调用时候要放在构造方法的首行。

* this关键词除了可以调用变量或者成员方法之外,最引人注目的是它可以返回类的引用。如在本类中使用return this ,即可返回对类的引用。如代码在student类上,那么return this 即代表着return student。

*------------------------------------------------------------------------------------------------------------------------------------分割线——————————————————————————————————————————————————————————*

java中构造方法的特性:

  • 当前类的其他构造方法通过this语句调用;
  • 当前类的子类的构造方法通过super语句调用;
  • 在程序中通过new语句调用。

 *------------------------------------------------------------------------------------------------------------------------------------分割线——————————————————————————————————————————————————————————*

参考文档 :http://www.cnblogs.com/nolonely/p/5916602.html

1.当成员变量和局部变量重名的时候,在方法中使用this则代表的是类的成员变量。

2.把自己当作参数传递时,也可以用this.(this作当前参数进行传递)

3.有时候,我们会用到一些内部类和匿名类,如事件处理。当在匿名类中用this时,这个this则指的是匿名类或内部类本身。这时如果我们要使用外部类的方法和变量的话,则应该加上外部类的类名。如:

public class HelloB {
    int i = 1;
 
    public HelloB() {
       Thread thread = new Thread() {
           public void run() {
              for (int j=0;j<20;j++) {
                  HelloB.this.run();//调用外部类的方法
                  try {
                     sleep(1000);
                  } catch (InterruptedException ie) {
                  }
              }
           }
       }; // 注意这里有分号
       thread.start();
    }
 
    public void run() {
       System.out.println("i = " + i);
       i++;
    }
   
    public static void main(String[] args) throws Exception {
       new HelloB();
    }
}

4.在构造函数中,通过this可以调用同一类中别的构造函数。如:

public class Test{
  private static String b = "dsd";
  
  public Test(){
    this(b);
    
  }
  
  public Test(String a){
    System.out.println(a);
  }
  
}

5.this同时传递多个参数

public class TestClass {
    int x;
    int y;
 
    static void showtest(TestClass tc) {//实例化对象
       System.out.println(tc.x + " " + tc.y);
    }
    void seeit() {
       showtest(this);
    }
 
    public static void main(String[] args) {
       TestClass p = new TestClass();
       p.x = 9;
       p.y = 10;
       p.seeit();
    }
}

  

原文地址:https://www.cnblogs.com/ycmxm/p/7026868.html