編程中靜態(tài)修飾符到底有什么作用?
在主函數(shù)外面定義的變量榆苞,如果你要在主函數(shù)里面調(diào)用的話一定要用靜態(tài)修飾符,來修飾你的變量。
這是因為靜態(tài)函數(shù)股缸,不是通過對象的實例來調(diào)用的,它是通過類來調(diào)用的容为。
而非靜態(tài)變量乓序,是通過類實例來調(diào)用的。
這樣看坎背,主函數(shù)作為一個靜態(tài)函數(shù)替劈,如果想調(diào)用外部定義的變量,那也就是通過類這一級進行調(diào)用得滤。
當然啦陨献,如果說你在這個主函數(shù)外面定義一個變量,然后又在非靜態(tài)函數(shù)里面調(diào)用它懂更,那你就不需要加靜態(tài)修飾符眨业,但是這樣子定義的變量是沒有用處的,因為你在這個類里只要有一個靜態(tài)的main函數(shù)沮协,就證明這個類是一個有出口的類龄捡。
從理論上講,是可以用這個類作為一個實例化的對象慷暂,在其他類中進行調(diào)用聘殖,但是這樣子設(shè)計軟件程序的話,就不對啦行瑞。
這會造成你的程序至少有兩個以上的出口奸腺。
這個在程序設(shè)計里面算是個錯誤。
現(xiàn)在簡單說一下血久,靜態(tài)修飾符的作用突照。
靜態(tài)修飾符可以用來修飾主函數(shù)作為程序的入口。程序加載時氧吐,這個主函數(shù)也會被加載讹蘑,不需要實例化末盔,對象來調(diào)用。
靜態(tài)修飾符也可以修改修飾一般的函數(shù)衔肢。這種函數(shù)直接通過類來進行調(diào)用庄岖。不通過類的實例來調(diào)用。
靜態(tài)修飾符也可以修飾一段代碼角骤。這種情況一般用于數(shù)據(jù)的初始化隅忿。比如說一些字典類的數(shù)據(jù),需要這么做邦尊。因為程序在啟動的時候需要這些數(shù)據(jù)背桐,因此這些數(shù)據(jù)需要在啟動之前加載。
靜態(tài)修飾符也可以修飾一些變量蝉揍。這些變量可以通過類來直接進行調(diào)用链峭,可以作為一些共享數(shù)據(jù)在程序中進行修改和讀取。這種變量在使用的過程中要注意共享的問題又沾。尤其是在多線程條件下只允許一個線程可以對其進行寫入弊仪。
以上這些,就是靜態(tài)修飾符在程序中的一些具體應用實例杖刷,靜態(tài)修飾符在程序語言中是非常有用的励饵,目前幾乎所有的程序語言都支持靜態(tài)修飾符,就連一直不用靜態(tài)修飾符的Ruby滑燃,現(xiàn)在也支持了靜態(tài)修飾符可見這種修飾符的強大抽高。
好了袜香,這個問題我們就先聊這些,歡迎訂閱丁哥開講壹置,下次再見昌执。