Java中this和static關鍵字的全面剖析

2021-09-05 10:11:15 字數 1892 閱讀 6612

先概述一下this的功能:

(1):this表示本類屬性

(2):this表示本類方法

(3):this表示當前物件

(1)下面來看一段**:

class person

public string getmessage()

}public class class2

}

若將這段**輸出,將會得到結果: null  0

導致這個結果是為什麼呢?

原因在於這兩段**:

name = name;

age = age;

這兩段**並沒有達到我們想要的結果,這裡的age和name並不是我們類中定義的屬性,而是就近原則⭐而來的形參,所以相當於形參給形參賦值,而我們的屬性並沒有賦值;最後列印出來的就是初始值了。

正確寫法:

this.name = name;

this.age = age;

有了this關鍵字,則this.name表示的是本類屬性name;

⭐規範:只要在類中方法訪問類中屬性,一定要加this關鍵字;⭐

(2)this呼叫構造方法

來看這樣定義的乙個類:

class person

//構造方法過載

public person(string name)

public person(string name, int age)

public string getmessage()

public void setname(string name)

public void setage(int age)

}

這個類當中有三個構造方法,使用了構造方法過載,但每個構造方法中都有一句

system.out.println("************************「);

這樣顯得很不規範,我們在程式設計時,同樣的**千萬不能重複出現⭐,否則很不規範,降低開發效率;

那如何來解決這個問題呢,當然想到了我們的關鍵字this

class person

//構造方法過載

public person(string name)

public person(string name, int age)

public string getmessage()

public void setname(string name)

public void setage(int age)

}

this呼叫普通方法就是:this.方法名

這裡不再詳細的講如何呼叫普通方法,很簡單!

//        this表示當前物件

class person

}public class class2

}

這段**的結果為:

當前物件為person@1db9742

person@1db9742

-------------------------------

當前物件為person@106d69c

person@106d69c

c語言中的static和c 中的static比較

c語言中 static如果是修飾的全域性變數表示,該變數不能被其他檔案使用,函式也是一樣.如果修飾區域性變數,那麼,該變數存放在靜態區,只能被初始化一次,生命週期隨之檔案的結束而結束.c 中 static修飾的變數,只能在類外初始化,而且,必須初始化,可以由類直接訪問,可以在同族類中實現資料共享,在...

java裡為什麼主函式前面要加static修飾

先說一下static 1.static 修飾的域,我們叫靜態域,它是歸類所有的,被所有物件所共享,只有乙個 2.static修飾的區塊,域只會初始化一次 3.static修飾的域或方法,可以直接通過類的名字加上.進行呼叫 4.static修飾的方法內不能直接使用非靜態成員 static關鍵字,告知編...

java中重寫和過載

過載是如 public class myslidingdrawer extends slidingdrawer public myslidingdrawer context context,attributeset attrs,int defstyle 其中myslidingdrawer的2個構造函...