变量的存在意义和底层逻辑(《Java与Python学习通法》)

在学习任何东西之前,都需要先搞懂一个问题,那就是为什么需要它。当弄懂了一个概念为什么会存在的时候,也就理解了它存在的意义,顺便也掌握了相关的知识。

核心:学编程就是学变量。

(一)变量存在的意义是什么?

1. 思考一:程序被创造(写)出来有什么用?

我们想一下,美团、淘宝这些程序,被创造出来有什么用,是不是在市场上有这个需求,可以通过线上的途径解决时间、地点和效率的问题。QQ、微信被创造出来,解决了便捷沟通的需求;
所以一个有效的程序被创造出来一定是解决现实存在的问题和需求的。
那我们 接下来要思考的问题就是,程序是通过什么样的方式来解决现实问题和需求的?

2. 思考二:程序是通过什么样的方式来解决现实问题与需求的?

就是四个字:操作数据。我们来想想是不是这样:我们想一下美团,淘宝我们看到的是文字,图片,声音,影像,这些形式在程序中是不是以数据的形式存在的;我们在想我们使用软件,使用程序,我们的输入文字,我们的视频传输,这些交互是不是也是以数据的形式传输的;
所以说程序是以操作数据的方式来解决现实问题和需求的。

3. 思考三:对于程序来说,数据都在哪儿?程序是怎样操控数据的?

先说结论:数据都在内存中,在高级编程语言总,程序是使用变量来操控存储空间中的数据! 那变量又是怎样操控数据的呢?那我们就接下来说下面的内容:

(二)变量的底层逻辑是什么

1. 丰巢快递柜

在这里插入图片描述
我们可以看一下上面丰巢快递柜的图,我们说丰巢快递柜有下面几个特点:

  • 丰巢快递柜是可以循环使用的,那我们可以类比联想我们项目运行过程中,我们内存的空间是可以循环使用的;
  • 丰巢的柜子都是有大有小的,大的可以放大一点的快递,小的可以放小一点的快递;丰巢的柜子如果做成统一大小的,是不是会浪费一些空间;
  • 当用户在丰巢快递柜取快递的时候,是需要再快递柜中输入取件码的,那这个取件码一定是跟别人的取件码是不同的,如果是一样的取件码,那取件就会取错了;所以我们在调用一个变量的时候,我们变量名相同时,我们调佣也会有问题;

那我们搞丰巢,主要是为了管理包裹;那我们搞变量,主要是为了管理内存中的数据;而且我们内存中承载数据的空间都是循环使用的;

2. 变量的底层逻辑

用更书面一点的语言总结一下变量就是:我们通常会在内存中找一个位置来存放CPU要处理的数据,每个存放数据的位置都有一个“”地址” ,通过这个地址,CPU就可以找到并使用它们。这个存放数据的位置就是变量。

每个变量都有一个地址,这个地址其实就是一串数字,CPU 尤其擅长处理复杂的数字,但我们人类不一样,我们常常为了怕忘记一个电话号码而要拿一个小本记起来,更别说这些复杂的数字了。所以,后来发明了变量名,变量名就是给一个数据的“地址”贴上标签。这与我们小时候喜欢根据小伙伴的特点起外号是一样的,我们也根据这些数据的用途给它们起一个好记的名字,这就是变量名,一旦变量有了名字,就可以通过直呼其名的方式来使用它们。

我们现在有了变量名,那接下来我们顺理成章的就会思考,我们这个变量在内存中占用多大空间呢?我们是不是要设计一套模式,给内存合理的分配空间,就想丰巢快递柜要设计成有大的,有小的,不能一样大的一样。

那我们通过数据类型来实现,我们通过不同的数据类型来给内存分配不同的空间。

所以,我们总结一下:变量 = 变量名 + 数据类型;

3. 变量名和数据类型的注意事项

编程讲究的是规范,人可以感性,但是程序必须理性,所以规范很重要,每一种高级的编程语言都有对于变量名命名的规则,基本规则就是两点:

  • 第 1 点 :不能用关键字命名;
  • 第 2 点 :按照规矩命名,通用的命名规矩有驼峰命名法等;

下面说一下数据类型的注意事项,大部分主流高级编程语言中的数据类型都会是有这么几类,比如说整数类型,浮点数类型,字符类型、布尔类型等等,当然还有其他的数据类型,这些数据类型就好比它们给内存中分配了不同的空间,数据类型就是指这些内存空间的尺寸,我们也都会清楚的知道,编程语言中每种数据类型的尺寸,那获取数据类型的尺寸,无非就是为了求得它的取值范围,那取值范围意味着什么?取值范围就是意味着这个变量可以存放的最大值和最小值分别是多少。那这个值怎么计算呢?因为计算机只认识二进制,那我们要从二进制的单位-比特(bit)说起。CPU只能读懂比特这个最小单位。而我们人类则相反,我们人不喜欢用比特来计算,一般说内存机构的最小寻址单位是字节(Byte)而不是比特。

那字节和比特什么关系呢?1字节存放8比特,那么1字节等于8比特,用二进制表示是 11111111,而对应的十进制就是255,值是一样的,只是表示的方式不同而已。255就是1字节可以表示的最大值。

所以我们学习数据类型的时候,必然要学习进制转化,二进制的相关算法,那我们要掌握到什么程度,那jacky 说,在学习编程语言的基础阶段我们大概有个印象即可,后面 jacky 在后面的课程中,还会详细的讲究二进制的相关内容,在变量部分就不过多的介绍了。

好,以上就是这次 jacky(朱元禄)要跟大家分享的内容,我们下次课再见。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朱元禄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值