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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java基础之static关键字的用法

發(fā)布時(shí)間:2024/10/12 java 79 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础之static关键字的用法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? Java中的static關(guān)鍵字主要用于內(nèi)存管理。我們可以應(yīng)用static關(guān)鍵字在變量、方法、塊和嵌套類中。 static關(guān)鍵字屬于類,而不是類的實(shí)例。
? ? ? ? 靜態(tài)(static)可以是:

  • 變量(也稱為類變量)
  • 方法(也稱為類方法)
  • 代碼塊
  • 嵌套類

? ? ? ? 修飾變量

? ? ? ? 被static修飾的變量稱作靜態(tài)變量或類變量;沒(méi)有被static修飾的變量,稱為實(shí)例變量。靜態(tài)變量在內(nèi)存中只有一個(gè)拷貝(節(jié)省內(nèi)存),JVM只為靜態(tài)變量分配一次內(nèi)存,在類加載的過(guò)程中完成靜態(tài)變量的內(nèi)存分配(存儲(chǔ)在“方法區(qū)”),可用類名直接訪問(wèn)(方便),當(dāng)然也可以通過(guò)對(duì)象來(lái)訪問(wèn)(但是這是不推薦的)。對(duì)于實(shí)例變量,每創(chuàng)建一個(gè)類的實(shí)例,就會(huì)為實(shí)例變量分配一次內(nèi)存,實(shí)例變量可以在內(nèi)存中有多個(gè)拷貝,互不影響(靈活)。

? ? ? ? 靜態(tài)成員變量的初始化順序按照定義的順序進(jìn)行初始化,static不可以修飾局部變量,即使靜態(tài)方法里面也不可以有靜態(tài)變量,同時(shí)也不能引用非靜態(tài)方法,因?yàn)閟tatic修飾的變量或方法是在加載類的同時(shí)加載的,此時(shí)非靜態(tài)的變量、方法等還未被加載,當(dāng)然就無(wú)法引用了。但是,非靜態(tài)方法或類卻能正常引用靜態(tài)變量或方法。因?yàn)榉庆o態(tài)總是在靜態(tài)之后出現(xiàn)的。

? ? ? ? 靜態(tài)變量并不是所在類的某個(gè)具體對(duì)象所有,而是該類的所有對(duì)象所共有的,靜態(tài)變量既能被對(duì)象調(diào)用,也能直接拿類來(lái)調(diào)用。所以一般在需要實(shí)現(xiàn)以下兩個(gè)功能時(shí)使用靜態(tài)變量:在多個(gè)對(duì)象之間共享時(shí)、方便訪問(wèn)變量時(shí)。靜態(tài)變量不管是否被transient修飾,均不能被序列化。

? ? ? ? 修飾方法

? ? ? ? 被static修飾的方法稱作靜態(tài)方法,由于靜態(tài)方法不依賴于任何對(duì)象就可以進(jìn)行訪問(wèn),因此對(duì)于靜態(tài)方法來(lái)說(shuō),是沒(méi)有this的,因?yàn)樗灰栏接谌魏螌?duì)象,既然都沒(méi)有對(duì)象,就談不上this了。并且由于這個(gè)特性,在靜態(tài)方法中不能訪問(wèn)類的非靜態(tài)成員變量和非靜態(tài)成員方法,因?yàn)榉庆o態(tài)成員方法/變量都是必須依賴具體的對(duì)象才能夠被調(diào)用。但是要注意的是,雖然在靜態(tài)方法中不能訪問(wèn)非靜態(tài)成員方法和非靜態(tài)成員變量,但是在非靜態(tài)成員方法中是可以訪問(wèn)靜態(tài)成員方法/變量的。靜態(tài)方法一般用于工具類中,可以直接拿類名調(diào)用工具方法進(jìn)行使用。

? ? ? ? 對(duì)于靜態(tài)方法需要注意以下幾點(diǎn):

  • 它們僅能調(diào)用其他的static 方法。
  • 它們只能訪問(wèn)static數(shù)據(jù)。
  • 它們不能以任何方式引用this 或super。

? ? ? ? 修飾類

? ? ? ? 被static修飾的類稱作靜態(tài)內(nèi)部類。一般一個(gè)普通類是不允許被聲明為靜態(tài)的,但在內(nèi)部類中可以將其聲明為static的,這時(shí)外部類可以直接調(diào)用內(nèi)部類,因?yàn)殪o態(tài)內(nèi)部類是在加載外部類的同時(shí)加載的,所以并不要實(shí)例化外部類就能直接調(diào)用靜態(tài)內(nèi)部類。靜態(tài)內(nèi)部類只能訪問(wèn)外部類的靜態(tài)成員,不能直接訪問(wèn)外部類的實(shí)例變量或?qū)嵗椒ā?/p>

? ? ? ? 靜態(tài)塊

? ? ? ? static代碼塊也叫靜態(tài)代碼塊,是在類中獨(dú)立于類成員的static語(yǔ)句塊,可以有多個(gè),位置可以隨便放,它不在任何的方法體內(nèi)。JVM加載類時(shí)會(huì)執(zhí)行這些靜態(tài)的代碼塊,如果static代碼塊有多個(gè),JVM將按照它們?cè)陬愔谐霈F(xiàn)的先后順序依次執(zhí)行它們(自動(dòng)執(zhí)行),每個(gè)代碼塊只會(huì)被執(zhí)行一次,所以說(shuō)static塊可以用來(lái)優(yōu)化程序性能。當(dāng)一個(gè)類中既有static{}塊又有static變量的時(shí)候,同樣遵循“先定義先執(zhí)行”的原則。

? ? ? ? 靜態(tài)導(dǎo)包

? ? ? ? 使用import static語(yǔ)句代替import靜態(tài)導(dǎo)入包是JDK1.5中的新特性,可以導(dǎo)入一個(gè)類里的一切被static修飾的東西,包括變量、常量、方法和內(nèi)部類。

轉(zhuǎn)載于:https://www.cnblogs.com/Y-oung/p/8947576.html

總結(jié)

以上是生活随笔為你收集整理的Java基础之static关键字的用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。