国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

談?wù)?Java 中 this 的使用方法

2019-11-26 15:45:41
字體:
供稿:網(wǎng)友

1.  this是指當(dāng)前對象自己。
    當(dāng)在一個類中要明確指出使用對象自己的的變量或函數(shù)時(shí)就應(yīng)該加上this引用。如下面這個例子中:

復(fù)制代碼 代碼如下:

public class A {
  String s = "Hello";   
  public A(String s) {
    System.out.println("s = " + s);
    System.out.println("1 -> this.s = " + this.s);
    this.s = s;
    System.out.println("2 -> this.s = " + this.s);
  }

  public static void main(String[] args) {
    new A("HelloWorld!");
  }
}

運(yùn)行結(jié)果: 


s = HelloWorld!
1 -> this.s = Hello
2 -> this.s = HelloWorld!

    在這個例子中,構(gòu)造函數(shù)A中,參數(shù)s與類A的變量s同名,這時(shí)如果直接對s進(jìn)行操作則是對參數(shù)s進(jìn)行操作。若要對類A的變量s進(jìn)行操作就應(yīng)該用this進(jìn)行引用。運(yùn)行結(jié)果的第一行就是直接對參數(shù)s進(jìn)行打印結(jié)果;后面兩行分別是對對象A的變量s進(jìn)行操作前后的打印結(jié)果。

2.  把this作為參數(shù)傳遞

    當(dāng)你要把自己作為參數(shù)傳遞給別的對象時(shí),也可以用this。如:

復(fù)制代碼 代碼如下:

public class A {
  public A() {
    new B(this).print();
  }

  public void print() {
    System.out.println("Hello from A!");
  }
}

public class B {
  A a;
  public B(A a) {
    this.a = a;
  }

  public void print() {
    a.print();
    System.out.println("Hello from B!");
  }
}

運(yùn)行結(jié)果:
Hello from A!
Hello from B!

    在這個例子中,對象A的構(gòu)造函數(shù)中,用new B(this)把對象A自己作為參數(shù)傳遞給了對象B的構(gòu)造函數(shù)。

3.  注意匿名類和內(nèi)部類中的this。

    有時(shí)候,我們會用到一些內(nèi)部類和匿名類。當(dāng)在匿名類中用this時(shí),這個this則指的是匿名類或內(nèi)部類本身。這時(shí)如果我們要使用外部類的方法和變量的話,則應(yīng)該加上外部類的類名。如下面這個例子:

復(fù)制代碼 代碼如下:

public class A {
  int i = 1;

  public A() {
    Thread thread = new Thread() {
      public void run() {
        for(;;) {
          A.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 A();
  }
}

    在上面這個例子中, thread 是一個匿名類對象,在它的定義中,它的 run 函數(shù)里用到了外部類的 run 函數(shù)。這時(shí)由于函數(shù)同名,直接調(diào)用就不行了。這時(shí)有兩種辦法,一種就是把外部的 run 函數(shù)換一個名字,但這種辦法對于一個開發(fā)到中途的應(yīng)用來說是不可取的。那么就可以用這個例子中的辦法用外部類的類名加上 this 引用來說明要調(diào)用的是外部類的方法 run。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 永安市| 通榆县| 巴东县| 江城| 兴仁县| 中超| 盐津县| 怀安县| 拉孜县| 安龙县| 来宾市| 磴口县| 淮安市| 禄丰县| 鲜城| 灌南县| 榆社县| 肇州县| 灵璧县| 泾川县| 阳西县| 安仁县| 梁河县| 宁波市| 墨玉县| 开江县| 亳州市| 揭西县| 沙田区| 铅山县| 阿克陶县| 苍山县| 喜德县| 莒南县| 泗洪县| 娄烦县| 柳州市| 吴桥县| 临湘市| 基隆市| 阳朔县|