this
1、當全域性變數跟區域性變數重名時,表示使用全域性變數(此時this指代本類物件)
例有一類class a
}2、構造方法相互呼叫,此時this指代本類類名
注意this只能放在構造方法第一句
如class b
b(string name)
}1. this是指當前物件自己。
當在乙個類中要明確指出使用物件自己的的變數或函式時就應該加上this引用。如下面這個例子中:
public class hello
public static void main(string args)
}執行結果:
s = helloworld!
1 -> this.s = hello
2 -> this.s = helloworld!
在這個例子中,建構函式hello中,引數s與類hello的變數s同名,這時如果直接對s進行操作則是對引數s進行操作。若要對類hello的成員變數s進行操作就應該用this進行引用。執行結果的第一行就是直接對建構函式中傳遞過來的引數s進行列印結果; 第二行是對成員變數s的列印;第三行是先對成員變數s賦傳過來的引數s值後再列印,所以結果是helloworld!
2. 把this作為引數傳遞
當你要把自己作為引數傳遞給別的物件時,也可以用this。如:
public class a
public void print()
} public class b
public void print()
} 執行結果:
hello from a!
hello from b!
在這個例子中,物件a的建構函式中,用new b(this)把物件a自己作為引數傳遞給了物件b的建構函式。
3. 注意匿名類和內部類中的中的this。
有時候,我們會用到一些內部類和匿名類,如事件處理。當在匿名類中用this時,這個this則指的是匿名類或內部類本身。這時如果我們要使用外部類的方法和變數的話,則應該加上外部類的類名。如下面這個例子:
public class a catch(interruptedexception ie)
} }
}; //注意這裡有;
thread.start();
} public void run()
public static void main(string args) throws exception
} 在上面這個例子中, thread 是乙個匿名類物件,在它的定義中,它的 run 函式裡用到了外部類的 run 函式。這時由於函式同名,直接呼叫就不行了。這時有兩種辦法,一種就是把外部的 run 函式換乙個名字,但這種辦法對於乙個開發到中途的應用來說是不可取的。那麼就可以用這個例子中的辦法用外部類的類名加上 this 引用來說明要呼叫的是外部類的方法 run。
4。在建構函式中,通過this可以呼叫同一class中別的建構函式,如
public class flower
flower(string ss){}
flower(int petals, sting ss)
} 值得注意的是:
1:在構造呼叫另乙個建構函式,呼叫動作必須置於最起始的位置。
2:不能在建構函式以外的任何函式內呼叫建構函式。
3:在乙個建構函式內只能呼叫乙個建構函式。
java中 this的用法
this關鍵字有三個主要的作用 1 在構造方法中呼叫其他構造方法。比如有乙個person類,有三個構造方法,某乙個建構函式中呼叫另外構造 方法,就要用到this,而直接使用person 是不可以的。2 返回當前物件的引用 3 區分成員變數和引數變數,解決區域性變數 引數變數與成員變數同名的問題。pu...
Java中final的用法
final類不能被繼承,沒有子類,final類中的方法預設是final的。final方法不能被子類的方法覆蓋,但可以被繼承。final不能用於修飾構造方法。final成員變數表示常量,只能被賦值一次,賦值後值不再改變。1 final類 final類不能被繼承,因此final類的成員方法沒有機會被覆蓋...
JAVA中static的用法
1.類中的static變數在類載入時首先被初始化,且只能初始化一次.2.所有物件共享類中的static變數.3.在建立子類的物件時,先初始化父類的static變數,再初始化子類的static.例項如下 輸出結果為 i m in class a s static i m in class b s st...