Can you summarize the following document?
        
  

  自動變數在C與C++中的實現即為“自動變數”("Automatic Variable")。預設情況下,在內宣告的變數都是自動變數,但亦可用自動變數的關鍵字auto明確標識;而如若使用register(而非auto)儲存類標識程式碼塊內的變數,編譯器就會將變數快取於處理器內的暫存器中,此種情況下不能對該變數或其使用引用&以取得其地址,因為&只能取得記憶體空間中的地址;除此以外,由於暫存器的數量及其所能儲存的資料型別受硬體限制而可能無法儲存指定變數,編譯器可以忽略內的register關鍵字。對於一個未初始化的自動變數來說,在為其賦值之前其值都為undefined(未定義)。  在C++中,如諺語“資源獲取即初始化”("Resource Acquisition Is Initialization",常縮寫為RAII)所述,自動變數的建構函式在程式執行至宣告部分的時候才會被呼叫,而當程式執行至所給的程式塊末端的時候則呼叫解構函式,這一特性常應用於資源的分配與釋放管理,如自動關閉已開啟的檔案或自動釋放空閒記憶體。

  自動變數在Java中的實現為“區域性變數”("Local Variable")。Java中的自動變數與C、C++中的相似,但Java中並無auto、register這些標識儲存類用的關鍵字。但相對應的,Java編譯器亦不允許使用沒有明確初始化的區域性變數(會提示錯誤),這一點與C、C++不同,在C與C++中編譯器只會對這類用法做出警告。根據Java標準的要求,每個區域性變數在使用之前都必須明確地初始化,從這點來說Java中的區域性變數與可以預設值(數值變數對應0,物件對應null)進行隱式初始化的例項變數是有所差異的。

  自動變數在C與C++中的實現則為詞法變數("Lexical")、my/私有變數("Private Variable")。在Perl中,區域性變數是以操作符my宣告的。未初始化的資料項的預設初值是undef,而未初始化的陣列與雜湊的預設初值則為()。Perl中亦可用local操作符將全域性變數臨時用作自動變數,也即在不建立自動變數的情況下給一個全域性變數(亦稱包變數)臨時賦值(原值則先儲存於別處)並將其作用域限定在程式碼塊內,當執行到變數的作用域之外時再恢復原值。
在計算機程式設計領域,自動變數("Automatic Variable")指的是區域性作用域變數,具體來說即是在控制流進入變數作用域時系統自動為其分配儲存空間,並在離開作用域時釋放空間的一類變數。在許多程式語言中,自動變數與術語“區域性變數”("Local Variable")所指的變數實際上是同一種變數,所以通常情況下“自動變數”與“區域性變數”是同義的。