變數的六個屬性

來源:互聯網
上載者:User

變數 是機器儲存單元在語言中的抽象。它是程式設計語言最重要的概念之一。

變數有6個屬性(或者說從6個方面去描述變數)

名字/別名
地址/左值
值/右值
類型
範圍
生存期/生命期

1,名字/別名

名字的概念在 名字/標識符 已經提到。
當多個名字訪問的都是同一個儲存地址時(或者說多個名字都 綁定/約束 於同一個儲存地址),可稱這些名字為 別名。
使用別名有損於程式的可讀性,然而卻很難從一門語言中完全消除。如下

Java

public static void main(String[] args) {String name = "jack";String alias = name;name = "lily";System.out.println(name);System.out.println(alias);}

Javascript

var name = 'jack';var alias = name;name = 'lily';alert(name);alert(alias);

可以看到變數alias作為name的別名,都指向同一個地址,值為“jack”。但當name發生變化後,alias卻全然不知。
許多語言中,子程式的參數也可產生別名現象。

2,地址/左值

電腦中所有的資料都是存放在儲存空間中的,一般把儲存空間中的一個位元組稱為一個儲存單元。為了正確的訪問這些
儲存單元,需要為每個儲存單元編個號。根據編號即可準確的找到該記憶體單元。記憶體單元的編號就稱為 地址 。

在許多語言中,程式中同一個 名字/標識符 可以在不同的時間,與不同的 地址 關聯/綁定 。
變數的地址有時也稱為變數的左值(left value),或許是因為各種語言中變數經常位於指派陳述式的左邊。

String name = 'jack'; // Java
var name = 'jack'; // JavaScript

又或許在地址圖上編號總是位於左邊,值總是在右邊

名字 與 地址 的 關聯/綁定 後續會提到。

3,值/右值

變數的值是指與這個變數相關聯的儲存單元的內容。可以將電腦的儲存單元想象成抽象的單元,而非物理單元。
現代電腦多數以位元組為單位,一個位元組有八位長度。
變數的值有時也稱為變數的右值(right value),因為變數常被用於指派陳述式的右邊(參考左值)。

4,類型

類型 決定了變數可以儲存的值的範圍,且定義了該類型的操作集合。
如Java中int類型佔4個位元組,取值範圍是-2147483648~2147483647,對其可進行加減乘除及模數運算。

5,範圍

範圍是指變數的可見度問題。即決定了那些子過程和函數過程可訪問該變數。
各種語言的劃分也不同,如有的變數範圍分為:局部、表單、塊和全域。有的則只有局部、全域之分。
如C、C++、Java中有塊級範圍,JavaScript中則沒有 。

6,生存期/生命期

生存期/生命期 指的是何時建立,何時釋放。生存期/生命期 與 儲存綁定 密切相關。

如在Java中的一個方法中聲明的一個變數,該變數在方法執行時建立,執行後釋放。

public static void main(String[] args) {     String name = "jack";       System.out.println(name);}

又如JavaScript中

function func(){    var name = 'jack';    alert(name);}func();

func執行後變數name就釋放了。

但 閉包 的情況可延長局部變數的生命期。

var getName;function func(){    var name = 'jack';    getName = function(){        return name;    }}func();

func執行後,變數name不會釋放,卻會等到getName生命結束。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.