淺析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 症結字用法,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!