java中this關鍵字的用法
對於this關鍵字,都不陌生,只要在java程式程式碼中都可見,下面是android中繫結按鈕監聽一段程式碼:
點選(此處)摺疊或開啟
-
button1.setOnClickListener(new OnClickListener() {
-
-
@Override
-
public void onClick(View v) {
-
// TODO 自動生成的方法存根
-
Intent intent = new Intent(MainActivity.this,SecondActivity.class);//傳入MainActivity作為上下文
-
startActivity(intent);
-
//MainActivity.this.startActivity(intent);
-
}
- });
下面看一段很常見的程式碼:
點選(此處)摺疊或開啟
-
public class this1{
-
-
private int i;
-
-
this1(int i){
-
this.i = i;
-
this.geti();
-
this1.printname();
-
int c = 0;
-
}
-
-
static{
-
-
int i = 9;
-
System.out.println("static塊中的i:" + i);
-
}
-
public void geti(){
-
-
System.out.println(this.i);
-
this.printname();
-
}
-
public static void printname(){
-
-
System.out.println("lios");
-
}
-
public static void main(String[] args){
-
-
new this1(1);
-
//geti();靜態方法內不可以呼叫非靜態方法,反之可以
-
}
- }
建構函式也是一個特殊的static方法,它沒有返回值,我是這樣理解的,在new出一個物件時系統自動呼叫了建構函式,用來初始化例項;在類中如果有static方法塊時(如上圖),系統載入時,首先初始化static欄位以及方法,然後才呼叫構造器,兩者有相似之處。上述個人看法可以說是無稽之談,當然深入的理解java構造器,還需要理解JVM機制,鑑於本人水平有限,這裡不作分析。
下面看一個很有趣的程式:
點選(此處)摺疊或開啟
-
public class This1 {
-
-
public int i = 0;
-
-
public This1 getthis(){
-
i++;
-
return this;
-
}
-
public void geti(){
-
-
System.out.println(i);
-
}
-
public static void main(String[] args){
-
-
This1 th = new This1();
-
th.getthis().getthis().getthis().getthis().geti();
-
System.out.println(th);
-
System.out.println(th.getthis());
-
System.out.println(th.getthis().getthis());
-
System.out.println(th.getthis().getthis().getthis());
-
System.out.println(th.getthis() == th.getthis().getthis());
System.out.println(th.getthis().getthis()== th.getthis().getthis().getthis().getthis());
-
}
- }
下面的程式碼也許會有點新奇:
點選(此處)摺疊或開啟
-
public class Thiss {
-
private int i;
-
Thiss(int i){
-
-
int j = i;
-
System.out.println("j:"+j);
-
}
-
public Thiss(String ss) {
-
this(1);
-
String s = ss;
-
System.out.println("s:"+s);
-
}
-
public Thiss() {
-
this("diy_os");
-
}
-
-
public static void main(String[] args){
-
- new Thiss();
- }
}
this可以將當前物件傳給其他方法:
點選(此處)摺疊或開啟
-
public class Person {
-
public void eat(Apple apple){
-
Apple appled = apple.getPeeled();
-
System.out.println("Yummy");
-
System.out.println(appled);
-
}
-
}
-
-
public class Peeler {
-
static Apple peel(Apple apple){
-
-
return apple;
-
}
-
}
-
-
public class Apple {
-
-
Apple getPeeled(){
-
return Peeler.peel(this);
-
}
-
}
-
-
public class PassingThis {
-
-
public static void main(String[] args){
-
-
Apple A = new Apple();
-
new Person().eat(A);
-
System.out.println(A);
-
System.out.println(A.getPeeled());
-
}
- }
文章用於學習總結,如有不當錯誤之處,請讀者指正!謝謝!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29876893/viewspace-1839283/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java中native關鍵字的用法Java
- java構造方法-this關鍵字的用法Java構造方法
- ORACLE中ESCAPE關鍵字用法Oracle
- JAVA中的關鍵字Java
- java中this關鍵字Java
- java中的static關鍵字Java
- java中的instanceof關鍵字Java
- Java中的各種關鍵字Java
- 在Java中this關鍵字的使用Java
- Java中transient關鍵字的作用Java
- java中static關鍵字的作用Java
- Java中的static關鍵字解析Java
- 【C#】as關鍵字的用法C#
- Java中final關鍵字Java
- Java中this與super關鍵字Java
- 【轉】C#中base關鍵字的幾種用法C#
- Java中的關鍵字和保留字Java
- Java開發筆記(五十五)關鍵字static的用法Java筆記
- 詳解C++的模板中typename關鍵字的用法C++
- 詳解 C++ 的模板中 typename 關鍵字的用法C++
- java中關於執行緒間協作所用關鍵字synchronized,wait,notify的用法Java執行緒synchronizedAI
- SQL INNER JOIN 關鍵字 用法SQL
- PostgreSQL 資料庫中 DISTINCT 關鍵字的 4 種用法SQL資料庫
- java中的static和final關鍵字Java
- Java開發筆記(四十九)關鍵字super的用法Java筆記
- JAVA面試題 淺析Java中的static關鍵字Java面試題
- Java 的 static 關鍵字Java
- Java中final關鍵字如何使用?Java
- 深入理解Java中的volatile關鍵字Java
- 併發系列之「Java中的synchronized關鍵字」Javasynchronized
- 深入理解Java中的final關鍵字Java
- javascript中的with關鍵字JavaScript
- [java]transient關鍵字Java
- java transient關鍵字Java
- java之this關鍵字Java
- Android Java開發中一些唬人的常用關鍵字用法,持續更新中。。。AndroidJava
- C語言中的關鍵字“ volatile”的用法C語言
- 【Java基本功】一文讀懂final關鍵字的用法Java