當前位置:首頁 » 密碼管理 » this訪問static變數

this訪問static變數

發布時間: 2025-01-05 22:23:11

⑴ PHP中this,self和static的區別

  1. PHP支持類和面向對象結構,PHP的類的靜態函數和變數不與任何特定類的實例相關聯(換句話說,一個對象)。

  2. 相反,靜態函數和變數與類定義本身相關聯。換言之,一個類的所有實例都共享相同的靜態變數。在一個類的方法(函數)的上下文中,靜態變數和函數被訪問使用self::,在一個類的對象(實例)的上下文中使用其他方法和變數時用this。

  3. 靜態函數只能使用靜態變數,靜態函數和變數的引用是通過 self::函數名() 和 self::變數名。上述實例中,靜態變數的引用是由類名(exampleClass::$foo),或者self::(self::$foo),當在這個類的靜態方法[稱為 靜態函數()]里使用時。類的正則函數和變數需要一個對象上下文來引用,他們不能脫離對象上下文而存在。對象上下文由$this提供。在上述函數中,$bar 是一個正則變數,所以它被 $obj->bar(上下文使用變數obj) 來引用,或者使用 $this->bar(再次在一個對象的方法里在一個對象上下文中) 來引用。

  4. self 不使用前面的 $,因為 self 不意味著是一個變數而是類結構本身。而 $this 引用一個特定的變數,所以有前面的 $ 。

⑵ Java多線程中static變數的使用

線程,是我們項目中繞不開的重點領域。提到線程,就常會聽到線程安全的術語。那什麼是線程安全呢?通俗點說,就是線程訪問時不產生資源沖突。其實,這是一個有點難以定義的概念,不是很容易讓人一聽就懂的概念。

靜態變數、實例變數、局部變數在多線程下的安全問題主要如下:

靜態變數:線程非安全。靜態變數使用static關鍵字定義,被類的所有實例共享。用public修飾的static成員變數和成員方法本質是全局變數和全局方法,當聲明它的類的對象時,不生成static變數的副本。在靜態方法中不能使用非靜態變數,不能直接訪問所屬類的實例變數,也不能直接調用非靜態方法,不能使用this和super關鍵字。修改靜態變數會導致其他對象對修改可見,故線程非安全。

實例變數:單例時線程非安全,非單例時線程安全。實例變數屬於對象實例私有,系統只存在一個實例對象,則在多線程環境下,修改後其他對象均可見,故線程非安全;如果每個線程都在不同的實例對象中執行,則對象與對象間的修改互不影響,故線程安全。

局部變數:線程安全。局部變數定義在方法內部,每個線程執行時都會把局部變數放在各自的幀棧的內存空間中,線程間不共享,故不存在線程安全問題。

靜態方法的線程安全性:靜態方法中如果沒有使用靜態變數,則沒有線程安全的問題。靜態方法內的變數,每個線程調用時都會新創建一份,不會公用一個存儲單元,故不存在線程沖突的問題。

熱點內容
如何用本地電腦連接遠程伺服器 發布:2025-01-07 14:05:25 瀏覽:182
微信開發者工具編譯文件錯誤 發布:2025-01-07 14:00:23 瀏覽:854
編程求4乘5 發布:2025-01-07 13:58:44 瀏覽:569
沃得收割機密碼是多少 發布:2025-01-07 13:42:36 瀏覽:984
如何辦理一張沒有密碼的卡 發布:2025-01-07 13:33:23 瀏覽:220
linux編程從入門到 發布:2025-01-07 13:32:31 瀏覽:150
任丘學編程 發布:2025-01-07 13:27:21 瀏覽:694
如何從安卓風變成蘋果風 發布:2025-01-07 13:25:48 瀏覽:88
android網站源碼 發布:2025-01-07 13:16:50 瀏覽:934
sz文件夾 發布:2025-01-07 13:06:41 瀏覽:2