Ⅰ php中static 靜態變數和普通變數的區別
全局變數(外部變數)的說明之前再冠以static 就構成了靜態的全局變數。全局變數本身就是靜態存儲方式, 靜態全局變數當然也是靜態存儲方式。 這兩者在存儲方式上並無不同。這兩者的區別雖在於非靜態全局變數的作用域是整個源程序, 當一個源程序由多個源文件組成時,非靜態的全局變數在各個源文件中都是有效的。 而靜態全局變數則限制了其作用域, 即只在定義該變數的源文件內有效, 在同一源程序的其它源文件中不能使用它。由於靜態全局變數的作用域局限於一個源文件內,只能為該源文件內的函數公用, 因此可以避免在其它源文件中引起錯誤。 從以上分析可以看出, 把局部變數改變為靜態變數後是改變了它的存儲方式即改變了它的生存期。把全局變數改變為靜態變數後是改變了它的作用域, 限制了它的使用范圍。 static函數與普通函數作用域不同。僅在本文件。只在當前源文件中使用的函數應該說明為內部函數(static),內部函數應該在當前源文件中說明和定義。對於可在當前源文件以外使用的函數,應該在一個頭文件中說明,要使用這些函數的源文件要包含這個頭文件 static全局變數與普通的全局變數有什麼區別:static全局變數只初使化一次,防止在其他文件單元中被引用; static局部變數和普通局部變數有什麼區別:static局部變數只被初始化一次,下一次依據上一次結果值; static函數與普通函數有什麼區別:static函數在內存中只有一份,普通函數在每個被調用中維持一份拷貝
Ⅱ php求助 static修飾的變數不是只運行一次嗎圖裡面為什麼運行2次
static靜態變數只被初始化一次,是函數或類的內部保存值
這里,相當於你的newfile.php執行結束之前,$temperature=25;只會被初始化一次。
即第一次調用ee()時$temperature初始化為25,
第二次調用ee()時,$temperature沒有在被重新初始化,而是沿用函數內部的保存值25
你可以在static$temperature=25後面加兩句,
++$temperature;echo$temperature.'<br/>';
在運行會列印26和27
ee()函數執行了多少次,就會在25上加多少
因為$temperature只有第一次被初始化為25,後面都是沿用之前運算後的值
Ⅲ java中靜態變數和實例變數的生命周期有什麼區別
首先很能理解你求知而無解的心情,因為我也是過來人
靜態變數是類相關的變數,所以他的生命周期是從這個累被聲明,到這個類徹底被垃圾回收機制徹底回收才會被銷毀。
實例變數是這個類的對象里的變數,它和靜態變數不同,它只能由創建出的對象來調用,所以實例變數是從這個對象(其實就是實例)被創建開始,直到這個對象沒有任何引用變數去引用它,最終被垃圾回收站回收,這時這個實例變數也跟著就消失了。
總而言之:靜態變數生命周期就是類的開始和銷毀
實例變數生命周期就是對象的開始和銷毀。『
不知道這樣說你能懂不,看著這些,自己好好理解理解,有時候不經意間就懂了呵呵
Ⅳ 怎樣理解靜態變數
靜態變數(static)是相對自動變數(auto)等而言的,一旦聲明為靜態變數,在編譯時刻開始永遠存在,不受作用域范圍約束,但是如果是局部靜態變數,則此靜態變數只能在局部作用域內使用,超出范圍不能使用,但是它確實還佔用內存,還存在.自動變數就是一般的變數,在C語言中auto關鍵字可以省略.
Ⅳ php什麼是靜態變數
當在某函數里定義一個靜態變數後,這個變數不會即使函數退出了,在下次調用這個函數時,它會使用前次被調用後留下的值。
此外,雖然該變數不隨函數的退出而繼續存在,但函數的外部並不能使用它。
Ⅵ 靜態局部變數的生命周期
所有靜態變數的生命周期都為程序的周期。
Ⅶ static和非static修飾的變數哪個生命周期長
被static修飾的變數生命周期更長,因為靜態變數的生命周期取決於類的生命周期。它在類載入的時候被分配空間。
Ⅷ 請問PHP中的靜態變數怎麼理解
static 變數是php中的變數作用范圍的一個重要特性
靜態變數僅在局部函數域中存在且只被初始化一次,當程序執行離開此作用域時,其值不會消失,會使用上次執行的結果
一個普通的變數,如 $message 在它所在的函數執行完之後就被釋放了
即第二個function執行10次,每次執行完後,$message變數被釋放,所以每次都是1
變數前加了static後,該變數在它所在的函數執行完後不會被釋放
即第一個function每次被執行後,static $message沒有被釋放,它將被繼續累加
Ⅸ static靜態成員變數的生存周期是怎樣的
靜態成員變數在程序啟動時被分配,在程序結束時被釋放,其生命周期為程序的生命周期。基於這個類的所有對象只有一個靜態成員變數的拷貝。
Ⅹ php 如何讓一個變數長期存在
1、PHP程序結束了,變數當然就會銷毀。如果你要變數活下去,那就得給他一個地方活著。
資料庫是一個地方,memcache/redis之類的內存是一個地方,硬碟是一個地方,第三方存儲API也是一個地方。
2、因為PHP木有daemon,PHP變數的生命周期是頁面級別的,頁面結束了,變數也就結束了,保存在redis或者memcached。