专栏首页高渡号外如何理解变量?

如何理解变量?

如何理解变量?

—— 新手编程1001问之C#编程基础

几乎所有的编程语言中都会有变量的概念。

看起来,它并不是一件需要特别的知识铺垫才能正确理解的东西。但是,也许正因为如此,我们总是并没有很好地厘清这个概念的内涵。它和数学中的变量是一个概念吗?

没错!数学中的确有类似变量的概念,比如:方程中的未知数,函数中的自变量等等。但是,它们与编程语言中的变量的概念还是有明显差异的。

比如,方程中的未知数,在方程未解之前,它是未知的,如果我们要猜想它的结果可能会有很多种答案,但是,正解永远只有一个。换句话说,这个未知数终究还是一个确定的值。而编程语言中的变量的值是不确定的。变量的含义侧重于一个变字,变量的值的不确定性,才是变量的本质。它不仅当下不确定,未来也可能不确定。

再比如,函数中的自变量,这是最接近编程语言中的变量的一个数学概念。因为这个自变量的值是变化的,并且它的变化会直接影响到函数的结果。但是,相比编程语言中的变量的概念,自变量是狭义的,它通常只能是数字类型的,也只能在定义域范围内取值。而变量是广义的,不受约束,它几乎可以定义任何对象,除了数字类型,还可以是文本、图像,甚至任何自定义类,其中包括了字段属性和方法。

此外,我们还可以从一个特殊的角度来看看两者的差别。

假设数学中,有一个变量x,它可能会累计递增,在算法上,我们可以将它写进一个递归函数来实现递增,或者干脆增加一个未知数x1,让x1=x+1,然后再x=x1,用这样代换的方法来实现。但是,你不可以写成x=x+1,这就不是数学等式了。

而在编程语言中,x=x+1这样的变量运算几乎随处可见。我们通常将它称之为重新赋值。它是体现变量之变”的精彩呈现。

好了,通过上面的对比,我们对变量,好像有一个更清晰的认识了。那么,我们来看看,编程语言中,是如何定义变量的。

程序语言中,变量的概念是指:程序运行中,用于临时存储数据的对象

这个概念中有三个要点需要把握:

第一,程序运行中,这是变量存在的场景。换句话说,离开了运行中的程序,变量是不存在的。在物理层面,变量存在于内存中,以内存地址的方式记录。

第二,临时...对象,这也是变量存在的一个重要特征,它并不能持久地存在。与此相对的是数据库,数据库是持久化保存数据的地方。所以,我们会经常看到“数据持久化”这个概念,它就是指将变量中的临时数据保存到数据库的过程。

第三,存储数据,这是变量的使命。我们需要理解的是,不要将此处的数据简单理解为数字,数据绝对不能等同于数字。数据可以是任何对象及对象的集合,它是广义的,几乎可以涵盖对一切信息的描述。

下面,我们以C#语言为例,来介绍一下有关变量的定义和赋值。

形式上,C# 有多种变量,其中包括字段、数组元素、局部变量和参数。

每个变量都具有一种类型,用于确定可以在变量中存储哪些值。

变量的类型有如下七类:

1、不可以为 null 的值类型:具有精确类型的值,如简单的值类型。

2、可以为 null 的值类型:为null值或具有精确类型的值。

3、object:null,引用类型。是对任意引用类型的对象的引用,或者是对任意值类型的装箱值的引用。

4、类:默认为null,引用类型,是对类类型实例的引用,或对派生自类类型的类实例的引用。

5、接口:默认为null,引用类型,是对实现接口类型的类类型实例的引用,或对实现接口类型的值类型的装箱值的引用。

6、数组:默认为null,引用类型,是对数组类型实例的引用,或对兼容的数组类型实例的引用。

7、委托:默认为null,引用类型,是对委托类型实例的引用。

变量的声明:

1、格式:类型 + 变量名

int x;

2、命名习惯:驼峰命名法。

一般简单类型的变量使用小写字母开头,或者全部小写字母,类名和接口名使用标准驼峰命名法。

int x;
string myName;
class MyClassName

请注意:C#对大小写敏感。

变量的赋值:通常有两种方法。

1、先声明,后赋值

int x;
x = 0;

请注意,等号“=”不是一个判断,而是一个动作,表示“将某值赋值给某变量”。

2、边声明边赋值

int x = 0;

请注意,不是所有的C#变量都是这样的简单类型的对象,它可以是一个自定义的类,存储几乎任意复杂的数据。这也是我们面向对象编程需要建立的一个重要认知。

另外,有关变量的运算,我们今天就不讨论了。好了,今天咱们就聊到这儿,希望能对你有帮助。

本文分享自微信公众号 - 高渡号外(igaodu),作者:高渡号外

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python入门(4)

    大家好,今天开始正式学习Python语法。最基础的东西无外乎:常量和变量、数据类型和数据结构、流程控制语句等。了解它们并不难,它们就像构成一座大厦的砖瓦沙石,看...

    高一峰
  • 什么是装箱和拆箱?

    这是一个好问题,因为它看上去高大上,甚至跨学科和领域,实际上,它只是一个非常简单的问题,但是,很多编程新手,被这个“装箱和拆箱”的名称给整蒙圈了。就直接从它面前...

    高一峰
  • 如何通俗理解类和类型的差别?

    我们日常编程经常遇到类和类型的概念,有时不免会对这两个东西产生纠结,它们究竟是同一种东西呢?还是有什么差别?

    高一峰
  • Python读书笔记(变量)

    前言:本系列为小编的读书笔记,非教学课程;小编只是想用平实的语言翻译一下自己所学的东西。 首先什么是变量呢? 百度百科:变量来源于数学,是计算机语言中能储存计算...

    用户1332619
  • Python基础 变量

    Python的变量,于其说是变量更贴切的是标签。 由于对于Python来说一切皆为对象,因此变量可以理解为是对象的一个标签。

    py3study
  • js中的值类型和引用类型的区别

    (1)值类型(基本类型):字符串(string)、数值(number)、布尔值(boolean)、undefined、null (这5种基本数据类型是按值访问...

    前端老鸟
  • TP将时间戳显示成时间格式。

    简单、
  • 论文研读-基于决策变量分析的大规模多目标进化算法

    [1] K. Deb, Multi-Objective Optimization Using Evolutionary Algorithms. New York...

    DrawSky
  • OpenGL ES 3.0 | 统一变量和属性的概念与(在程序中的)获取流程、统一变量缓冲区对象详解、std140块规范、用 命名统一变量块 建立 统一变量缓冲区对象 的流程 和 相关API 和...

    程序示例, 说明如何用前面描述的命名统一变量块LightTransform【std140例程处】 建立一个统一变量缓冲区对象: 【思路: 块与自定义绑定...

    凌川江雪
  • VBA中重要的强制申明,谁看谁明白

    前几次的VBA分享,在留言区收到了很多同学的实际需求。大家的支持,是我们持续分享的动力。

    猴子数据分析

扫码关注云+社区

领取腾讯云代金券