靜態類和非靜態類
上次在http://www.cnblogs.com/hanshuai0921/p/7059237.html說到靜態函數和變量是保存到內存中,所以不用實例化,直接用類名::就可以調用,知道程序結束才會釋放內存.
在編譯的時候給靜態類變量函數賦值和內存空間,動態類是在編譯完,程序調用時才分配內存和數據的.
所以,靜態類在編譯的時候需要多做工作,動態類在執行的時候需要多做工作,然而php是動態語言,每一次這兩步都不掉,所以對於只運行一次的類,無所謂誰快誰慢。
但是如果一個類在程序當中要多次調用就不一樣了,靜態類是編譯的時候就賦值了,程序之後的運行都可以直接調用過來,而不用動態的分配內存了,就節約了時間,這就是為什麽靜態類比動態類快的原因(前提是被多次調用)
靜態類和非靜態類
相關推薦
靜態類和非靜態類
com 變量 保存 結束 賦值 .cn 實例化 數據 空間 上次在http://www.cnblogs.com/hanshuai0921/p/7059237.html說到靜態函數和變量是保存到內存中,所以不用實例化,直接用類名::就可以調用,知道程序結束才會釋放內存. 在編
java中子類初始化流程(包括靜態區和非靜態區)
一. 類中的方法分為例項方法和類方法兩種,用static修飾的是類方法。二者有什麼區別呢? 例項方法: 當類的位元組碼檔案被載入到記憶體時,類的例項方法不會被分配入口地址,當該類建立物
關於靜態方法和非靜態方法
ram ati [] ber 不一定 sys mat 使用實例 pri 靜態方法和實例方法的區別主要體現在兩個方面:在外部調用靜態方法時,可以使用"類名.方法名"的方式,也可以使用"對象名.方法名"的方式。而實例方法只有後面這種方式。也就是說,調用靜態方法可以無需創建對象。
c#靜態方法和非靜態方法區別
特殊 靜態成員 pan 們的 gpo ase sna eth key c#靜態方法和非靜態方法區別 C#的類中可以包含兩種方法:C#靜態方法與非靜態方法。那麽他們的定義有什麽不同呢?他們在使用上會有什麽不同呢?讓我們來看看最直觀的差別:使用了static 修飾符的方法
關於synchronized修飾靜態方法和非靜態方法
剛剛看了網上的一些資料,感覺講的不是很正確,網上說synchronized修飾靜態方法相當於加了把類鎖,所有該類的物件,都公用這把鎖,所以我寫了如下程式碼進行驗證: 如果按網上說 ,我用synchronized修飾靜態方法,那麼在啟動一個執行緒呼叫時,其他執行緒應該無法呼叫accessResou
java細節之類中的靜態塊和非靜態塊的執行情況
這篇文章來源於一道面試題: public class TestBean extends F{ public TestBean(){ System.out.println("testbean constructor")
java中靜態方法和非靜態方法的區別
靜態方法和非靜態方法主要有兩個區別: 1.在外部呼叫靜態方法時,可以使用"類名.方法名"的方式,也可以使用"物件名.方法名"的方式。而例項方法只有後面這種方式。也就是說,呼叫靜態方法可以無需建立物件。 2.靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變數和靜態方法),而
Synchronized同步靜態方法和非靜態方法總結
1.Synchronized修飾非靜態方法,實際上是對呼叫該方法的物件加鎖,俗稱“物件鎖”。 Java中每個物件都有一個鎖,並且是唯一的。假設分配的一個物件空間,裡面有多個方法,相當於空間裡面有多個小房間,如果我們把所有的小房間都加鎖,因為這個物件只有一把鑰匙,因
抽象類和非抽象類方法執行順序例子
//抽象例子 abstract class Fruit { static{ System.out.println("例項化父類1");} protected Fruit(){ System.out.println("例項化父類");
Java中靜態變數和非靜態變數的初始化順序
先看下面的程式: package c05.net; class Bowl {Bowl(int marker) {System.out.println("Bowl(" + marker + ")");} void f1() {System.out.println("Ok")
例項說明java中覆蓋靜態方法和非靜態方法的不同
本文將通過例項的演示說明在java中覆蓋靜態方法和非靜態方法的不同之處。並在文章最後給出具體的解釋。 首先我們提供兩個類,基類為Parent,派生類為Child。在Parent中我們提供兩個方法,一個是靜態方法staticMethod(),一個是非靜態
Java靜態物件和非靜態物件有什麼區別??
Java 靜態物件和非靜態物件有什麼區別?? 對於靜態方法,相信它的作用在各位朋友眼裡也是不容置疑的,那麼他跟非靜態到底有什麼區別呢??? (1)Java靜態物件和非靜態物件有什麼區別
Java例項說明 靜態方法和非靜態方法的區別
程式碼: public class OuterMyTest {private static int a ;private int b ;public OuterMyTest(){a += 1;b += 1;//System.out.println( "a = " + a
php 靜態方法和非靜態方法哪個更好
class class1 { public static function test(){} } class class2 { public function test(){} } 靜態方法呼叫 class1::test(); 非靜態方法呼叫 $c2 = n
使用synchronized修飾靜態方法和非靜態方法有什麼區別
前言 最近被問到了這個問題,第一次回答的也是很不好,在此參考網上答案進行整理記錄。供大家學習參考。 Synchronized修飾非靜態方法 Synchronized修飾非靜態方法,實際上是對呼叫該方法的物件加鎖,俗稱“物件鎖”。 Java中每個物件都有一個鎖,並且是唯一的。假設分配的一
靜態和非靜態類
靜態和非靜態:區別:靜態類與非靜態類的重要區別在於靜態類不能例項化,也就是說不能使用new關鍵字建立靜態類型別的變數。在宣告一個類時使用static關鍵字,具有兩個方面的意義:首先,它防止程式設計師寫程式碼來例項化該靜態類;其次:它防止在類的內部宣告任何例項欄位或方法。 特點:1.靜態類中只能包含靜態成員2
Java非靜態內部類和靜態內部類,訪問父類的非靜態和靜態成員變數及成員函式
public class Test { // Not static variable private int mAge = 10; // Static variable private static int mId = 1; // Single inst
C++中類內成員的定義,宣告總結(靜態和非靜態成員)
近學習到C++ primer中關於類中靜態變數的部分,有一道課後題非常有意思。 題目是關於靜態變數在類中的初始化。 class example{ public: //static double rate=6.5; static const int size
類的非靜態成員函數作為線程函數的註意事項
boost thread代碼#include <string>#include <boost/thread/thread.hpp>#include <boost/bind.hpp>#include <boost/function/function0.hpp>cl
異常處理流程圖+多線程Thread類流程圖+非靜態方法調用
處理流 inf out com 分享 int private 靜態方法 ring 異常處理完整流程 main方法調用非靜態方法 public class Demo{ public static void main(String[] args){