Java this關鍵字,static關鍵字

2021-07-27 13:53:11 字數 1520 閱讀 1442

1,this.屬性,this.方法,表示當前物件的屬性,當前類的方法

2,this,表示當前物件,當前正在操作這個方法的物件就是當前物件

3,使用this(引數若干),可以呼叫當前類的構造方法,如果,構造方法之間相互呼叫,則有要求:一:this()必須放在首行,二:至少有乙個構造方法是沒有呼叫this(引數若干)的,就是說構造之間不能迴圈呼叫。

不用static修飾的屬性或者方法,每個物件都有各自的屬性或方法,比如乙個person類有name,age兩個屬性,有p1,p2兩個物件,p1,p2分別有各自的兩個屬性,對應在堆記憶體中開闢空間;———–也就是說static可以用來宣告全域性屬性。

如果希望乙個屬性被所有物件所通擁有,則可以將其宣告為static的,宣告為static的屬性或方法,也成為類方法,可以直接通過類名稱直接呼叫。

class person

public

void

info()

};public

class staticdemo03

};

每乙個物件都擁有各自的堆疊空間,堆記憶體空間中儲存每個物件的各自的屬性,但是所有的static屬性是儲存在了全域性資料區之中,所有的物件指向全域性資料區中的乙個內容,所以當乙個物件修改static的全域性資料區中的內容之後,所有物件得到的全域性資料區中的內容都改變了。

上一張記憶體圖:

1,棧記憶體:儲存物件名稱,(儲存,訪問堆記憶體的位址)

2,堆記憶體:儲存每個物件的具體屬性

3,全域性資料區:儲存static型別的屬性

4,全域性**區:儲存所有方法的定義。

static的方法,不能呼叫非static的屬性或者方法,為什麼呢,因為,static的屬性或者方法,和非static的屬性或者方法,在記憶體中建立的時間是是不同的,建立的先後順序是不同的。

static的屬性或者方法,在物件宣告,建立之前就可以呼叫,因為它是通過類名稱直接呼叫的,所以,在這個類的物件建立之前呼叫,必然是ok的。

1,static屬性,在類的物件建立之前就開闢了空間了,而且它是被所有物件所共享的,那就可以在類的構造方法中,通過乙個static的屬性,用於統計,乙個類到底產生了多少個物件。

class demo 

};public

class staticdemo06

};

2,可以使用static為物件進行自動的編名操作。

class demo 

public

demo(string name)

public string getname()

};public

class staticdemo07

};

new關鍵字 this關鍵字 base關鍵字

使用new,所做的三件事 1.類是引用物件,引用物件是在堆中開闢空間 在堆中開闢空間 2.在開闢的堆空間中建立物件 3.呼叫物件的構建函式 4.隱藏父類成員 子類的成員可以與隱藏從父類繼承的成員,類似於重寫。public new void sayhello this關鍵字的使用 1.代表當前類的物件...

this關鍵字 static關鍵字

1.當成員變數和區域性變數重名,可以用關鍵字this來區分 this 代表物件,代表那個物件呢?當前物件 this就是所在函式所屬物件的引用 簡單說 那個物件呼叫了this所在的函式,this就代表哪個物件 this也可以用於在建構函式中呼叫其他建構函式 注意 只能定義在建構函式的第一行,因為初始化...

base關鍵字 this關鍵字

用於在派生類中實現對基類公有或者受保護成員的訪問,但是只侷限在建構函式 例項方法和例項屬性訪問器中。功能主要包括 1 呼叫基類上已被其他方法重寫的方法。2 指定建立派生類例項時應呼叫的基類建構函式。base常用於,在派生類物件初始化時和基類進行通訊。base可以訪問基類的公有成員和受保護成員,私有成...