00:03
这个程序里头啊,我们重点来看这一行。这样很关键,他解释了很多计算机的特殊的东西,这一行呢,我们在做一个赋值。我们有了一个变量price,我们在前面那一行定义说我们有一个叫做price的变量,然后呢,我们在这一行说我们这个price的变量呢,要被赋予一个值,这个等号在这儿。这个等号在这儿做的事情是负值,它是一个动作,而不是表达关系。对于数学来说,如果我有一个A等于B。那么A和B的意思是说A和B是相等的关系,他表达说这两个值是相等的。但是在计算机当中,A等于B是一个动作,他表示说,我要把B的值赋给那个叫做A的变量,所以这就会不一样,在计算机里头呢,在编程里头,当我们这边是一个B的时候,这个东西它可以是一个别的变量,它也可以是一个。
01:03
立集的我们看得见的那么一个数,比如说A等于六,OK,它表明说我们要把六付给A,那如果说A等于C。那么很可能这时候C也是另外一个变量,表明说我们要把C的值付给。在这个动作当中,左边和右边是不对等的,也就是说他们是处于不同的关系当中。右边是提供值的,左边是接收值的。在数学当中,我们知道说,如果我们有A等于B,那么我们也可以推出B等于A。因为。它们是相等的,这是可以交换的,这是一个关系,所以A等于B,当然也就意味着B等于A。可是对于计算机来说,A等于B和B等于是完全不同的,因为B等于A的意思是说,我们要把A的值付给B。啊,所以这是初学者首先要接受的一个概念,在早期有的编程语言当中,为了强化这种概念,不用等号来表达这种复制关系,而是说,比如说他可能会说A等于B。
02:05
啊,甚至有的语言会说make,这个A呢,是B。啊,就是避免使用数学当中常见的这种等号啊,数学用等号来表达关系,那我们在计算机里面避免使用它,可是呢,在从C语言开始啊,那么在现代的语言当中呢,我们广泛的就是使用这种一个等号来表达这种复制关系,因此呢,初学的时候一定要把这件事情想的非常的明白好,那在这个程序里头呢,如果我们在定义变量的时候给了price一个值,比如说我们写下说enterprise等于零,那这种情况的赋值呢,我们就把它叫做初始化,也就是说在定义一个变量的时候就对它做了一次。赋值,那么这种赋值叫初始化。如果一个变量没有被做过初始化,在他第一次被赋值之前,你是不能用它的。比如说如果我在这儿说,我想看看现在的price是多少呢?马上错误就来了,我们来看看这是什么错误,停留一下,他说,这个本地变量price可能还没有被初始化。
03:07
呃,也确实如此,对不对?在这儿我们还没有给price任何的值,然后我们就试图去使用price,让system out给我们看看price是多少,这是不可以的,好,这是不可以的,但是现在呢,我们这个叉叉的旁边还有一个这个。灯泡,这个灯泡的意思是说他有一些想法可以帮我们来改。来改进这个程序,可以帮我们来解决这个问题,我们可以在这儿点一下鼠标的左键。那它就会出现一些东西,比如说他说他可以呢initialize那个value,它可以帮我们去形成对这个变量初始化,我们可以双击这个选项。它就给我们加上了price等于零这件事情,这就是我们的初始化,我们前面提到过,在一行当中呢,呃,我们可以给多个变量来定义多个变量,那假如说我们现在做的事情是,我们除了有price,我们还有一个叫做amount的,好,那如果我把它写成这个样子,我们看到呢,刚才的那个错误又出来了。
04:06
啊,他又说这个price呢,可能没有被初始化,为什么呢?因为如果我们把程序写成这个样子啊,他的意思是说我们给amount一个初始值零,但是price呢没有给,所以怎么给price一个初始值,我们还得在这儿再写上等于零才行啊,所以如果你在一行当中定义多个变量的话,那么每一个变量都应该有单独的初始化的赋值,当然从软件工程的角度讲呢,我们更加推荐的做法是说你一行里面呢。只定义一个变量啊,这样的话呢,对今后的代码的维护和阅读呢,都会是有好处的,另外呢,现在这个时候啊,我们定义了这个amount之后呢,我们看到说这儿出现的是一个感叹号啊,感叹号而不是一个叉叉感叹号的意思是说他觉得这儿可能有问题,但是呢,这个问题呢,不会影响程序的运行,他觉得问题是什么呢?他说这个本地变量amount,这个变量amount呢,它的值没有被用到,因为确实如此,我们在这儿只是呃呃,单独的去定义了这个amount,但是没有去使用它,呃,这这种呃。
05:11
我们叫做警告啊,叫做亡灵的东西呢,呃,他是一种善意的提醒,但有我们呢,也可以这个去,呃,最好呢,我们也啊,最好呢,我们也能够去解决这个问题,所以我们先把这个amount这个变量给拿掉啊,我们现在不需要这个amount,我们先来看这件事情,我们在这一行做的事情是说我们让price呢。被赋值了的值呢?是用户输入的一个整数,如果在这个时候用户输入的不是整数会怎么样呢?我们来试一下。如果。啊,这个零是这句话输错的对吧?好,如果我们现在呢,用户输入了一个,比如说啊,Price,这不是一个整数对吧,本来应该是三十三六十六啊之类的price。那我们看到了很多红色的字啊,红字看起来不是好东西,我们把这个错大点,看它是什么,他说呢,这里出现了一个exception啊,一个异常,Java程序运行过程当中出现的这些情况就叫做异常,这个异常呢是一种input match,就是输入不匹配,因为我们期望的啊,我们通过next int表达说我们期望在这儿是有一个。
06:21
整数,可是呢,用户实际输入的不是整数,他无法把price变成一个整数,所以呢,他说这里有一个Miss match啊,所以如果你输入的不是整数,就会出现这样的情况,那么这一行呢,在程序当中啊,呃,我们有了一个符值,这个符值呢,我们说它是一个运算符,它和加减乘除是一样的,它是一个运算符,所以呢,这是一个赋值的运算符。这个赋值的运算符呢,出现在这一行当中以后呢,这个东西这个price等于in.next int就成为一个叫做表达式的东西啊,那这个概念其实大家不需要去非常深入的,呃,理解或者说去背说啊,这个东西叫做表达式,那个东西叫做运算符,学编程的目的是什么?学编程目的写出程序嘛,所以你你会用这些东西就可以了,我们现在这个程序里面啊,这个100啊是一个写死的数,如果我们希望用一个变量来表达这个100,我们要怎么做?
07:13
如果我们希望这个100将来是有可能有变化的,我们要怎么做,那我们就需要有一个变量来表达它对不对?那么不妨呢,我们把它叫做amount。然后把程序里面所有出现100个地方都给它替换成amount,我们来试试看我们要怎么做这个事情呢?首先呢,我们可能需要在某个地方有个叫做amount的东西,然后把它初始化成100,然后接下去呢,下面出现100的地方我们要换成amount,所以当然这个地方我们换成amount没有问题,然后这个100,如果我们现在把它换在这里的话。就不对了,因为这个amount现在在字符串里面对不对,在字符串里面的东西。计算机不管,所以你现在放进去就amount,它还是amount,我们需要把它从字符串里拿出来,我们说其实是amount这个变量的值。
08:04
变成字符串和那个减号去连接在一起,再和后面的price去连接在一起,再去做一些相应的连接等等啊,然后才能够形成我们想要的那个结果。现在我们来看看这个程序是不是还是对的。你好,二十三一百减23等于77。OK,我们程序里面有了第二个变量,可是呢,我们还发现说这个变量,这个amount这个变量。其实在这个程序当中,它叫做变量,我们中文叫做变量。变量的第一个字是变。意思是他是要变的,对不对,可是。在这个程序当中,这个变量它是不变的。如果程序当中有那么一个变量,它的值其实是不变的,初始化完了以后永远是不变的,我们可以把它做成我们叫做常量,意思是它是一个。保持不变的量,那怎么做呢?我们在前面在这一行定义这个变量的前面加上一个字,叫做final。
09:03
有了这个final,我们就定义了一个常量,说这个amount是一个常量,我们看到程序还是正确的,我们我们来运行它,当然还都是对的,20,呃,23 OK,等于77。如果我们说amount是个常量,就意味着接下来我们不能做什么,比如说我们想要说amount现在不等于100了,等于50。就不可以。陈旭就会说。这个final的这个变量,它不能够再被赋值了,因为它是final,它是常量的,好,所以我们通过这个方式可以在程序里面呢,去定义一些固定的值,但是呢,让它不是以值的面目出现,你看如我们在这说是amount,那别人一看amount知道啊,这是指的是那个票面的金额,如果你指的是你在这里写的是100,其实呢,其他人是不理解这个100到底是什么事情的。接下来我们再来做个改动,假如说我们希望这个100不是固定的。
10:01
我们希望这个100是别人是用户运行这个程序的时候输进来的,因为为什么我一定是拿100块钱去找,我不能拿50块钱去找呢。所以这要怎么改呢?当然第一件事情我们要把这个final去掉,对不对?现在不是常量了,我们需要它是可以变的量,所以它是一个变量,然后呢,当然这个amount也得是输入的,所以呢,我们不妨这样子做,OK,你已经看到了,我在用拷贝粘贴,拷贝粘贴是个好技巧,CTRLCCTRLV一定要一定要学会了,在程序当中CTRLCCTRLV是很常用的手段。好,我们变成amount了,下面东西不用动哦,这个amount是用户输进来的,我们来看看运行起来会怎么样。运行起来我们先输100,这个100是要给那个amount的,对不对,回车。下一个100,下一个数,我们要给那个price,比如说23,于是我们有了100减23。如果我们输入的时候是这样的,我们先来一个50。然后我们不回撤,空格23再回撤,这个时候他也能够知道我们的意思是说第一个50给谁,第二个23给谁。
11:07
那那我们就得到了五十五十减23。假如说。我们希望呢?假如说我们希望呢,因为现在这个程序啊,挺没头没脑的,对吧,来一句你好,然后就让你说两个数,你怎么知道第一个数是amount还是第一个数是price呢?我们可以在程序里面适当的加上一些输出来让我们的程序运行过程当中表现的比较友好一点。比如说我们可以。我们可以在输出,呃,我们可以在输入amount之前先来一句说点out.print所以这时候我们用的是print不带L的意思是说我们输出的时候没有跟上那个回车,然后呢说。请。输入,比如说啊,票面可以来个冒号啊,然后呢,在这儿我们同样的要来一句说请输入。
12:01
金额,我们看一下这会是什么效果呢,运行一下。你好,请输入票面,这个时候我们看到我们的输入跟在那个冒号后面了,说100回车,请输入金额50。再回车,100减50等于50就出来了。这也是我们在程序当中常用的这种手段哈,我们在输出的时候有一些好看的提示性的东西,然后呢,呃,让用户能够明白我们到底要输入什么东西。
我来说两句