变量
是机器存储单元在语言中的抽象。它是编程语言最重要的概念之一。
变量有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
分享到:
相关推荐
SAS 统计软件数据步变量与变量属性控制 SAS 统计软件数据步变量与变量属性控制是 SAS 软件中的一种重要功能,它允许用户控制和管理数据中的变量属性,并实现数据的步变量控制。本章节将详细介绍数据步变量与变量...
两个@符号是springboot为替代${}属性占位符产生,原因是${}会被maven处理,所以应该是起不到引用变量的作用。 @@方式可以引用springboot非默认配置文件(即其他配置文件)中的变量; springboot默认配置文件是 src/...
论文研究-属性值为正态随机变量的多属性决策方法.pdf, 针对具有正态随机变量的多属性决策(MADM)问题, 提出了一种决策分析方法. 在该方法中, 首先通过理论分析给出根据...
### SAP BW 更改 Query 查询变量属性 #### 一、引言 在SAP BW (Business Warehouse)环境中,经常需要对已经定义并使用的BEx (Business Explorer)查询中的变量进行修改,尤其是在需要更改变量的“Processing by”...
在C#编程语言中,属性和字段(变量)是类成员的重要组成部分,它们各自拥有独特的功能和使用场景,理解它们之间的区别对于编写高效、安全、易于维护的代码至关重要。 ### 属性(Property) 属性在C#中被视为一种...
在C#编程语言中,变量的访问修饰符和类型对代码的组织和...在实践中,你可能会遇到更多复杂的场景,如属性(Properties)的使用,以及如何通过getter和setter方法来控制变量的访问,这些都是在C#中管理变量的重要补充。
本资源详细探讨了C#中的变量命名规则和如何有效地使用变量属性。 首先,变量命名是遵循一定的规则和约定的。C#规定变量名必须以字母、下划线(_)或者美元符号($)开头,后续可以是字母、数字或下划线。但是,为了...
在C++编程语言中,变量是程序中存储和操作数据的基本单位。理解变量的存储属性、生存期和作用域对于编写高效且...总的来说,理解和掌握C++中的变量及其属性是每个程序员的基本功,对于编写高质量的C++程序至关重要。
获取系统属性的方法与环境变量类似,同样是通过调用System.getProperties()方法来获取一个Properties对象,它包含了Java虚拟机和运行时环境的配置属性。接着,同样使用迭代器遍历Properties对象,打印出所有的系统...
成员变量则是一个更广义的概念,包括实例变量以及属性(property)。 创建自定义类: 1. 首先,我们需要定义一个新类。在Objective-C中,我们使用`@interface`关键字来声明一个新的类。例如,我们可以创建一个名为`...
6. **使用OfficeRe78工具**:标题中提到的"officere78"可能是指一个第三方工具或方法,它可能提供更高效的方式来管理和添加属性。这类工具通常能帮助用户批量处理DB块变量,提高编程效率,但具体使用方法需要参考该...
- 在添加全局变量时选择添加网络,codesys将自动添加名称为“Connection1(UDP)”的表单,可用于设置网络变量属性。 - 对于**写属性的网络变量**,需要遵循以下规则: - 选择“写”属性(同一组只能具备“读”或...
文档总结来看是针对西门子自动化系统中DB块变量属性添加的一系列操作指南,涵盖了从变量选择、属性设置到变量上传的整个过程。文档的详细步骤和图示有助于用户在实际操作中快速实现DB块变量与WinCC的集成,从而在...
6. ANGBASE:该变量类型为实数,保存位置为图形初始值:0.0000。它将基准角设置为 0 度相对于当前 UCS。 7. ANGDIR:该变量设置正角度的方向,初始值:0;从相对于当前 UCS 方向的 0 角度测量角度值。0 逆时针、1 ...
这些存储类型决定了变量的存储属性和生存期。 变量的存储属性包括: * 数据类型:变量所持有的数据的性质 * 存储属性:变量的存储方式 * 存储器类型:寄存器、静态存储区、动态存储区 * 生存期:变量在某一时刻...
- **实例变量**:适用于那些需要为每个对象维护不同状态的场景,例如一个Person类中的姓名、年龄等属性。 - **类变量**:适用于那些所有对象共享的数据或状态,例如一个Person类中的常量(如人的平均寿命)或者...
在SAS统计分析软件中,数据步变量与变量属性控制是处理和操作数据的关键环节。本章主要讲解如何利用数据步中的变量和信息控制语句进行高效的数据加工和整理。其中,ARRAY语句是重要的工具,它允许我们定义数组,数组...
这段代码创建了一个`WScript.Shell`对象,然后通过它的`Environment("System")`属性访问系统环境变量。`For Each`循环遍历每个环境变量,打印出其名称和对应的值。 此外,除了读取环境变量,VB还允许我们设置和修改...
通常,数据源是一个对象的属性,但也可以是静态变量。静态变量在类的整个生命周期内都存在,不依赖于类实例,因此它们对于共享状态和配置设置特别有用。 首先,让我们了解如何创建一个简单的静态变量并将其绑定到UI...