4.6-全棧Java筆記:THIS關(guān)鍵字和STATIC關(guān)鍵字

this關(guān)鍵字

對象創(chuàng)建的過程和this的本質(zhì)

構(gòu)造方法是創(chuàng)建java對象的重要途徑,通過new關(guān)鍵字調(diào)用構(gòu)造器時,構(gòu)造器也確實返回了該類的對象,但這個對象并不是完全由構(gòu)造器負(fù)責(zé)創(chuàng)建的。創(chuàng)建一個對象分為如下四步:

1.?分配對象空間,并將對象成員變量初始化為0或空

2.?執(zhí)行屬性值的顯示初始化

3.?執(zhí)行構(gòu)造方法

4.?返回對象的地址給相關(guān)的變量

this的本質(zhì)就是“創(chuàng)建好的對象的地址”!??由于在構(gòu)造方法調(diào)用前,對象已經(jīng)創(chuàng)建。因此,在構(gòu)造方法中也可以使用this代表“當(dāng)前對象”?。

this最常的用法:

1.在程序中產(chǎn)生二義性之處,應(yīng)使用this來指明當(dāng)前對象;普通方法中,this總是指向調(diào)用該方法的對象。構(gòu)造方法中,this總是指向正要初始化的對象。

2.使用this關(guān)鍵字調(diào)用重載的構(gòu)造方法,避免相同的初始化代碼。但只能在構(gòu)造方法中用,并且必須位于構(gòu)造方法的第一句。

3.this不能用于static方法中。?

【示例?1this代表當(dāng)前對象示例

?public?class?? User {

????int?id;???????????//id

??? String?name;??//賬戶名

??? String?pwd; ??//密碼??


????public?? User() {

??? }

????public?? User(int?id, String name) {

?????? System.out.println("正在初始化已經(jīng)創(chuàng)建好的對象:"+this);

???????this.id?= ? id;???//不寫this,無法區(qū)分局部變量id和成員變量id

???????this.name?= ? name;

??? }

????public?void?? login(){

?????? System.out.println(this.name+",要登錄!");??//不寫this效果一樣

??? }


????public?static?void?? main(String[] args) {

?????? User? u3 =?new?? User(101,"高小七");

?????? System.out.println("打印高小七對象:"+u3);

?????? u3.login();

??? }

}

? ?示例1運(yùn)行效果

【示例?2this()調(diào)用重載構(gòu)造方法

public?class?? TestThis {?

????int?a,b,c;

??? TestThis(){

?????? System.out.println("正要初始化一個Hello對象");

??? }

??? TestThis(int?a,int?? b){

???????//TestThis();??? //這樣是無法調(diào)用構(gòu)造方法的!

???????this();???//調(diào)用無參的構(gòu)造方法,并且必須位于第一行!

???????a = a;//這里都是指的局部變量而不是成員變量

???????this.a?= ? a;//這樣就區(qū)分了成員變量和局部變量.??這種情況占了this使用情況的大多數(shù)!

???????this.b?= ? b;

??? }

??? TestThis(int?a,int?b,int?c){

???????this(a,b);????//調(diào)用帶參的構(gòu)造方法,并且必須位于第一行!

???????this.c?= ? c;

??? }

????void?? sing(){}


??? ?void?? chifan(){

???????this.sing();????//調(diào)用本類中的sing();

?????? System.out.println("你媽媽喊你回家吃飯!");

??? }

????public?static?void?? main(String[] args){

?????? TestThis hi =?new?? TestThis(2,3);

?????? hi.chifan();

??? }??

}?

static關(guān)鍵字

在類中,用static聲明的成員變量為靜態(tài)成員變量,也稱為類變量。?類變量的生命周期和類相同,在整個應(yīng)用程序執(zhí)行期間都有效。它有如下特點:

1.它為該類的公用變量,屬于類,被該類的所有實例共享,在類被載入時被顯式初始化。

2.對于該類的所有對象來說,static成員變量只有一份。被該類的所有對象共享??!

3.一般用“類名.類屬性/方法”來調(diào)用。(也可以通過對象引用或類名(不需要實例化)訪問靜態(tài)成員。)

4.所以在static方法中不可訪問非static的成員。?

【示例3static關(guān)鍵字的使用

?public?class?? User {

????int?id;???????????//id

??? String?name;??//賬戶名

??? String?pwd; ??//密碼

????static?? String?company="北京尚學(xué)堂";?//公司名稱

????public?? User(int?id, String name) {

???????super();

???????this.id?= ? id;

???????this.name?= ? name;

??? }

????public?void?? login(){

?????? System.out.println("登錄:"+name);

??? }

????public?static?void?? printCompay(){

//???? login();//調(diào)用非靜態(tài)成員,編譯就會報錯

?????? System.out.println(company);

??? }

????public?static?void?? main(String[] args) {

?????? User??u3?=?new?? User(101,"高小七");

?????? User.printCompay();

?????? User.company?=?"北京阿里爺爺";

?????? User.printCompay();

??? }

}

?示例3?運(yùn)行結(jié)果圖?

?示例3?內(nèi)存分析圖




「全棧Java筆記」是一部能幫大家從零到一成長為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發(fā)經(jīng)驗,曾在神州數(shù)碼、航天院某所研發(fā)中心從事軟件設(shè)計及研發(fā)工作,從小白逐漸做到工程師、高級工程師、架構(gòu)師。精通Java平臺軟件開發(fā),精通JAVAEE,熟悉各種流行開發(fā)框架。


筆記包含從淺入深的六大部分:

A-Java入門階段

B-數(shù)據(jù)庫從入門到精通

C-手刃移動前端和Web前端?

D-J2EE從了解到實戰(zhàn)

E-Java高級框架精解

F-Linux和Hadoop?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,871評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評論 19 139
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,280評論 0 62
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,038評論 0 11
  • 離春節(jié)還有兩三個月,騎樓已冒出幾間紅得發(fā)亮的小店。大燈籠掛在屋上方,長對聯(lián)躺在木凳上,里里外外全堆滿喜氣十足的裝飾...
    fb0bd01430d9閱讀 302評論 0 0

友情鏈接更多精彩內(nèi)容