• <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • Java教程
    Java標識符與關鍵字
    Java變量
    Java數據類型
    Java運算符
    Java控制語句
    Java方法
    Java面向對象
    Java對象的創建和使用
    Java封裝
    Java中static和this
    Java繼承
    Java方法覆蓋和多態
    Java super
    Java基礎練習題

    Java static靜態方法

     

     

    方法在什么情況下會聲明為靜態的呢?方法實際上描述的是行為動作,我認為當某個動作在觸發的時候需要對象的參與,這個方法應該定義為實例方法,例如:每個玩籃球的人都會打籃球,但是你打籃球和科比打籃球最終的效果是不一樣的,顯然打籃球這個動作存在對象差異化,該方法應該定義為實例方法。再如:每個高中生都有考試的行為,但是你考試和學霸考試最終的結果是不一樣的,一個上了“家里蹲大學”,一個上了“清華大學”,顯然這個動作也是需要對象參與才能完成的,所以考試這個方法應該定義為實例方法。

     

    以上描述是從設計思想角度出發來進行選擇,其實也可以從代碼的角度來進行判斷,當方法體中需要直接訪問當前對象的實例變量或者實例方法的時候,該方法必須定義為實例方法,因為只有實例方法中才有this,靜態方法中不存在this。請看代碼:

     

    public class Customer {
    	String name;
    	public Customer(String name){
    		this.name = name;
    	}
    	public void shopping(){
    		//直接訪問當前對象的name
    		System.out.println(name + "正在選購商品!");
    		//繼續讓當前對象去支付
    		pay();
    	}
    	public void pay(){
    		System.out.println(name + "正在支付!");
    	}
    }

     

    public class CustomerTest {
    	public static void main(String[] args) {
    		Customer jack = new Customer("jack");
    		jack.shopping();
    		Customer rose = new Customer("rose");
    		rose.shopping();
    	}
    }

     

    運行結果如下圖所示:

     

    圖11-26:運行結果

     

    在以上的代碼中,不同的客戶購物,最終的效果都不同,另外在shopping()方法中訪問了當前對象的實例變量name,以及調用了實例方法pay(),所以shopping()方法不能定義為靜態方法,必須聲明為實例方法。

     

    另外,在實際的開發中,“工具類”當中的方法一般定義為靜態方法,因為工具類就是為了方便大家的使用,將方法定義為靜態方法,比較方便調用,不需要創建對象,直接使用類名就可以訪問。請看以下工具類,為了簡化“System.out.println();”代碼而編寫的工具類:

     

    public class U {
    	public static void p(int data){
    		System.out.println(data);
    	}
    	public static void p(long data){
    		System.out.println(data);
    	}
    	public static void p(float data){
    		System.out.println(data);
    	}
    	public static void p(double data){
    		System.out.println(data);
    	}
    	public static void p(boolean data){
    		System.out.println(data);
    	}
    	public static void p(char data){
    		System.out.println(data);
    	}
    	public static void p(String data){
    		System.out.println(data);
    	}
    }

     

    運行結果如下圖所示:

     

    圖11-27:測試工具類

     

    全部教程
  • <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 面对面棋牌游戏