00:00
好,那么咱们这个第二章的话呢,整个呢就讲完了啊,那么讲完以后的话呢,针对于这一章啊,咱们也做一个复习啊,回到咱们这个课件层面呢,这有一个零三诶复习与企业真题,我们看一下这个第二章。好把它打开,呃,首先的话呢,针对于咱们整个这一章呢,做一个随堂的复习,呃,在讲这个内容的话呢,相当于我们是把这个知识呢,给它变得挺厚的哈,嗯,咱们从第二天一直讲到现在啊,相当于是一天半的这个时间讲的是这个第二章,诶那么在复习的时候呢,我们把它呢就要变得薄一点了,我们浓缩一下,看看这里边儿都具体有哪些重点的内容是需要我们必须要掌握的啊。好,那么首先呢,我们做一个,呃,知识点一点点呢,先把这个框架呢,给它搭起来啊,那整个这一章的话呢,我们叫做变量运算符啊,那很显然呢,这一章的内容不止这两个,只不过呢,这两个是最重要的啊,一开始的话呢,我们引入了几个概念啊,叫做关键字。哎,这个我们还可以呢,也起个叫保留字吧。哎,其实呢,保留字呢,也算是关键字内的啊,还有呢叫标识符,标识符,标识符的话呢,我们单独的给它列出来。
01:07
哎,标识符啊,这个有的时候以前也念标志符是吧,但是更多的大家还是念这个标识符啊好,这是我们说的这个第二个内容,然后第三个内容。我们就开始引入这个变量的内容了啊,首先呢,是变量的一个叫基本使用。啊,整个呢,我们在开发的过程当中,变量是一定会用的啊,永远都离不了的啊,所以这块呢,我们这个讲了基本数据类型的变量是吧?诶这呢,也是我们接下来重点说的啊,叫基本数据A型变量的,诶它的一个使用好,那么从类型上来讲的话呢,我们到目前呢,主要是讲了基本数据类型。啊,然后呢,关于引用数据类型呢,有好多种,我们一点一点展开给大家呢,再去说啊,引用数据类型里边呢,最重要的就是类,这个类呢,也是咱们面向对象里边重点要讲解的这个章节。好,那么基本数据类型变量,我们基本讲解完成以后呢,接下来我们就说了一下它们之间相互运算的一个规则。
02:08
啊,基本数据类型变量。间的啊运算规则。诶,这个运算规则呢,它有两个维度啊,第一个维度呢,我们称为叫自动类型提升啊,第二个呢,叫强制类型转换啊,这个我就写个1.5.1。哎,自动类型提升,那它是一个自动能够实现的。啊,下边呢,叫强制类型转换,需要我们必须强制的去加个小括号去实现的。OK啊,这呢,就是我们说的这个运算的这个事儿啊,然后呢,紧接着的话呢,我们再讲了一个。哎,基本数据类型之外的一个类型啊,叫做类,类里边里的一个特别的类,叫做死string啊,那就是string类的一个使用。以及呢,它与啊基本数据类型变量阶段运算。
03:00
OK啊,这呢就我们说的这个1.6啊,这个因为呢,我们在开发当中,这个字符串呢,还是非常常用的,所以呢,我们就把它呢单拎出来,提前呢就给说了,说OK,这呢是我们说的这个1.6这个内容,这个完了以后呢,哎,接下来我们说了一个常识。啊,这个常识呢,就是关于这个进制之间的一个认识啊。啊,禁制的一个啊认识。好,这呢,我就叫了一个认识了啊,你看这个呃深度呢,也没有那么呃深是吧,要求也不是那么高啊,OK,这儿呢,就是大家做一个了解性的内容就可以了,然后这个禁制完了以后啊,下边呢,我们就正式进入了这一章的另外一个非常重要的内容叫做运算符。啊,运算符这块呢,我们一共讲了几种啊。回忆一下。啊,六种。六种啊,第一种叫算术运算符。哎,然后呢,接着你看这个大家不用去记哈。
04:00
哎,我讲课呢,我这块稍微熟悉一下,你不用啊,哎,赋值运算符。哎,这个呢叫哎比较运算符。哎,然后再接着啊,1.8.4啊,逻辑运算符。嗯,然后呢,未运算符。哎,1.86啊叫条件运算符。OK啊行,那我们一共呢,就讲解了这六种,那其中呢,其实在一开始讲这个课程的时候呢,我们说还有一类运算符叫拉姆达运算符啊,这个符号呢,等我们讲到最后一章讲拉姆达表达式的时候呢,我们再说它是GD8的一个新特性啊。嗯,一个新的性好,那这儿呢,就是我们说的这样的一些这个运算符,整个呢,我们这一章呢,也就是这些内容,那先整体上来说重点的内容啊,直接就来这写了,变量的基本使用,毫无疑问这是重点。
05:03
哎,那大家也发现了啊,确实是因为我们翻来覆去的写程序一定要呃用变量的啊,所以它就是重点啊,那么基本数据类型变量呢,这也是重点。我感觉好像我都要画了是吧,这也是重点是吧?哎,这这也是重点,那运算符这块呢,就是这就不好加了,除了它之外是吧。呃,其他的,呃,常用的一些呢,也也算是一个重点了,但不是那么难啊,行,这个我就这块儿呢,就是较常用的是重点啊。诶是重点OK,行,那就这样呢,大体的标识一下就行了,行,那从今往后呢,我们稍微的啊顺一下,呃,第一个呢,叫做关键字保留字啊,这个保留字呢,其实有两个哈,这个我们上课先说一下这个保留字吧。对,一个呢叫got to是吧,还有一个呢,叫。放死他。诶就他哈,就这两个呢,其实从官方发布的呃这个说明来看的话,关键字呢,呃保留字呢,是属于关键字里的啊这个关键字呢,我们就掌握一个事儿就行了,就是被呃Java呢赋予。
06:11
特殊含义的珠串是吧?诶就行了啊,然后呢,这块呢,官方。啊,规范中啊有一共呢是50个啊关键字。哎,然后呢,其中呢,是包含这个保留字的。哎,这个你注意啊,这是一个,然后另外一个呢,这50个里边呢,不包含三个。这三个呢,分别对应的叫做处。False。哎,False还有一个呢,是叫做nor啊,哎,前两个呢,我们已经见到了,是属于布尔类型的两个值,这个now呢,哎,谁能取呢,就是这个string。啊,此针为代表的引用数据类型呢,都可以取值,这个no说白了就这呢,是具体的负的这个值了哈,就这三个呢,我们说虽然。不是关键字。但是呢,可以当做关键字来看待。
07:03
啊,那么看待是什么意思呢?首先它也有具体的意思啊,另外来讲的话呢,诶,我们下边要讲标识符,标识符在命名的时候呢,有一个规则。必须强制遵守的说我们命名标志符的时候呢,不能够使用关键字,那其中呢,就是也不能够使用这仨,呃,就有点像呢,就把它们看作是关键字来看待了啊,就是注意这个事儿啊就行了,行,那具体的这个关键字50个呢,我们一个一个呢展开去说,那你像我们讲的这个基本数据类型这些呢,都算是关键字了,讲面向对象的时候呢,大批量的关键字呢,我们就引入进来了。啊,这呢是我们说的这个事儿啊,这就过了,然后下边这个呢,就叫做标识符啊,它呢是一个比较重要的一个概念啊,我们定义变量啊,定义类名啊,方法名啊都是啊,所以标识符首先呢算是一个理解啊。哎,那这个怎么说呢。哎,我们就不管那个定义怎么着了啊,直接呢,就一个小技巧说凡是可以自己。命名的地方。
08:01
哎,都是标识符。哎,没问题是吧,比如说啊类名。变量名。哎,方法名,哎,我这写的顺序呢,也是我们一点点引入的这个顺序,后面呢,还会接触到这个,比如叫接口名。哎,对,包名啊,常量名。哎,等是吧,哎这样的一些结构啊好这呢是我们说的这个事儿啊,那么接下来的话呢,我们重点需要大家能够记住的啊。这有两个事儿,第一个呢,就是标识符。标识符命名的规则是吧?那这个呢,我们也写过,它是必须要。遵守的啊,否则呢。编译不通过是吧。OK啊行,那那这里边儿呢,对应的这个规则呢,既然说到这儿了,咱们就把它呢拿过来啊,行这块一边说咱们一边这样去做啊。这个咱们写这一章的代码呢,其实不少了,大家下来这个敲的话呢,可能呃,先找哪个后找哪个多少可能也有一点难度啊,所以咱们这块一边复习呢,我就把这个代码呢,也都粘到咱们这个复习笔记里了啊,下来呢,也可以按照这个顺序呢去走啊,嗯,咱们现在呢讲的是这个标识符啊,就是它这呢,就是它命名的这个规则啊,CTRLC。
09:20
啊,这个呢,我就把它呢这样拿过来啊。嗯,这个规则啊,我就不找同学具体来去背了啊,要求大家呢把它能够记得住。哎,记得住,行这是一个事儿,另外一个呢,呃,需要大家也是记住的标识符。命名的规范啊,就这俩你别整混了啊,这个命名规范的话呢,我们说呢,是可以不遵守的。哎,但是建议大家遵守啊,这个事儿呢,大家也都能理解啊,好,那么具体这个规范有哪些啊,也得需要大家刻意的来去记一记,如果呢,你再去给变量命名的时候呢,你说哎呀,我记不清了,是怎么写了变量放名呢,实际上是小作峰啊,你说忘了忘了,你过来翻一下这个笔记,你千万别说我先写个先凑合着。
10:05
那你要一凑合的话呢,你就老凑合了。这呢,就我们说的这个事儿啊,这就过了啊,诶这个我们接触比较多的呢,是这个类名这块,这叫大驼峰变量名方网名呢,这叫小驼峰,你先把这两组先记住它。那然后呢,慢慢的我们后边在接触到报名的时候,你知道都是小写的这个都大写这两个呢,目前还没有出现,先把这两组先记住。除以二。好,然后最后这块的话呢,你就记住四个字叫剑明之意。哎,这就行。但起名字的时候呢,这个你想一想。是吧,你把这个变量的话呢,你也别凑合你想想啊,这个呢,就好比是你以后有孩子了,这个你孩子你想起个什么名呢,你是不是也得特别慎重是吧。哎,这个呢,你也是一样啊,诶这个起变量名的时候呢,你给他一个具体的意义,你像我们代码要写的比较多的时候啊,从上往下这个吉上昂上百方的代码里边定义了好多的,比如int型的变量,这个名呢,你想想你要是自己随便起的,后边用着用着你自己都懵了。
11:06
所以呢,一定把它起个有意义的名啊,这就OK了,那具体呢,呃,有什么样的场景,叫什么名合适,这个你不清楚的,咱们后边呢,还有很多的练习,遇到相应的练习的时候,我写名的时候会注意,那你不行就先模仿模仿是吧,把这些词汇呢也充实充实啊。好,那这个事儿的话呢,我们就过了啊,具体涉及到这个测试的代码啊,我就把这个呢,从这到这CTRLC给它粘一下。哎,行啊,那么大家呢,你下来直接呢,就在这块看这个代码就可以了,这呢关于这个标识符就说完了,下边呢,关于变量的一个基本使用。哎,那一提到这个变量啊,这块呢,主要大家关注的就是它的三个要素。啊,三个要素,这个我就先把这个这样关了啊。哎,三个要素清楚吧。哎,数据类型。变量名。
12:00
哎,变量值对,就是这样几个啊。这个没有这个绿色了,把它再整起来。哎,我有同学问我这个绿色,我这用的是这个。这个护眼小卫士是吧。好,那么就是我们提到这样的三个要素,然后呢,在呃定义这个变量的时候呢,就是先有数据类型,再有一个变量名,然后呢,诶这是一个赋值符号了,叫变量值,你看这个呢,都是咱们提前用了后边才讲运算符才说到的啊,诶包括呢,咱们讲这个main方法,你可能第一天的时候就就有点受不了了,是吧,这个Java学不会了,其实呢,我们都是先用了一些后边才讲的东西了,可以让你感觉稍微有点难了。啊,当慢慢的我们把这些东西都熟了以后,你发现哦,原来也就那么回事儿啊,是这样。行,这个呢,就是它定义的一个基本的一个内容啊,我把这个呢就拿过来啊,其实呢,你要说核心的点就是你得知道呢,变量我们定义的时候呢,它的一个格式啊。啊,我就直接CTRLV吧,哎,就这三个点。行,那下边的话呢,就是我们具体写这个代码呢,诶给大家呢,举了举这个例子啊。
13:01
诶,就在这儿呢,诶CTRLC。哎,这个我们把它拿过来啊行,那我们在定义这个变量的时候呢,提到过一个事儿,就是变量的话呢,一个它有作用域。哎,你出热作用域呢,它就失效了啊,那么在同一个作用域内呢,你不能定义两个同名的变量。啊,这呢,也是我们在讲这个内容的时候呢,提到过这个细节啊,就是这里边儿有具体的这个说明。啊,包括这个第五个是吧,定义变量的时候呢,得遵循这个规则和规范了,啊,这个咱们也相应的写到这儿吧,这算是一个具体的说明。哎,写到这儿啊,这个我就叫一了。哎,这是二啊好,呃,那么。写错位置了。变量的基本使用。啊啊对着呢啊,下边这个上面呢,是我们关于变量的基本使用啊,然后下边我们重点关注的就是变量的这个数据类型了,诶那数据类型这块我们就提到了,呃,其中的一类呢,叫做基本数据类型啊,那我们回到这儿呢,就提到了,说变量呢,按照数据类型呢来分类啊,我们大方向是分成了两大类,这呢算是咱们的第一个这个知识点。
14:14
嗯,这个我们这么着吧,我把它先框到这个框里边哈。这个是我们的这个事儿。这样的啊行,那么这个变量的话呢,分类这块,大家先把这个基本数据类型变量这块呢,记住。这个我要是提问,大家说基本数电变量有哪几种,这个你必须得脱口而出。哎,都得能够说出来的,然后引用数据类型变量这块呢,你不用管了,先随着咱们讲解的深入啊,最起码像这个类呢,论属于类论呢是在这儿的,然后呢,我们第五章呢讲数组,然后呢面向对象呢啊,这个是6783章,我们在第八章的时候呢,我们讲接口。呃,然后呢,我们在同样面向对象的时候呢,引入这两个,最后呢,讲新特性的时候呢,再引入这个,呃,就是一点点去记就行啊,不用特别着急去关注这个事儿,这个呢先记住它行,那么下面的话呢,我们就主要呢,是针对这哎八种基本数据类型,一个一个的展开呢进行的这个讲解。
15:14
啊OK啊,这是1.4,咱这写一个呃1.4.1吧,哎这个哎算了,我就不写这么细的了啊诶咱们讲的话呢,是分成了呃两个点大文件来的啊第一个是诶关于整形和浮点型的一个使用,这个是咱们写到这里了。那这不在这儿吗?我把这个CTRLC。哎,测试。整形。那这个我就不用这个。这个符号的啊。整形和。F电型。哎,行这个代码呢,我们就拿过来了啊好,接着来测试。哎,字符型和。波尔型。行啊。
16:00
那这个呢,对应的是咱们这个代码。诶,CTRLC。嗯,好,那么在这儿啊,相应的这个类型代码测试这块呢,我们再稍微的唠叨两句哈,关于整形这块呢,大家呃,你熟悉一下这里边这个细节,诶然后呢,正常我们开发的时候呢,主要用的就是int类型啊,Int类型呢,会用手就可以了,诶浪类型你知道呢,我们如果定义的时候呢,这个数特别长了,你务必呢要把这个L给加上啊,你要不加的时候呢,诶,他要是数据没有超出in的范围,你还能接受啊,那就自动的应提升了啊,你要是这个数比较大的,那一定得加上这个L了啊。行,那通常我们都加上啊。为啥呢?你想如果这个数比较小,咱们没有加。哎,那就相当于,呃。啊,还就得在这说,比如这个数比较小,你看这样吧,我就没有加了。那既然这个数本身又比较小,那你付给他其实也没有必要了,那你直接付给一个in的不就行了吗?是吧,既然你付给适当了,那说明这个数呢,有可能它会就比较大嘛,那这样的话呢,你就直接带上这个L了啊,所以说呢,只要定义浪型变量了,你就把L给它加上OK。
17:09
行,然后呢,这个浮电型的话,你就记住我们开发中就用double哈的话,精度呢,实在是有点儿小,哎很少去用,除非呢,就是我们在一些,呃,咱们不说Java给我们提供了好多API嘛,有一些API呢,它的那个呃方法的参数呢,它就是float,那行那咱们就定一个float了。哎,除此之外的话呢,我们只要是自己主动去定义浮点型,那就是用它double。啊就完事了啊,然后呢,关于这个字符类型的话呢,我们在讲解的时候,你发现呢,字符类型这块事儿啊,其实是挺多的,因为呢它会牵扯到啊,咱们在课件里边也有,就后边这个字符集的问题,那关于字符集这块呢,其实我讲的非常的清。啊,我们后边呢,讲到string的时候,咱们有一章呢讲长类啊,讲string的时候,包括呢讲IO流里边我们讲转换流的时候,到时候呢,会把这个东西呢,给大家讲的很清楚啊,你就彻底知道啊说这个文件呢,它底层这个存储,包括我们能够查看这个字符集的这里边事儿了,包括这个字符集之间的区别是什么啊会很清晰,现在呢,咱们刚开始讲课呢,这块要讲透的话呢,就很重,大家也会迷糊,所以呢,我们就呃能少讲就少讲啊,那在这里边儿呢,关于这个差,其实就涉及到这个问题,比如说我们在定义的时候呢,后边也讲过,说这个差呢,实际上呢,是可以参与整形的运算的啊,那之所以能运算,就是因为它还对应着一个数。
18:30
啊,明明是个字符,还对应个数啊,这呢,其实就涉及到了我们给呃,这个每一个所谓的字符啊,包括呢,世界上各个国家的这种语言,包括世界上的一些运算的符号,我们都会给大家对应个数,这种呢映射关系,左边是个字符,那右边呢,映射成一个具体的数,这个映射的关系呢,就称为叫字符集。啊,那么像这个人家这个美国这块呢,呃,26个英文大小写字母,常用那几个标点符号啊,加上几个事儿它呢就特别少。所以它这个字符集呢就很小,哎,它呢用的叫阿森马。
19:05
诶就可以了,然后欧洲呢,呃,也不比这个英国这块多多少啊,英文这个多多少,他呢,还有这个叫拉丁的是吧?呃,然后呢,咱们中国的话呢,你比如说你这个的,呃,英文这个其实二次玛里边,它一共也没有超过128种情况啊,然后这个拉丁的话呢,也就256种情况就够了,你像英文字母大小写26乘二,这才50多种,加上一些符号,这都。足够是吧,但是咱们汉字的话呢,轻轻松松就上千个。所以用他们肯定盛不下哈,所以咱们就要有中文自己的这种字符集,那再者的话,你中文不行,世界范围那么多国家呢,是吧,你不能区别对待人家呢是吧,那那就得整一个世界范围内的,所以字符集啊,你发现就有好多种。啊,这个咱们以后慢慢的再说啊行,那这呢,你就知道我们表示这个差询的时候呢,发现它的方式就很多,那这么多种方式里边,咱大家呢,主要关注的就是还是第一种。哎,就可以了。啊,表示一个男,表示一个女是吧,像这样的就是一个字符就能搞定的,我们就用叉了啊一旦呢,稍微的复杂一点说你的家庭住址是什么呀,你的姓名是什么呀,那就是顿就上了。
20:10
呃,在我们开发当中,所以死钝用的频率也很高啊,OK,那布尔类型的话呢,就是一个处一个false,也不谈它占多大空间,然后后边我们讲流程控制的话呢,包括我们讲运算符,你发现呢,要么哎,这个运算符左右两侧都是波尔型的,像逻辑运算符啊,要么的话呢,像比较运算符一样啊,运算的结果是波尔类型的啊,这呢就是它存在在开发中的一个场景,OK。行。那么关于它这块呢,常用的这个变量呢,大家熟悉熟悉啊,写一写啊,也一定义就写错就行了,OK,然后下边的话呢,我们来看看这个运算的规则,这个运算规则啊,注意咱们是先讲这个,后讲运算符。咱们在讲这个规则的时候呢,是拿的这个加法来说的啊,但实际上呢,不光适用于加法,就是凡是下边这个运算符出现的地方,如果有不同的类型了,他们都满足这样的一种关系。
21:01
OK,行,那运算的规则我们回过来啊,这里就提到了这个事,我就直接把它呢,咱们就完整的粘过来了啊,CTRLC。哎,把它粘过来啊,那么大家呢,落地你需要记住的点呢,实际上呢,就是这样的啊一个公式。就把这个公式呢给大家记住就行了。啊,这个公式呢,这头是double,然后左侧这块呢,啊,一句话说不清楚啊,那就是涉及到就是他们仨之间的两两运算呢,结果都是int,所以你光看这个图呢,可能稍微有点迷糊啊,必须要补充一下这句话。就可以了。OK啊,没问题,像这呢,是我们说的,这叫自动类型提升。啊,不是特别难啊,自动的就行,只要你这样一写,那这自动的就诶对自动的这样就转换过来了,行,那么它的一个逆过程呢,就是我们下边提到这个叫强制类型转换啊。啊,这个呢,在开发当中,我们会有应用场景,这个呢也会有的。啊,也会有的啊,强制性转换,所以呢,哎,我们接着又提到了这样一个事儿。
22:08
诶这呢,我们把它呢也拿过来啊,哎,这个呢,现在我们浓缩一下话呢,呃,其实呢,这个事儿呢,也不复杂啊,就是你想把上面这个公式当中。啊,就是我们上面讲这个啊,右边的这样的一个变量转换成左边的啊,那这时候呢,我们就要前面加一个小括号,写上你要转换成的这个类型就可以了。啊,那么需要注意的点强转可能会出现。对精度损失是吧,这个也很好理解,你这是一个int类型的,你占四个字节。然后呢,你现在非要把它转化成是个short类型,那就要把这块呢给砍掉,就留两个字节,那一旦呢,这些位置是存着数据的,那自然而然这个数据呢就缺失了。那如果这块呢,全是零。啊,最高位也是零,这都是正数,那你砍掉的话呢,就不受影响,就好比是呢,我们印的一个变量这个I这个值呢,是比如说啊1000,哎,你要把它强整成是一个哨的话呢,这个少的还是1000。
23:04
当然呢,你要说这个值呢,是呃,这个超过这个少的范围,在这块有数呢,你要一强转,肯定这个数就变了。这呢,也是非常好理解的。啊,所以说呢,我们通常情况下呢,一般啊呃,这种强转怎么就不会出现这个精度损失呢。一般是这样子的,但是你看啊,本身我这是一个int。我把这个int型的变量,我是通过自动类型转化给它提升成是一个long了。然后呢,我又把这个long呢,给它又转成了是一个int是吧。像这种的话呢,是不是都不会出现这种损失了。哎,对啊,这种就不会出现损失,那你要说它本身你定义的就是一个浪,那你要是往下转就有可能会损失。那咱们在一些开发场景当中,可能会有这样的问题啊,就比如说这就是int,但是人家这个,呃,方法的这个参数部分需要是个浪,那你这块呢,就往这转,那你往这传一传,它其实就提升了啊提升以后的话呢,回头得到结果,你又想付给另外一个变量,结果那个变量是int,那你就再往下强转一下,哎,由于你是原来就是int上去的,所以你再回来的时候呢,也没事。
24:08
哎,就可以了,行,这呢,就是我们的以后的能见到的这个场景啊。好,那么这两个呢,是互为这个算是逆运算的哈,然后呢,以后咱们讲面向对象的时候呢,还会讲多肽。哎,有同学可能预习过哈,呃,多肽呢,就好比是上边这个操作。然后多肽呢,也有一个叫向下转型,就好比是这个操作。呃,多肽是比较难的啊,那么有了这两个做基础之后呢,到时候我们类比着去说啊,会更简单一些。好,这两个呢,我们就过了,然后接下来的话呢,提到这个string开发当中,因为string呢,咱们很常用,甚至说呢,我们最先接触的其实是string第一天写了hard,那不就字符串吗。诶,所以呢,我们要讲一讲这个string的使用啊呃,下边的内容的话呢,其实也是分成两块了,第一块呢,就是string的呃,它的一个呃基本的认识啊。哎,它这个认识,这个认识的话呢,我们把它呢,就称为呢叫字符串了,然后呢,诶使用一对。
25:05
哎,这个双引号呢,来表示。OK啊,然后呢,内部。哎,包含。哎,包含我们说零个啊一个。哎或多个,哎字符,哎字符串,字符串啊里边呢,就是有好多的字符,哎一个字符就是我们上面讲的一个差。诶,就这样个情况,像这呢,是我们关于string的一个认识,诶那么我们接下来的话呢,就提到这个string呢,和基本数据类型变量间的一个运算了,因为我们还没有讲其他的引用数据类型啊,所以我们现在只谈基本数类型啊,以后的话呢,我们再会接触到它跟其他类型变量之间运算的一个情况。啊,那就是下边的第二点啊,String。哎,鱼,注意是八种。那基本数据类型变量间的一个。来运算。然后这块的话呢,也是需要大家呢,能够这个熟悉的啊,这个运算的话呢,就只有一个。
26:02
对,就是这个连接没有了。啊,然后呢,接着需要注意的就是运算的结果。啊,运算的结果还是哎,死针类型。是吧,哎,其实这块呢,就有点像什么呢,比如我这有好多的变量啊,哎这呢,中间我写的都是加号。哎,这些加号呢,有可能是连接,也有可能是加法。啊,一旦呢,你比如说我这是个in特型的值,这呢也是个in特性的值,那这呢,显然这就是加法。但是一旦呢,要是有一个string参与了,后边呢,哪怕你都是。是吧?那你注意呢,这时候呢,是不是从这个这个是一个加法运算那个数,这是不是就是连接了。对,因为这是跟string参与了啊,那连接以后呢,这个结果就还是string,那导致后边呢。全都是盾是吧?啊,因为呢,一旦结果是之后呢,后边是轮参异呢,这又是连接,结果还是轮啊这呢又是连接,这又是连接,以此类推,有点像这个多米诺骨牌一样哈,只要呢,这块倒下一个,后边呢全就跟着都都倒了啊只要这有一个是字符串,后边跟着全都是诶字符串参与运算的。
27:10
所以呢,你在后边呢,你说诶这是两个int,我这写个减号,你发现呢,直接编译就报错了,因为呢,一串下来都是字符串,到这的时候呢,你突然来个减号词呢,跟别的类型不能做减法,这就报错了。哎,这个呢,小心一点就行。好,那关于这块的话呢,这个相应的这个代码,哎,这个咱们也把它拿过来啊,这个就没有了,把它关掉。打开这儿啊string啊,String在这儿呢,把这仨打开。嗯,在这啊行,哎,上面这个文字呢,我们也给他拿过来吧。来CTRLV一下啊行,那么刚才呢,我把这个核心的点呢都说了啊,大家呢,你下来以后呢,像这块呢,都是我们为了讲这个知识点呢,测试的这些代码,因为大家刚开始学,所以呢写这些,呃,基本的这个操作的时候呢,可能也不熟,那建议呢,你下来,虽然说这是测试代码吧,哎,你这块也是建议呢自己按照我这个呢,稍微的自己也写写,熟悉熟悉。
28:08
啊,那相应的我们这块还有其他的一个练习。啊,这个练习的话呢,我也把它呢就粘一下。哎,这是第一个练习。诶,这个后边我讲课的时候呢,给大家说一个小的这个点哈,就是每天我们会讲很多这个代码了,那么这个代码的话呢,其实简单来说呢,可以分成两部分啊,或者叫两种类型吧。啊,一种类型的话呢,就称为呢,叫测试代码。我先把这个我粘过来啊。呃,一种呢,叫做测试代码,就比如说咱们刚才讲这个string的时候呢,下边这个代码,那测试代码的意思呢,就是我们为了讲上面这一些知识点啊,一边说一边测啊,让大家能够理解它这是什么意思,像这种代码的话呢,其实大家呢,你只要是理解上边这个知识点了,这个呢,你可以不去敲。
29:02
啊,当然因为咱们这不是这两三天是刚开始讲课啊,所以建议大家你写写,那后边呢,如果讲了好几天以后,诶,我们以后再去定义这种字符串啊,你可能你也挺熟了,诶你可以不去敲,只要呢这个知识点清楚就行,但是你要晚上自己呢,看这个知识点有点费劲了,那你看看我这块呢,当时怎么测的。啊,这是这个事儿啊,诶这块你可以呢不取消,包括呢,这个代码我可能写的也不是那么严格,比如说你看我定义变量,我都这样写的。但开发中也说了,不让这样去定义是吧?啊,不能见明之意吗?哎,这呢就是为了测试嘛,这叫测试代码啊,可能有的时候写的不会是那么规范啊,就是上面写这个操作,下边怎么又干个这个事儿呢,纯粹为了测试啊,那么练习的话呢,哎,那这儿呢,写的就会比较规范一些了,所以大家呢,根据相应的这种练习的需求,一定要把这种代码呢多去写一写。那除了我上课讲的之外呢,咱们在课件当中还会有一些这种一些案例啊,有的我们就没有讲了,那这里边儿呢,你也可以去写一些相应的这个代码呢,写的就比较规范,只要前面有写这个具体的需求的这种代码都值得去写。
30:06
啊,OK。行。这呢是我们说的关于string啊,它的一个使用啊,这个我们就过掉了啊,然后下面呢,关于这个进制的一个认识,诶这呢我们没有代码支撑了,哎,我画了这个相应的这个图,这个图呢就放到了这个位置了。嗯。诶放到我们第二章的这个位置,我就不把它往这粘了,诶大家呢,诶我已经共享了啊,直接呢你诶把它下载下来就行,然后在这儿呢,我们就说几个事儿就行了哈,第一个需要大家呢去呃这个咱们看成是一个叫熟悉吧。哎,注意什么呢?就是这个二进制,十进制八进制,还有16进制。他的一种呃,声明方式哈。哎,生命方式这个二进制呢,咱们说呢,是得以谁开头啊。是不是他开头。对吧,哎,咱们昨天写的十进制不用八进制呢。
31:02
对,BE0开头。这个你得熟悉16进制。对以零小写的X或。哎哎,大写的X呢,开头这个是零,你别写成O了啊。啊,更别写成XO了是吧。嗯,行,这呢是我们说的这个,这个你得清楚啊,这个完了以后呢,接下来诶,我们需要掌握的点呢,其实就是这些进制之间的相互转化了,在转化之前的话呢,由于我们不太熟悉这个二进制哈,所以呢,我们是先讲一下这个二进制的一个理解。呃,二进制。诶啊二进制啊,它的一个这个理解啊,这个理解呢,首先呢,我们是针对这种整形的这个数据来说的啊,这里边儿呢,就提到一个概念叫做源码反码和补码,哎,那这呢,我们就提到说对于这个正数来讲叫做圆码。对,砝码。五码叫三码合一。
32:01
哎,三码合一的就是三个码是相同的。那这个大家现在好像没有这种概念啊,你像我记得我上这个大学的时候呢,包括呢,嗯,后来读研的时候,那时候还有这个,咱们说叫买手机这个水货是吧。啊,那时候呢,你去香港那块从淘宝去买啊,就是他买这个韩版的,或者这个日版的或者美版的,比这个咱们国航的这种要便宜一些啊,那时候他有的时候呢,他会把这个机子先拆了以后呢,先这个转到大陆,通过各种方式是吧,然后呢,他再去卖哈,就要便宜一点,呃,你为了证明说这机子你得是原装的呀,他就提到了一个叫三码合一,比如机子后边呢,那个条上有个码。盒子上有个码,还有呢,你手机正常开机以后呢,这个软件系统上也有个码,这三个码你得对应一样了。哎,那就说明这就是原装的这一套是吧,你要这三码要不合一的话呢,这个它就应该会更便宜一些是吧,就这样啊,哎,跟这个一样,三码合一呢,就这三码的一样OK。然后呢,还有这个叫负数,负数的话呢,这三码就不一致了,哎,那对应的话呢,这个原码反码补码他们三者是怎么回事儿啊,这个呢就得清楚。
33:08
哎,不相同啊,需要呢,这个咱们就做一个了解,那这个词汇呢,都降低了啊呃,三者之间的关系啊。啊,源码怎么就变成砝码了,砝码怎么变成补码,了解一下啊行,那这个了解完以后呢,我们还有一个事儿必须要关注的就是计算机的底层。哎,这底层啊,是以五码的方式。对,存储这个数据的。哎行,哎,存储数据的啊,这个时候呢,我们就提到了这个补码的这个重要意义了啊,所以呢,当我们遇到一个数,这个数的话呢,最高位如果是个一,那你就不要去问说这是原码反码还是补码了,它就是补码。啊OK行,那这个事儿呢,我们就说清楚了,这个收进之后呢,我们下边呢,就提到了一个,呃,进制之间的转化啊,尤其我们提到说这个二进制啊与十进制。
34:03
哎,之间的这种转换啊,这个转化的话呢,大家作为一个熟悉就行。哎,这个熟悉的就行啊,然后这里边我们提到十进制转二进制的这个提到叫除二取一的逆是吧,哎,相的这个操作就可以了啊行,然后呢,下边呢,我们就诶这几个叫了解啊二进制与八进制16进制。哎,肩的一个转换。诶,这呢也就可以了,行呃,这里边呢,提到的这个16进制,咱们后边呢,会在这个诶数据啊,一个对象在堆空间存储的时候呢,它的这个首地址值会用16进制来表示,到时候呢,你看这个地址的话呢,看到有A了,有F了啊,你到时候别惊讶就行,16进制里边就包含这样的符号啊,是用16进制来显示的,OK。行,这场就没啥了啊,这个就了解一下好,下边呢,就是具体的我们讲的这些运算符了,哎,这些运算符的话呢,其实这就一个个的,大家往前去推进就行。
35:02
啊,这个首先这呢,我们讲的叫算术运算符啊。哎,我把这个来打开一下。啊,这呢是对应的这个知识点啊,哎,这个呢就哎方便呢,大家你下来呢,去看咱们讲的这个代码,我就把它呢这个粘过来啊。啊,这呢是我们讲的一个知识点,然后下面呢,是对应的这个练习。哎,这是第一个啊。哎,这第一个练习,然后第二个。还是刚才说的那个意思,关于这个练习这块呢,大家啊,一定要自己呢去敲一敲,上面这个知识点呢,就是为了说明我们这样,呃,上面这个测试呢,就是为了说明我们相关的一些知识点,比如说这里边儿这个前加加后加加,你得能弄清楚,这个时候呢,我们写的这样的一些代码,做的这个测试啊,熟悉一下,然后相应的这里边写的练习呢,都是一些小的细节需要注意的问题啊,你也呢相应的看一看。
36:04
啊清楚啊,有的不清楚,你自己再跑一跑,运行运行啊,改一改试一试是吧,就可以啊。好,这呢是我们说的算术运算符,这个开发中呢,像这些符号呢,都比较常用的,大家呢,下来熟悉熟悉就行了啊,这是说的它,然后下边呢,我们提到这个叫复制运算符,这个我们叫这个set value了啊,写的这个。哎,就他。行,那赋值这一块的话呢,诶大家需要关注的就是这个符号,我们后边有讲过比较,你别跟那个两个等号呢弄混了,然后另外呢,就这一操作的话呢,诶在开发中有的时候我们就会去用,让你这个变量的本身加一个数减个数,乘一个数除个数啊,这个数本身就变了,那我们就用这些符号就行,不会改变它本身的这个数据类型啊,这就行了。好,这呢是我们说的这个比较,呃,这个复制运算符,下边呢,提到这个比较运算符。啊,接着比较,我们用的是这个compare啊在这嗯,在这啊。
37:05
相应的,我们把这个代码拿过来。哎,比较运算符行,这就它,哎,然后呢,我们课后呢,还有几个小的练习,哎,就来区分一下它和那个单独的一个的这个区别是吧,这个大家去熟悉一下就行了啊。好,然后下边这个呢,叫逻辑运算符。是比较的逻辑的logic在这儿这里。诶,首先呢,关于这个知识点。这个逻辑运算符呢,咱们在开发当中啊,用的其实是比较多的。啊,这个用的比较多啊,因为呢,它会涉及到说诶谁且谁啊谁祸谁啊是吧非呀这样的一些行为啊,我们在这个if else啊循环当中啊,诶都会出现这样的这种场景,那结论的话呢,就是这里边儿关于这俩我们要用它这俩里边呢,我们就常用它这两个呢,用的是最多的,这个呢,偶尔会用这个基本不用。
38:01
啊,这就行。行,那逻辑印刷符呢,对应的这个练习啊在这儿。练习。哎,这就可以了,好,这个呢,下来自己写一写就行,好后边呢,我们提到这个未运算符,这个明确说一下,先做一个了解。啊,这就行啊,这个位算数这块呢,大体上来说,其实分成两块啊,就是。呃,两类。嗯,这个为上bit。一类的话呢,就是我们说的这三个啊,另外一类呢,是提到这四个。啊,这三个的话呢,涉及到这个二进制的左移和右移的行为,这个呢涉及到呃,两个整数之间呢,做这种与或抑或啊取法的这个运算啊,这个呢,大家也是啊,稍微的了解一下就行,这个呢下来呢那就可以不看了啊。相应的,我们这儿有一个练习。
39:01
哎,那这个练习要不要看呢?这个练习的重点啊,你看啊这呢,我们讲的是如何交换两个变量的值,这个需求呢很重要,我们后边要讲数组啊,数组呢,就是我们这儿呢,有一个呃结构一个容器啊,这里边儿呢,放了很多的这个数据。这些数据的话呢,我们想给大家做一个排序,实现从小到大,那么排的过程当中肯定涉及到要交换两个变量的值了,那这个交换的话呢,用的就是我们这里边要讲的这样的这个知识点。OK啊,那所以说这个需求的话呢,我们是非常常用的,那这个非常常用的这个需求,你注意咱们用的方式的话呢,不是这里边提到的这个位运算符,而是就是我们第一种,所以这呢,虽然我把它放在了微运算符这块,但是这个需求是非常常用的啊,那相应的操作呢,其实也不难,就是咱们讲的第一种方式啊,这个要记住它啊,要熟悉。行这呢就可以了,然后最后呢,我们讲了一个叫条件运算符。啊,这个呢,对应的叫condition啊在这儿。
40:02
行,那条件运算符的话呢,其实也不是特别的困难。啊,你要说呢,这块的问题在哪儿呢?问题就在于大家平时开发中想不起来用。啊,因为呢,凡是能够用它的地方,我们都可以用if else。啊,那你稍微的留意一下哈,就是你写这个的时候,你发现它写的特别的简单是吧,这个结构很少,少到哪发现其实就像是一个赋值一样,那你就把它改成啊这个条件运算符就可以了。那你说没想到,没想到就没想到吧,那就用E也行是吧。诶就这么着啊好,那这块呢,这个运算符的引入啊,就是咱们作为应用者,咱们可能想不到,那你注意哈,咱们是用的,那比如我们要实现的功能啊,上面是咱咱们写的代码,咱们这个写代码过程当中,你会应用到Java,给我们提供现成的这些API。县城的这一篇呢,是不是也是很多程序员写的?对,就是人家所谓的Java的那些,呃,散公司的,现在叫奥公司那些核心的那个高级工程师他们写的啊,当然他们也写过一些挺烂的代码是吧?呃,当然整体来讲哈,那这个代码呢,随着JDK的不断的更新,这个代码呢,也在不断的去优化,那这个代码的质量是很高的,那么在他写这些代码的当中。
41:17
他就一定要注意这个事儿了。比如呢,他写了个E,这个明显是可以换成条件运算符的,它就会换。呃,咱们要写的话呢,咱们可能就没换。啊,为啥呢?这里边儿还有一个小细节,就是你写这个代码就你自己用。他写这个代码的话呢。可能有成千上万的程序员要用是吧,所以你写这块你就调了一次,慢就慢一点点,但是呢,诶他底层写的代码,他一定要特别注意这个效率,因为这个代码呢,我们是他的用户,我们要用。那它要性能低,那就会被成成百倍的上千倍的被放大,那一放大呢,可能这个性能就显出来差了。哎,这个注意,所以呢,当我们去看体能源码的时候呢,你会发现。写的真漂亮是吧?哎,甚至你说呢,我都看不懂。
42:01
啊哎,这个是正常啊,那我告诉大家一个小技巧啊,比如说你看这个源码的时候,你看不懂,诶你就找他之前的版本。啊,因为这个版本呢,他越写你越看不懂,因为越写越经典是吧,你往以前版本去推,你发现呢,推的比较早的,你发现他写的比你还烂是吧。有可能哈,只能说有可能,不是说真的比你大啊,OK,行。这个呢,就是我们说的这个,诶,关于条件运算符这块的事儿啊,最后的话呢,其实也提了一个点,当然我们就是一笔就带过了,这块也说一下啊,1.8.7,呃,运算符的优先级。哎,我这儿呢,都懒得把那个表粘过来了,因为呢,你也根本不用记啊,这里边儿呢,你需要呢,注意的是第一个。啊,如果想体现优先级比较高。哎,比较高是吧,哎使用你这个小括号就完了。啊,这第一个第二个的话呢,就是我们在写代码的时候呢,不要在一行执行语句当中啊,体现太多的运算符啊。
43:03
哎,编写编写啊,一行执行语句时。哎,不要出现。哎,太多的这个,呃,运算符这个时候呢,很容易就晕了,你自己就晕了啊。啊,那至于说笔试当中,那就是故意的恶心你的啊啊,这个你就了解一下就行了,OK,好,那么这儿呢,就是整个咱们复习的内容啊,整个捋一下,看看核心点还是变量运算符这块呢比较多,其实呢,基本上我们讲完之后呢,该熟悉的大家也熟悉了,欠缺的点是什么呢?还是大家呢得下来多去写写代码,多去练一练,多去暴露问题,然后呢,诶你就有手感了就行啊。好,那么下边的话呢,我们来看一下这个企业的真题。写正题第一个啊,高效的方式计算二乘八的值,这已经说过了是吧?这咱就列了啊,哎,就是说一下也行,就使用这个左移是吧。哎,这就可以了。好下一个它俩的一个区别简单是吧。
44:00
略了吧。哎,这个咱们已经讲过了哈,就是首先呢,他们有共同点。都是表示的且的关系是吧,哎,两边呢,都得是处的时候才行,那区别就在于说呢,这个符号左边如果是。哎,对false的时候呢,右边它还执行这个右边就不执行。对,咱们在上面笔记里边都有啊过了Java中的基本数据类型有哪些,String是不是。挺简单的是吧。哎,八种基本数据类型。哎,八种。基本数据类型啊,然后呢,这个就是具体的又略了啊,此类呢。不是是吧。S词钝呢是引用类型。哎,这个注意好。然后下一个啊,说Java中的基本数据型包括有哪些,诶跟上边儿这个是不是类似的。哎,这个有哪些,诶这个词钝的是吗?其实差不多是吧。对了啊。好,然后呢,下边说Java开发当中计算金额时使用什么数据类型?
45:03
计算金额的话呢,它肯定会涉及到小数点是吧。啊,这个我们可能会想到double,注意不是哈。哎,不能使用float或double啊,因为精度不高啊。哎,咱们应该使用后边要讲那个叫big。哎。哎,这个类呢,去替换啊,可以实现啊,任意精度的数据的运算啊。OK,行。啊,这呢,就我们说的这个事儿,关于这块呢,诶,我没有给大家去讲底层真的怎么去存的。这个呢,大家也没有必要去关注了哈,什么意思啊,你想我们讲float的时候说过,说这哥们儿呢,他占四个字节啊,然后呢,人家这个浪呢。实占八个字节是吧,然后呢,人家占的空间大,嗯,这个存的数据还比你少。呃,然后呢,你人家是整数,你这块还带小数都让你占了是吧?哎,所以这块呢,它的缺点呢,就是精度不高,它呢真正在存的时候呢,它一部分呢,是来表示这个相应的这个数值,哎,另外一部分呢,呃,其实相当于就用这个。
46:07
叫什么?呃,科学计数法来做运算的啊,它来表示就是十的多少次幂。哎,所以呢,整个呢,使得它呢,这个存储的范围呢,就比较大了,哎,但是的话呢,它表示真这个真正数值这块的话呢,它这个精度是比较高的啊。哎,这个细节呢,我们就不关注了。啊,大家也没有必要呢,下来去研究了,行,在下边说差呢,能不能存储一个中文汉字。那就相当于是我们这个叉一个C1,它是这个意思啊,这写个中国的中是吧,是可以的是吧。为什么?啊,对这个为什么问他感觉说诶,这有点莫名其妙是吧。嗯,对,他这个问为什么呢?其实他是想说这个事儿哈,就是可能诶在我们的意识当中啊,说你这个acr呢,比如我这写个小A啊这的是没啥问题哈,这一个字符了,这个小A的话呢,咱们也提到过,它表示的是97是吧?诶这个97的话呢,相当于我们这个叫X码里边诶提到的说诶给字符呢,给了一个数值了,呃,那么X码里边呢,确实没有包含这个中文哈。
47:12
但是我们现在呢,其实表示这个字符的时候呢,它有一个更大的一个字符集,叫做uncode的字符集。哎,那用一扣的字符集呢,基本上就把全世界中这些字符呢,就全都包含在内了。哎,那所以说呢,我们这块不光能包含汉字,就是基本上我们能看到的,包括数学符号啊都可以啊,哎,这呢,要用问为什么就说因为啊。哎,我们我们这个叉呢,呃,使用的是。哎,叫UN这个字符集。啊,那么我们说呢,包含了。啊,这个,呃,世界范围内的。啊,这个呃,所有的这种字符是吧,所以说呢,我们都可以表示啊,不光是这个UN库这个X码里边那个ABC了啊,下边一个说分析一下,下边这代码这个咱们其实都已经见过了哈。
48:03
不行是吧,那有什么错呢,这个右边呢,是in的类型是吧。对啊。这个它的右边。哎,是按int这个类型的。所以呢,是不行的啊,需要强转。行,下边这个呢,有什么错。对,没错。那就行啊。下边一个说in特I等于零,I复制为I加加。这个咱们是不是讲过了。这是某软的。嗯。这个它的反义词呢,叫巨硬是吧。啊。这个值I是零,运算完以后呢?这个结果是几啊?还是零是吧,哎,这个咱们已经讲过这个事儿了啊OK。行,然后下边说如何将两个变量的值互换啊,这个是很重要的一个操作。这个大家一定要掌握的。对啊,嗯,快速的写一个啊。
49:04
这个我写个死钝类型的。啊,这个一这呢,比如说写一个A啊ABC吧。SR。这个啊123吧,比如说啊行,然后呢,怎么着孙类型的一个tap s1S1S2。S。完事啊,就是上一行的后一个跟下一行的第一个一样。就搞定了啊。下面一个说布尔类型占几个字节,你看这个问题就比较高级是吧?哎,其实你会发现呢,这个体液面试题里边什么样的问题是好问题呢?就是这个题目,你一看呢,哟,这不挺简单的吗?但你细细想呢,发现有坑。那你像这个问题看着好像挺简单,但是发现呢,你好像真的不太熟是吧。这个问题的话呢,诶平时的话呢,你说这个里边都认识。但是呢,似乎呢,又没写过这张代码,这就有坑。巨硬的是吧?
50:01
啊。然后这个诶布尔类型占几个字节,这怎么说呀。哎,我把答案已经放这儿了啊对,编译的时候呢,我们不谈它占几个字节,就有俩值处Co。那么真正在运行的时候呢,你毕竟要把它是不是加载到内存里了。那加大内存中这呢是GVM来负责的,那我们就来看一看GVM的官方的规范,规范里边呢,他说了啊,这个布尔类型啊,诶我们就诶相当于用一个slot来存,这个slot呢,汉字呢,呃,翻译过来叫曹魏啊,这一个曹魏呢是占四个字节的。相当于呢,就是一个布尔类型呢,我们最终呢,是用四个字节去存的,这是在内存当中,那么如果你要是处呢,我在这多写一下啊。哎,那么在存储的时候呢,这个细节。就是你要是处呢,我就用零来去,哎,我错了啊,是一来去存,你要是false呢,我就用零来去存,因为毕竟这个slot里边它只有0101嘛。
51:01
啊一呢就是出啊false呢就是零。哎,这就可以了啊,哎,我再拓展了一下,像咱们说的bit呀,Short呀叉啊。啊,这些呢,都是低于四个字节的啊布尔呢,这个我们也没谈过啊,这个特float本身他们呢,在我们编译啊,编写的时候呢,都说占四个字节,就是这些呢,在真正内存中分配的时候呢,都是一个lo。啊,而这个double跟Z呢,本身他们就是八个四级了,所以他们呢,就是占两个slot。啊,那么这个slot的话呢,叫槽位,它是我们内存当中,呃,Java虚机分配数据的一个基本单位,也就是说你不能说分配半个slot啊。哎,那你像这个凡是低于四个字节呢,就都是一个slot了。这个大家了解一下就行啊,以后呢,这个Java的同学呢,会学这个GM这个课程大数据的同学呢,就不学了啊,诶Java同学在学的时候呢,到时候可以关注一下这个事儿就行,哎,到时候会说下面一个问题,咱们在前面讲这个float double的时候提到过啊,说它俩呢,这个结果呢,不是0.3结果呢是这个是吧。
52:07
哎,说为什么啊,你看这个问题就比较高级哈。啊,这个注意首先呢,不是咱们Java语言的问题哈,所有的编程语言都会有这样的问题啊,那么这个原因是哪呢?这里边就提到了一个标准叫IE啊,它呢发布的一个标准,这儿呢是叫电气与电子工程师协会。啊,这个也算是一个全球范围内的协会吧。或者你像美国的协会一般,美国呢,经常就是自己整了一个协会啊,一个比赛呢,都叫是全球性的是吧。啊,这个有一些大学的一些老师,呃,在自我介绍里边会说是IE的会员,那其实还是挺厉害的啊。OK,然后呢,这个协会里边呢,他发布这个标准里边就说明了这个事儿,这个事儿的话呢,就指明了我们这种小数该怎么去存,诶,当然呢,指明这个标准也只能说尽可能的啊去提升小数的这种精度,但是呢,它也有物理的这种极限啊,不能表示任意的一个十进制的这个小数。
53:02
啊,举个例子啊。举个例子,这样大家就明白了,比如说这个二进制的一个小数是它。啊,四位的0001,它呢,十进制呢是它。这个你就别问为什么了啊,这个细节大家就不看了,然后呢,呃,二进制的这个这个小数哈。0010,它的十进制呢,是这个。那么二进制的话呢,哎,我把这两个二进制加一起,不就是0011吗。那么对应的这个十进制呢,你把这俩加一起呢,就是这个。啊,就是把这俩数加一起就是它好了,那么如果从这个四位的这种二进制小数来看,那么大家是不是可以理解认为啊,这个和这个是连续的。我说的是从四维的角度来看。这一零你再加上一不就变成一了吗?是吧?好,它俩是连续的,但是你看这个十进制的这个和这个它俩连续吗。不连续相当于呢,我们就没有办法呢,去表示这个范围之间的这种。
54:01
这个二进之间小数的形式呢,表示这个之间数就没有办法去表示了。中间就断开了,所以这个精度呢就不高了。啊,通过这样一个小例子呢,大家去体会一下就行啊,啊那遇到这种情况怎么办呢?呃,这个呢,我们说呢,要么你就四舍五入,你就接受这样的现实。是吧,要么的话呢,这叫同乘或同除,比如说这个数呢,特别小了,精度不高了,你把它乘,乘多少倍,把它变成是一个。整数是吧?啊,那这时候整数之间做运算呢,是呃,精度很高的。或者的话呢,像我们这块呢,使使用的这个叫big decim是吧,这个big decim其实底层呢,它又涉及到了使用这种字符串的这种结构啊,去存储它。啊,这个精度呢就更高了。OK行,诶,我们这一章整个的这个知识点啊,就这些。
我来说两句