這是個我到目前已經回答過五次的問題
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