程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 淺談 Java 中 this 的使用

淺談 Java 中 this 的使用

編輯:關於JAVA

1. this是指當前對象自己。 當在一個類中要明確指出使用對象自己的的變量或函數時就應該加上this引用。如下面這個例子中: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!");}} 運行結果:s = HelloWorld!1 -> this.s = Hello2 -> this.s = HelloWorld! 在這個例子中,構造函數A中,參數s與類A的變量s同名,這時如果直接對s進行操作則是對參數s進行操作。若要對類A的變量s進行操作就應該用this進行引用。運行結果的第一行就是直接對參數s進行打印結果;後面兩行分別是對對象A的變量s進行操作前後的打印結果。

2. 把this作為參數傳遞 當你要把自己作為參數傳遞給別的對象時,也可以用this。如: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() {print();System.out.println("Hello from B!");}} 運行結果:Hello from A!Hello from B! 在這個例子中,對象A的構造函數中,用new B(this)把對象A自己作為參數傳遞給了對象B的構造函數。

3. 注意匿名類和內部類中的中的this。 有時候,我們會用到一些內部類和匿名類。當在匿名類中用this時,這個this則指的是匿名類或內部類本身。這時如果我們要使用外部類的方法和變量的話,則應該加上外部類的類名。如下面這個例子: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函數裡用到了外部類的run函數。這時由於函數同名,直接調用就不行了。這時有兩種辦法,一種就是把外部的run函數換一個名字,但這種辦法對於一個開發到中途的應用來說是不可取的。那麼就可以用這個例子中的辦法用外部類的類名加上this 引用來說明要調用的是外部類的方法run。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved