国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

淺析java 的 static 關鍵字用法

2019-11-26 14:10:12
字體:
來源:轉載
供稿:網友

本篇淺析java中static的用法,主要五個方面:靜態成員變量,靜態方法,靜態塊,靜態內部類,靜態導包。

首先還是一張表格說一下靜態對象和非靜態對象的區別:

靜態對象 非靜態對象
歸屬 類共同具有 類的各個實例獨立擁有
內存分配 內存空間上固定的 附屬類分配
分配空間順序 優先分配靜態對象空間 優先分配靜態對象空間,初始化也一樣

1 靜態變量,靜態方法,靜態塊

靜態對象,靜態方法都是在原對象和方法上加上static關鍵字修飾,表示類可以直接調用這些,而不需要實例化后再調用。具有的好處是:

1--靜態對象的數據是全局唯一的,一改都改,可以保證數據的唯一性

2--引用方便,直接用類名.方法(屬性)就可以了,不用再get和set

當然靜態方法(變量,塊)也有相應的限制:

1--不能調用其他非靜態方法(只能調用static方法)

2--只能訪問static數據

3--不能以任何方式引用this或super

示例代碼:

public class StaticExercise {public static String sky="jeyson";public static String getMySky(String sky){return sky;}static {System.out.println("這是靜態塊中的內容--");System.out.println("靜態塊:"+getMySky(sky));}/*** ***靜態對象好處:* 1--靜態對象的數據是全局唯一的,一改都改,可以保證數據唯一。* 2--引用方便,直接類名.方法就行了,不用set和get* ***分配空間順序:* 先分配靜態對象空間再分配非靜態。初始化順序也是這樣* ***static final 修飾的成員變量和成員方法可以理解為全局變量(java中沒有全局變量概念)* ***靜態對象,方法,塊的限制:* 1--只能調用其他的static方法* 2--只能訪問static數據* 3--不能以任何方式引用this或super* 靜態對象測試*/@Testpublic void testStatic1(){System.out.println(sky);System.out.println("-----------------");System.out.println(getMySky(sky));System.out.println("-----------------");System.out.println(StaticTest.getSms());}} 

2 靜態內部類

當一個類跟另一個類(外部類)有緊密的聯系,一般只有用到外部類的時候才會用該類的話,可以將該類作為靜態的內部類。這樣就可以隨著類的加載而直接產生。不用再可以實例化。

使用方法:隨類一同被加載,調用直接外部類.內部類.靜態對象(方法)

示例代碼:

class StaticTest{public static String sms="to my sky";public static String getSms(){return sms;}/*** 靜態內部類* ***使用場景:* 內部類跟外部類聯系緊密,一般只有用到外部類的時候才會用到這個類* ***使用* 隨類一同被加載,直接外部類.內部類.靜態對象(方法)*/static class InnerStatic{public static final String MYSKY="MY FINAL SKY";}} @Testpublic void testStatic2(){System.out.println(StaticTest.InnerStatic.MYSKY);} 

2 靜態導包

如果要用的靜態方法所在的類跟當前類不在同一個包下,可以使用靜態導包。這樣你想要用的靜態方法或變量就相當于在該類中直接可見,無需再類名.靜態變量的方式調用。

使用方法:

import static 包名.類名.靜態成員變量(方法)

好處:

被導入的靜態變量和方法在該類中直接可見,直接用

壞處:

一定程度上降低了代碼的可讀性

代碼示例:

public class MyStaticImportTest {public static final int number=55;public static void getMyWords(){System.out.println("hello ,這是一個靜態導包的測試");}} import static com.generic.MyStaticImportTest.number;import static com.generic.MyStaticImportTest.getMyWords;/*** @Description:* 靜態*/public class StaticExercise {/*** 靜態導包* ***使用方法:* 直接靜態導入相應的變量和方法:(import static 包名.類名.靜態成員變量(方法)* import static com.generic.MyStaticImportTest.number;* import static com.generic.MyStaticImportTest.getMyWords;* *** 好處:* 被導入的靜態方法和變量在這個類中直接可見,無需再給出類名* *** 壞處* 一定程度上降低了代碼的可讀性*/@Testpublic void testStatic3(){//靜態導入后可以直接用int myNumber=number;getMyWords();}} 

以上所述是小編給大家介紹的淺析java 的 static 關鍵字用法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 静乐县| 芦溪县| 新乡市| 洪雅县| 鲜城| 吴川市| 琼海市| 东至县| 咸宁市| 临西县| 全椒县| 民勤县| 抚州市| 阳曲县| 婺源县| 新津县| 剑川县| 太白县| 龙门县| 星子县| 双辽市| 安庆市| 遵义县| 明光市| 昭平县| 和林格尔县| 马鞍山市| 夹江县| 西吉县| 大英县| 揭东县| 凭祥市| 凤山县| 安溪县| 兰溪市| 新晃| 会昌县| 磐石市| 镇康县| 军事| 嵊泗县|