00:00
大家好,欢迎大家继续收看上硅谷的云计算课程,我是沈超老师。这节课呢,我们开始来学习我们share的变量和运算符,那么各位对任何程序来讲。变量都是最基本的这样一个,这样一个程序的这样一个这个呃内容,那么其实我说啊,我们的学员在学习的时候,其实他是能听懂这些变量的规则。但是我发现我们很多学员是想不通我为什么需要变量。那到底什么是变量?顾名思义,里面的值可以变的量就是变量。啥意思,我设一个这个变量内幕,对吧,我可以把它里面的值是我的名字,也可以是李明老师的名字,也可以是其他老师的名字,都是可以的,也可以是苍老师的名字,对吧,都是可以的。那这种情况下,这个值就是个变量,它里边的内容是可以变的,那各位我们学员就想不通了,我为什么要设变量呢?
01:07
我直接把这个值,我要调什么,我直接运算不就完了吗?各位设变量的目的。其实就是为了干嘛,你在后面进行程序的运算和推导,这个推演的时候更方便,它要比写值更方便。比如说你们回想一下。你们在中学学过的应用题,那我们经常有这样的题,在第一道题里说X等于100。Y等于200。对吧,那在第二道题里呢,X就有可能会等于300。Y就有可能会等于400,那各位这个XY,它就是变量。那为什么要要设定变量啊?那我们说了,在套套公式的时候做数学运算,在套公式的时候有变量,是不是要比直接套这个这个值要方便?没错吧?那我们说我们的程序,有些情况下,我们如果要实现一个复杂功能的程序,我们的程序有可能比数学应用题要复杂得多,那这种情况下我们可能就必须有变量存在。
02:16
用变量在程序当中传递它的值,用来程序的推演和运算,这样要远比直接写值要方便。所以。对任何语言来讲,变量都是最基本的内容,所有的程序都需要设定变量。OK,但是啊,各位。我们事的变量呢?我们说它因为事是一个较为简单的程序,所以它在所有的内容上都在尝试做的更简单,那么会带来一定的问题,为啥?就是如果你要学过学事儿之前,你要学过点其他程序,你就会觉得事儿极其便利,他跟我们学的所有的程序都不一样。都不讲。用起来每个东西都得好像单独记一下,这是由于它是为了简化扇儿的原因造成的,其实很多都是你很多感觉很不方便的地方,都是为了简化啥,所以事的这个变量呢,和其他语言的变量还不是太一样,那比如说啊。
03:16
像我们的标准编语言C和Java之类的语言,它在定义变量之前,需要先定义,先申明变量的类型。比如说我需要声明它是一个数值型的变量,然后我才能再定义这个变量X的值是什么,我先要定义变量X是数值型,然后再定去它的值,它是要先吃那个类型,然后再赋值。但是我们所有的脚本语言,脚本语言SH也是脚本语言的一种啊,十本脚本语言就是不需要编辑啊,不需要编辑过程,它是在系统自动执行的时候自动编辑,不是说脚本语言不需要编译,OK,那么比如还有PP这样的脚本语言,它都是什么?不再需要生命类型的过程,我不再需要生命类型,我直接拿过来变量等级东西。
04:03
就赋值就行了,那到底是什么类型的,它看你的值自己来进行这个推导,比如说你负了个数字,如果你要进行数值运算,它就会自动把它变成数值值,但如果你要附了个数字,你如果把它当成这个字符串来输出,它就会自动转成字符串型,这是脚本语言的特征啊,那我们的事比这个还简单事干嘛?12、做了一个这样的一个恶心的规律干嘛,他认为。如果你不在上当中生命变量的类型,那么所有的变量都是字符串写。也就是说,就算你负一个X等于100,系统认为这只是100字符串,而不是100这个数,那会带来一个问题,就是如果你看啊,我跟你讲,如果是字符串,比如说数字X是100 Y是200,对吧,那X加Y,那是不是就应该等于300?那这是数字对吧?那如果要是字符串型的X加Y,它就会认为它的值是100200,就把两个字符串给连起来,那也就是说,如果默认是字符串型,我们上连这个数值运算都做不了,那要想进行数值运算是需要特定的运算格式的。
05:15
哎,各位只有12是这样的,其他语言,比如说像PP,像Python,你如果就算它不需要经济变量类型,你如果设的是数字,只要一运算,它就会自动把它变成数值型,直接运算就行了,而扇是所有的都是设成字符串型。只要你不申明,或者你不用特殊格式,我认为它就是自传。然后呢,如果你要运行这个数学运算,我就会把它要求你用特定的数学运算格式,我才知道这是数字。哎,这样做有人觉得可能写起来更麻烦,其实我说这样做的目的是为了简化事儿的变量类型。我们12就默认所有的都是字符串型,这样不再像其他语言,各位其他语言都是什么,它既有数值型,也有字符串型,还有日期型,甚至还有布尔型等等这样的一些数据类型。我们在学变量的时候,首先学的就是各种类型,而事儿简单了,事儿就一种类型,字符串型我问你简单了吧,只是在数值运算的时候稍微复杂一点,总体上看比其他语言简单。
06:20
所以善儿之所以做这样非常别扭的规定,我说心里话。我们现在可能是适,因为写事写的时间长了,适应。一开始刚接触事儿的时候,因为我们也都是先学其他语言,因为我一直说事儿其实虽然简单,但是它不适合作为初学语言。那我们都是啊,这个学学完其他语言,在学12的时候,一开始就觉得,哇,靠,极其别扭,怎么有这么二的语言,那其实用多了你就会想想明白为什么,他其实这样做的目的就是为了简化事儿的难度。OK,当然,我说如果你要从来没接触过一遍,无所谓,你就照着我说来走,你要接触过这事儿,可能你还得真得真得适应,适应好,这是第一件事儿。我们说。
07:06
在12认为所有的这个变量类型默认都是字符串。如果你需要进行其他类型运算,你可以需要用特定的格式才可以运算,这是share的第一个特征。第二个特征。Share的变半变量的命名规则,这个和其他语言都是一样的,变量命名是由字母、数字、下划线这三种符号组成,很清楚啊,但是不能以数字开头,也就是说内二没问题,二内就不行,那我们可以试试啊。来,我看一下我的远程工具啊。那我们可以试试啊。我们内等于IC命名对吧,这个没问题,但是内二等于IC也没问题,这样的话两个变量都有,内和内外俩都有啊可以啊,那但是如果你要是二内等于这个里面,这个时候就会报错了啊。
08:05
不能以数字开头,但是你中间包含数字或者结尾有数字没问题,但是啊,你小心啊,我可没有说不能以下划线开头,所以如果是这样的命令看。下划线内等于里边,这是没问题的IQ Dollar,下划线内这是可以的,OK,那以下划线开头没问题,它只是要求部门与数字开头,OK,这是变量的命名规则。其实这个所有语言通用,绝大多数不能说所有绝大多数语言命名规则都是一致的,所以背下来。接下来这个就跟其他语言都不一样了,要了命了,直到今天我这个有时候都还写错,他的意思是。在你做变量命名的时候,比如说这样的方式命名的时候,啊,罗内等于曹老师,这种命名的时候,你的等号左右两侧是不能加入空格的。
09:06
各位,只有上语言,或者说我们的这种,呃,程序自带的这种程序语言,不是操作系统自带的语言,我们干嘛,我们才不允许这样来做,不允许做这样的事儿,其实其他的语言,比如说c PP Java都没有这样的要求,其他语言都允许这样来做,那一般只有操作系统自带语言,比如说我们的Windows linus的share语言,Windows的点,BAT这个BAT批处理语言,它是不允许的原因。你看首先我加一个空格就会落错,原因我们Linux当中是命令。空格选项。空格参数的格式是不是来执行系统命令。如果你在这里加了空格。系统就会认为这是个命令,后面是他的俩参数,那系统中哪有这么这么个命令,所以他就会报命令,未找到,看到了,这是由于我们命令格式的原因造成,我们变量命名是不许左右加空格的。
10:07
小心啊,其他语言都不是啊,你们如果有兴趣。如果你们有兴趣打开其他语言。你们会发现他为了让这个变量命名反看的更这个这个更整齐,它甚至会强制要求你变量名后面要加空格,然后再空格再隔开,再给这个值,这是为了让变量看起来更整齐,我们这个不行。OK。这是这个注意的事,各位这个一定要注意,为啥其他所有语言,基本上除了这个少量的个别语言之外,其他所有的语言都是加空格,无所谓的,加不加都行,不加也行,只有事强制要求我说清了原因是我们的命令格式是这样,OK,那这种情况下大家注意啊,好。那还有一个问题啊,有学员问我,我说老师你前面给变量赋值是SC,你现在又给他赋值是曹,老师,那到底是谁?那这个值到底是谁?各位变量是这样的,它是覆盖的,也就是说你最后一次命名的值是它最终的值,OK,前面的命令就会被覆,这个就前面命名的值就会被覆盖掉,所以。
11:20
如果这个时候再复制它里面的值就会改过来,OK。好,这个请你硬背下来啊,这个简直是不是太痛盘好。这个我们讲过了。如果变量的只有空格,可以用双引号。来括起来各位,这个引号不是啊,这个引号应该是手工输入,应该是前面这个绿色的这个引号,OK,那我们说这个引号是我们linus引号。那我们前面讲过了双引号和单引号的区别,讲过了双引号括起来的里边特殊含义是有特殊含义的,而单引号括起来的所有内容都是普通字符,这是说过对吧?好,注意,如果你的变量这块没有空格变量的值,那加不加引号都行,加不加都行。
12:08
那如果有空格就一定要加井号,要加引号,因为我们说过了,我们linus看内等于S空格C对吧,系统就会认为这是命令,前面是命令,后面是参数,就就会报错,因为我们LINU4命令是通过空格来这个值,这个分格命令选项参数的,对吧?而加个引号,系统就会认为这是一起的,所以它就不会报错,就会命名了,看懂了好。这个是说过。这个也说过了,在变量当中可以加转移符,按说了,双引号里面这些东西都可以识别,让变量中的特殊符号变为普通符号,OK。其次,变量的值可以叠加。这个。咱们绝大多数语言都有这样的功能,我们看一下。很简单啊,它可以用两种格式啊,上面是一种,下面是一种,我们看一下它的啥意思,Text的值我负为123。
13:02
然后test的双引号,Test,注意这个引号必须要有,把变量括起来,后面再加456T的值就会变成123456,就是把原始的值后面再加入新的值,叫叠加。那这种格式啊,这种格式还稍微好一点,下面这个格式,反正两个格式都行,比如说我还可以在test后面再加789,这样加完之后test的值就是123456789,哎,就是允许在里面原值不变的情况下,在后面再加入新值,这是允许的,只要用这两种格式就可以。绝大多数语言都有这个功能,哎,这个可能上人也有啊,这个在写程序的时候还是有可能会用到的,那既然有两个都行,那背一种就行,看着习惯,超哥更习惯上面这种原因,下面这个很别扭,他把刀了符号放在了括号外面,大括号外面,而且用大括号很别扭,所以超哥一般用的都是这种,那我们试试。Test等于123,那么我们test重新命名,等于双引号Dollar test Dollar test调用值是不是就要加Dollar了,对吧?后面加456,那我们这个时候再看看test的值,就是123456,当然再重新赋值上面这种隐形这个格式就很别扭,大括号,而且是把Dollar写在括号外面,为啥我为啥说这别扭?
14:25
因为我们说调用值的时候,是不是变量前面就要加L了号,而这个中间隔了一个符号就很别扭啊,789,那这个也行,I口123456789变量值的叠加。这种东西很很简单啊,没,但是在后面有可能会用到,你要能看得懂,OK,你在自己写的时候,如果你要能记得这种格式,你写程序就会非常简单,有时候我们经常需要变量里的值不要更新,我是在里面加入新的值,这时候如果你要不会忘了这格式,你就得写代码,就实现这么多功能,可能也得写个十几行代码,但是你要记累这个东西,一条命令行是不是就解决了?
15:03
对吧,好。这是变量的叠加。接下来呢,那我们说这个就讲过了,接下来呢,我们说过了,这个如果是需要把命令的结果赋于变量,哎,把命令的结果赋于变量的话,需要在命令的前面加反引号,或者倒入小括号,这个我们上节课讲符号的时候说过,对吧?推荐用后面这种不容易看混,反引号太容易看混了,那这个就是我们之前举的例子,把命令结果赋予他,哎。这个是只要这个命令有输出,就可以作为结果赋予变量,那么变量的值就是命令的内容,OK,好,这是我们变量的结果,那接下来环境变量,鉴于这个间接大写用于区分啊,这个我们后面讲环境变量的时候再说。行了各位,这个其实就是我们这个这个这个这个变量命名的一些规则,好这些东西。
16:03
各位,没有道理,全都需要背下来啊,全都需要背下来好了,那这节课的内容就是这样,我们下节课再见。
我来说两句