Java的static

作者 | 2016-03-26

常有很多人為了能在main方法中使用方法外的變數、或呼叫其他的方法,而將變數設為static,並不是不能用,重點是,你用它的原因是什麼?

古早之前的程式語言(也沒多久,20年前吧),很多的軟體開發時常使用「全域變數(Global variable)」來存取資料,當時是沒問題的,因為那時還沒有「INTERNET」,程式只會在一台機器中執行。

但是現在,動不動就網路、服務的架構,如果觀念還是舊的,那問題可大了。舉例來說,購物車類別內的已購買數量如果定義為:
public static int itemCount;

在網頁伺服器中使用該類別時,就悲劇了,每個上你網站的人,在頁面中顯示的已購買數量會是目前站上人數的總購買量,如果濫用static,你的購物車內可能會有別人買的東西。static在物件導向中叫「類別層級變數」,同一類別產生的物件使用共同一份資料。

世界在變,頭腦也要跟著變,要用舊觀念去解釋新世界,是行不通的…,常看到有些老師教學範例、程式碼,或是其他專案的程式,一看到濫用static,背脊一陣冷風,可以想像要幫忙改或調正錯誤觀念的工作有多艱難。

相關文章:

Category: Java 標籤:,

關於 Hank Tom

專長為程式語言、雲端服務開發,Linux系統管理, 任職:利拓科技 技術長,海林行動科技 技術總監 輔仁大學 兼任助理教授 ,為 Android高效入門>深度學習、CentOS 7建置、管理與伺服器架設實戰、Java網路程式設計、雲端網頁程式設計-Google App Engine應用實作 等書作者

One thought on “Java的static

  1. Goden

    更慘的是,這個錯誤已經鑄下了。
    最慘的是,這個錯誤還已經有一段時間了。

    回覆

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *