淺析java 的 static 症結字用法。本站提示廣大學習愛好者:(淺析java 的 static 症結字用法)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析java 的 static 症結字用法正文
本篇淺析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 * 靜態對象測試 */ @Test public 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"; } } @Test public 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; * *** 利益: * 被導入的靜態辦法和變量在這個類中直接可見,無需再給出類名 * *** 害處 * 必定水平上下降了代碼的可讀性 */ @Test public void testStatic3(){ //靜態導入後可以直接用 int myNumber=number; getMyWords(); } }
以上所述是小編給年夜家引見的淺析java 的 static 症結字用法,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!