变量
是机器存储单元在语言中的抽象。它是编程语言最重要的概念之一。
变量有6个属性(或者说从6个方面去描述变量)
名字/别名
地址/左值
值/右值
类型
作用域
生存期/生命期
1,名字/别名
名字的概念在 名字/标识符
已经提到。
当多个名字访问的都是同一个存储地址时(或者说多个名字都
绑定/约束
于同一个存储地址),可称这些名字为 别名。
使用别名有损于程序的可读性,然而却很难从一门语言中完全消除。如下
public static void main(String[] args) {
String name = "jack";
String alias = name;
name = "lily";
System.out.println(name);
System.out.println(alias);
}
var name = 'jack';
var alias = name;
name = 'lily';
alert(name);
alert(alias);
可以看到变量alias作为name的别名,都指向同一个地址,值为“jack”。但当name发生变化后,alias却全然不知。
许多语言中,子程序的参数也可产生别名现象。见:xx
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生命结束。
- 大小: 26.7 KB
分享到:
相关推荐
两个@符号是springboot为替代${}属性占位符产生,原因是${}会被maven处理,所以应该是起不到引用变量的作用。 @@方式可以引用springboot非默认配置文件(即其他配置文件)中的变量; springboot默认配置文件是 src/...
论文研究-属性值为正态随机变量的多属性决策方法.pdf, 针对具有正态随机变量的多属性决策(MADM)问题, 提出了一种决策分析方法. 在该方法中, 首先通过理论分析给出根据...
SAS统计软件数据步变量与变量属性控制.ppt
在C语言中,变量是对程序中数据所占用内存空间的一种抽象,定义变量时,用户定义变量的名,变量的类型,这是变量的操作属性。不仅可以通过变量名访问该变量,系统还通过该标识符确定该变量在内存空间的位置。在...
使用Log4net自定义信息(变量或属性或字段)存入数据库,支持log4net1.2.10
SAP bw更改query查询变量属性,不需要创建新的变量来更改变量的类型及其他属性信息
SAS (统计分析软件)课件:第9章 数据步变量与变量属性控制.ppt
题目:建立一个名为Student的类,该类有以下几个私有成员变量:学生姓名、学号、性别、年龄。还有以下两个成员函数:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个...
C#中属性和字段(变量)的区别 希望对大家有帮助
当然我们知道全局变量是全局对象的属性,而局部变量是一个特殊的调用对象的属性,那么我们就可以再次关注一下变量作用域的表示法,对它进行再定义。有关作用域的新描述给理解多环境下的变量提供了一种有用的方法,它...
主要介绍了详解Java获取环境变量及系统属性的方法,讲解了System.getEnv()和System.getProperties()这两个核心方法的使用,需要的朋友可以参考下
WPF的数据绑定功能非常强大,在控件中使用数据绑定功能会为你节省大量的处理...本示例中,将一个变量绑定到一个控件上,在代码中改变变量值,并立刻引起控件值的变化。此代码经过删减,仅仅保留精简内容,一看就懂。
针对属性值为随机变量形式的各个属性,构建在各状态下针对每个属性的占优矩阵,构建针对各属性的优势度矩阵,并将其规范化得到规范化优势度矩阵;针对属性值为数值型的各个属性,构建针对各属性的规范化决策矩阵,将...
只能允许这个类本身进行访问了,连子类也不可以用于命名一个类属性(类变量),调用时名字被改变(在类FooBar内部,__boo变成_FooBar__boo,如self._FooBar__boo) 3、 __xx__定义的是特列方法。用户控制的命名空间内...
JAVA_HOME:C:\Program ... 5.JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:\java\jdk1.5.0_08,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse等都需要依*此变量);
(C#)开发漫谈:关于变量的命名和属性! 值得下载看看!资源免费,大家分享!!
变量⽂件⼀般由Python模块实现, 有两种不同的⽅法来创建变量: 1、⽅法⼀:直接创建变量 变量就是模块的属性。最简单的情形下, 这种语法⼏乎不需要真正的编程。 例如, MY_VAR = 'my value' 就创建了变量 ${MY_VAR}, ...
这个变量与 DXF 文件标题变量 $ACADVER 不同,"$ACADVER" 包含图形数据库的级别号 ACISOUTVER 控制 ACISOUT 命令创建的 SAT 文件的 ACIS 版本。ACISOUT 支持值 15 到 18、20、21、30、40、50、60 和 70。 AFLAGS ...