熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

淺談 Java 中 this 的使用

2013-11-15 11:44:31  來源: JSP教程 

   this是指當前對象自己
  當在一個類中要明確指出使用對象自己的的變量或函數時就應該加上this引用如下面這個例子中:
  
  public class A {
  
  String s = Hello;
  
  public A(String s) {
  Systemoutprintln(s = + s);
  Systemoutprintln( > thiss = + thiss);
  thiss = s;
  Systemoutprintln( > thiss = + thiss);
  }
  
  public static void main(String[] args) {
  new A(HelloWorld!);
  }
  }
  
  運行結果
  
  s = HelloWorld!
   > thiss = Hello
   > thiss = HelloWorld!
  
  在這個例子中構造函數A中參數s與類A的變量s同名這時如果直接對s進行操作則是對參數s進行操作若要對類A的變量s進行操作就應該用this進行引用運行結果的第一行就是直接對參數s進行打印結果後面兩行分別是對對象A的變量s進行操作前後的打印結果
  
   把this作為參數傳遞
  當你要把自己作為參數傳遞給別的對象時也可以用this
  
  public class A {
  public A() {
  new B(this)print();
  }
  
  public void print() {
  Systemoutprintln(Hello from A!);
  }
  }
  
  public class B {
  A a;
  public B(A a) {
  thisa = a;
  }
  
  public void print() {
  aprint();
  Systemoutprintln(Hello from B!);
  }
  }
  
  運行結果
  Hello from A!
  Hello from B!
  
  在這個例子中對象A的構造函數中用new B(this)把對象A自己作為參數傳遞給了對象B的構造函數
  
   注意匿名類和內部類中的中的this
  有時候我們會用到一些內部類和匿名類當在匿名類中用this時這個this則指的是匿名類或內部類本身這時如果我們要使用外部類的方法和變量的話則應該加上外部類的類名如下面這個例子
  
  public class A {
  int i = ;
  
  public A() {
  Thread thread = new Thread() {
  public void run() {
  for(;;) {
  Athisrun();
  try {
  sleep();
  } catch(InterruptedException ie) {
  }
  }
  }
  };
  threadstart();
  }
  
  public void run() {
  Systemoutprintln(i = + i);
  i++;
  }
  
  public static void main(String[] args) throws Exception {
  new A();
  }
  
  }
  
  在上面這個例子中 thread 是一個匿名類對象在它的定義中它的 run 函數裡用到了外部類的 run 函數這時由於函數同名直接調用就不行了這時有兩種辦法一種就是把外部的 run 函數換一個名字但這種辦法對於一個開發到中途的應用來說是不可取的那麼就可以用這個例子中的辦法用外部類的類名加上 this 引用來說明要調用的是外部類的方法 run

From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19538.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.