介绍变量的六个属性
介绍变量的六个属性,程序员基础知识:
变量 是机器存储单元在语言中的抽象。它是编程语言最重要的概念之一。
变量有6个属性(或者说从6个方面去描述变量)
名字/别名
地址/左值
值/右值
类型
作用域
生存期/生命期
1,名字/别名
名字的概念在 名字/标识符 已经提到。
当多个名字访问的都是同一个存储地址时(或者说多个名字都 绑定/约束 于同一个存储地址),可称这些名字为 别名。
使用别名有损于程序的可读性,然而却很难从一门语言中完全消除。如下
Java
view sourceprint?
1 public static void main(String[] args) {
2 String name = "jack";
3 String alias = name;
4 name = "lily";
5
6 System.out.println(name);
7 System.out.println(alias);
8 }
Javascript
view sourceprint?
1 var name = 'jack';
2 var alias = name;
3 name = 'lily';
4 alert(name);
5 alert(alias);
可以看到变量alias作为name的别名,都指向同一个地址,值为“jack”。但当name发生变化后,alias却全然不知。
许多语言中,子程序的参数也可产生别名现象。
2,地址/左值
计算机中所有的数据都是存放在存储器中的,一般把存储器中的一个字节称为一个存储单元。为了正确的访问这些
存储单元,需要为每个存储单元编个号。根据编号即可准确的找到该内存单元。内存单元的编号就称为 地址 。
在许多语言中,程序中同一个 名字/标识符 可以在不同的时间,与不同的 地址 关联/绑定 。
变量的地址有时也称为变量的左值(left value),或许是因为各种语言中变量经常位于赋值语句的左边。
String name = 'jack'; // Java
var name = 'jack'; // JavaScript
又或许在地址图上编号总是位于左边,值总是在右边
名字 与 地址 的 关联/绑定 后续会提到。