1 public class A{ 2 public static void main(String []args){ 3 4 A.sayHi(); 5 A a= new A(); 6 boy.lookMe(); 7 } 8 private static String sayHi()//靜態方法 9 { 10 return "Hi"; 11 } 12 private String lookMe()//非靜態方法 13 { 14 return "you are beautiful"; 15 } 16 }
區別:
首先,兩者本質上的區別是:靜態方法是在類中使用staitc修飾的方法,在類定義的時候已經被裝載和分配。而非靜態方法是不加static關鍵字的方法,在類定義時沒有占用內存,只有在類被實例化成對象時,對象調用該方法才被分配內存。
其次,靜態方法中只能調用靜態成員或者方法,不能調用非靜態方法或者非靜態成員,而非靜態方法既可以調用靜態成員或者方法又可以調用其他的非靜態成員或者方法。
1.靜態方法可以通過類名直接調用。
用法: A.sayHi(); 優點是調用方便。
2.非靜態的方法是先聲明類實例才能調用類中的方法.
用法:A a = A();
a.lookMe();
3.我們一般常用的方法是靜態方法。靜態的速度快,占內存。動態的速度相對慢些,但調用完后,立即釋放類,可以節省內存,可以根據自己的需要選擇是用普通方法還是靜態方法。
4.靜態方法主要的問題就是數據同步的問題。如果你的靜態方法的類中不保存私有變量那么什么問題都不會有的。最好是包要操作的數據全部以參數的方式傳到方法中去
5. 靜態方法是類方法,調用時不需要創建類實例。
6. 靜態方法是靜態綁定到子類,不是被繼承。
