日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java中static、final 和 static final之间的区别

發布時間:2025/3/12 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中static、final 和 static final之间的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java中static、final 和 static final之間的區別

static可以修飾:全局屬性,方法,代碼塊,內部類(靜態內部類或嵌套內部類)

由于靜態屬性和方法是屬于該類的所有對象的,所以可以用類名.靜態屬性/方法名來訪問。用static修飾的代碼塊表示靜態代碼塊,當Java虛擬機(JVM)加載類時,就會執行該代碼塊。 1.被static修飾的變量,叫靜態變量或類變量(不能是局部變量),直接可以用類名調用;被static修飾的變量,叫實例變量,必須實例化對象以后調用;static修飾的變量可以被修改. 2.靜態方法可以直接通過類名調用,任何的實例也都可以調用,因此靜態方法中不能用this和super關鍵字,也不能直接訪問所屬類的實例變量和實例方法(非static的成員變量和成員成員方法),只能訪問所屬類的靜態成員變量和成員方法。 3.父子類中,靜態方法只能被靜態方法覆蓋,父子類中,非靜態方法只能被非靜態方法覆蓋。 常見的java中的main方法必須有static修飾,因為在類加載時無法創建對象,靜態方法可以不通過對象調用,所以在類的main方法所在在類加載時就可以通過main方法入口來運行程序。 4.static代碼塊也叫靜態代碼塊,是在類中獨立于類成員的static語句塊,可以有多個,位置可以隨便放,它不在任何的方法體內,JVM加載類時會執行這些靜態的代碼塊,如果static代碼塊有多個,JVM將按照它們在類中出現的先后順序依次執行它們,每個代碼塊只會被執行一次。

final可以修飾:方法,類,局部變量

對于基本類型數據,final會將值變為一個常量,創建后不能被修改;但是對于對象句柄(亦可稱作引用或者指針),final會將句柄變為一個常數(進行聲明時,必須將句柄初始化到一個具體的對象。而且不能再將句柄指向另一個對象。但是,對象的本身是可以修改的。這一限制也適用于數組,數組也屬于對象,數組本身也是可以修改的。方法參數中的final句柄,意味著在該方法內部,我們不能改變參數句柄指向的實際東西,也就是說在方法內部不能給形參句柄再另外賦值)。 1.final修飾的變量就會變成常量,而且應當大寫,一旦賦值不能改變,final的常量不會有默認初始值,對于直接在初始化賦值時final修飾符常和static修飾符一起使用。 2.final修飾的方法將不能被其子類覆蓋重寫。 3.final修飾的類類將不能被繼承,且final類中的方法也都是final的, final不能用來修飾構造方法,在父類中如果有常量屬性,在子類中使用常量屬性時是不會進行父類的類加載。

static final和final static

沒什么區別,一般static寫在前面,既具有static屬性又具有final屬性的類/方法/變量。

JAVA中static與final與static final關鍵字的簡述

static:強調唯一性,它的使用無需建立對象,也就是一個類中所有static修飾的量或方法就是唯一的,對象的不同不會影響到他,甚至不建立對象都可以使用static修飾的量或方法。所以聲明時必須初始化!!!!static只能修飾內部類,修飾以后的內部類可以像普通外部類一樣調用。

final:強調不變性,但是必須建立對象才能調用,隨著對象的不同,final修飾的量也可以不同,所以他的初始化可以在聲明時進行,也可以在構造函數中進行,當然他修飾的類不可以繼承,修飾的量不可以改變。

static final:結合上述兩者特性,使用無需實例化,聲明必須初始化。

Java中static、final、static final的區別和使用

一. final

  • final類不能被繼承,類中的方法默認是final;
  • final方法不能被覆蓋,但可以被繼承,就是不可修改的意思;
  • final成員變量表示常量,表示一但賦值就不能被修改;
  • final不能用于修飾構造函數;
  • private修飾的方法默認是final的,即不能被覆蓋。
  • 注意:final變量定義的時候,可以先聲明,而不給初值,這中變量也稱為final空白,無論什么情況,編譯器都確保空白final在使用之前必須被初始化。

    二、static

    注意: static表示“全局”或者“靜態”的意思,用來修飾成員變量或者方法,也可以形成靜態的static的代碼塊,但是Java中沒有全局變量的概念。

    詳細講解: 被static修飾的成員變量或者方法獨立于該類的任何對象。也就是說,它不依賴于類特定的實例,被類的所有實例共享。只要這個類被加載,Java虛擬機就可以根據類名在運行時數據區的方法區內找到他們

    因此,static對象可以在他的任何對象創建之前訪問,無需引用任何對象,當聲明其他類的對象時,不生成static變量的副本,而是類的所有實例共享同一個static變量。

    三、static final

    注意: static final用來修飾的成員變量和成員方法,可以理解為“全局變量”。

  • 對于變量,表示一旦賦值就不可以修改,并且通過類名可以訪問;
  • 對于方法,表示不可覆蓋,并且可以通過類名直接訪問。
  • 對于被static final修飾的實例變量,實例本身不能再改變,但對于一些容器類型(比如:ArrayList、HashMap)的實例變量,不改變容器本身,但可以修改容器中的存放的對象
  • 總結

    以上是生活随笔為你收集整理的java中static、final 和 static final之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。