java的static方法和變數

http://www.programmer-club.com.tw/showSameTitleN/newuser/935.html


2002/4/10 上午 09:44:51
我也不是非常的了解, 所以只能將我所知道的用法提出來...

基本上, 當一個變數被宣告成 static 的時候,

就表示它在記憶體裡只會有"一個它"存在...

** EX.1 **

public class TestA {
public static int num;

public static methodA() {
....
}
....
}

從上面的例子來看,

假如你製造出三個 TestA 的物件,

其變數 num 還是只有一個,

也就是說, 那三個 TestA 的物件分享的那個變數 num...

所以, 當其中一個 TestA 改變了 num 的值,

另外兩個 TestA 物件裡的 num 也會跟著改變 (因為都是同一個 num)...

還有, static 提供了一個直接存取的作用,

也就是說, 不用先做出 TestA 的物件就可以得到或使用 num 的值...

** EX.2 **

public class TestB {

public void methodB() {
if (TestA.num == 1) {  //直接使用 num
TestA.methodA();  //直接使用 methodA
....
}
....
}

從上面的例子來看, 我們就可以發現到,
只要有 class 的名稱加上 "." 再加上變數的名稱就可以直接用其值...

至於 static 方法也是一樣, 不用先做出 TestA 的物件就可以使用其方法 (看 EX.2)...

不過, static 方法與變數不同之處是 static 方法沒有單一性, 而變數有...

另外, 有一點要特別注意的,

就是"只有 static 的變數才能被 static 的方法處理"...

原因是 static 方法能直接被使用, 而"非 static 的變數"則必須要等物件被製造出來後才存在...

...........

嗯... 至於 static 的變數和方法的使用時機嘛...

原則上是能不用就不用, 直到有某些特殊情況才用...

譬如說有需要令某變數非單一存在不可, 或是需要直接存取其值等等...

...........

我所了解的大概就這樣, 希望能幫到你... ^^

如果有錯誤, 還望各位前輩不吝賜教...

留言

  1. 1、static 提供了一個直接存取的作用

    2、記憶體裡只會有"一個它"存在.

    3、當其中一個 TestA 改變了 num 的值,另外兩個 TestA 物件裡的 num 也

    會跟著改變

    4、 class 的名稱加上 "." 再加上變數的名稱就可以直接用其值

    回覆刪除

張貼留言

這個網誌中的熱門文章

歐姆龍 HEM-7600T 評價,購買心得分享(打臉文)

超任 三國志3代,登入武將金手指

年青人眼鏡評價(負評),辛酸血淚史分享文