本篇淺析java中static的用法,主要五個方面:靜態成員變量,靜態方法,靜態塊,靜態內部類,靜態導包。java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
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());
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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"
;
}
}
|
1
2
3
4
|
@Test
public
void
testStatic2(){
System.out.println(StaticTest.InnerStatic.MYSKY);
}
|
1
2
3
4
5
6
|
public
class
MyStaticImportTest {
public
static
final
int
number=
55
;
public
static
void
getMyWords(){
System.out.println(
"hello ,這是一個靜態導包的測試"
);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
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();
}
}
|