首頁 > Java > java教程 > Java語言的static修飾符有什麼作用

Java語言的static修飾符有什麼作用

王林
發布: 2023-04-18 14:38:20
轉載
1471 人瀏覽過

在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");   }
登入後複製

以上是Java語言的static修飾符有什麼作用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板