精華區beta b865060xx 關於我們 聯絡資訊
這是個我到目前已經回答過五次的問題 Q 在JAVA中,static關鍵字是什麼意思? A 使用static宣告的的member variable和member function 表示它是屬於class的,不是屬於instance的…… 這是什麼意思呢? 我們可以這樣想 在我們用c寫程式的時候 我們如果要call一個常用的function,例如說sin 我們只要include math.h就有sin的prototype可call了 可是在java裡,一切的東西都是放在物件裡的 所以sin無可避免的也放在物件裡 可是我們要call 它的時候怎麼辦呢? 按照一般物件導向的觀念 我們得先由class造出一個instance,再call instance裡的method 那是不是表示假如我今天只要做一個三角函數運算 我就得造一個instance呢?這其實是很浪費的想法 所以 static 其實是提供一個讓我們不用new instance就call functon或get const 的方法 下頭是個簡單的例子 class Math{ public static float PI=3.1415926; public float pi; float tocal; Math(float input){ tocal=input; pi=3.1415926; } public static float SIN(float x){ //code predefined } public float sin(){ //code to return sin(tocal) } } 今天我們有以下取得ㄆㄞ的方法 一是用 iwant=Math.PI 二是 Math test=new Math(2.5); iwant=test.pi; 三是 iwant=(new Math(2.5)).pi; (二和三其實是類似的) 同理我們有幾個求sin 2.5的方法 一是用 sinvalue=Math.SIN(2.5); 二是用 sinvalue=(new Math(2.5)).sin(); 所以大家了解其中的不同了嗎? 因此在java application中的main要訂成static的原因就在這裡 如此一來我們便不需要去訂實體的instance才能執行java application 那有人會說:java applet何以不用? 那是因為其實browser會為我們create一個applet instance…… -- ※ 發信站: 批踢踢實業坊(ptt.m8.ntu.edu.tw) ◆ From: tp246-83.dialup