程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java語言入門教程(六):Java語言中的static修飾符

Java語言入門教程(六):Java語言中的static修飾符

編輯:關於JAVA

在Java類中,我們常常會看到static關鍵字,往往被稱為靜態的。Static修 飾符可以用來修飾數據成員,方法成員,但是不能修飾類(此處指外部類),不 能修飾構造方法。如:

package com.csst.vo;

 public class User {

       private String name;

       private static int count;

       public String getName() {

              return name;

       }

       public void setName(String name) {

              this.name = name;

       }

       public static int getCount() {

              return count;

       }

       public static void main(String[] args){

              User user1=new User();

              User user2=new User();

              user1.setName("Rose");

              user2.setName("Kate");

              user1.count=10;

              user2.count=20;

              System.out.println ("user1.name:"+user1.getName()+"  user2.name:"+user2.getName());

              System.out.println ("user1.count:"+User.getCount() +"user2.count:"+user2.count);

       }
}

該程序運行結果為:

user1.name:Rose user2.name:Kate

user1.count:20 user2.count:20 

我們可以發現,user1和user2的name屬性是不同的,分別為該對象調用 setName所指定的,而雖然user1和user2分別對count屬性指定了不同的值,但是 最終輸出的count值卻均為20。原因就是count被static修飾,而name沒有使用 count修飾。

被static修飾符修飾的數據成員或方法成員被稱為靜態成員,或者類成員, 沒有被static修飾的,被稱為實例成員。static成員只被初始化一次,所有的對 象共享,因此count會輸出兩個20。實例成員只有當初始化對象的時候才初始化 ,每次創建對象,都會被初始化一次。name在user1和user2被創建時,初始化了 2次,因此最終輸出的是Rose和Kate。

另外,static成員,由於是類共享的,所以不僅可以使用對象調用,也可以 使用類名調用。在static方法中,不能夠直接使用非靜態的成員,如果使用,必 須初始化對象,調用。如過在上面示例的User.java中有如下代碼,會發生編譯 錯誤。

public static void test(){

       setName("test");

}

可以修改如下:

public static void test(){

              User user=new User();

              user.setName("test");

}

千萬不要盲目的把成員聲明為static,一定要理解static成員的特點,否則 會造成雖然語法正確,但是邏輯錯誤的後果。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved