00:00
好各位,我们现在呢,来给大家介绍一下字符类型使用的细节。关于字符类型使用细节呢,我给各位同学整理了有六点需要同学们注意的,当然有些呢,其实前面已经说过了,只是在系统的把它整理一下,让大家做到心中有数。注意啊,字符常量是用单引号括起来的,什么叫常量?比如说这个A就是字符常量。这个刚才讲过了啊,啊讲过了,你看如果我们用的是这种字母的,咱们用BAT就存放了,这个就是常量。这个呢,我们叫做字面量,也叫字符常量,能理解吧?注意这个概念啊,你别学了半天啊,老师我基本概念搞不懂,这就说不过去了。第二个呢,你看这里有个中国的中是不是汉字呢,汉字呢,大家刚才也体验到,如果用BY字它是存不进去的,因为中它对应的这个编码很大,对吧,它超出了255,那有些同学就说了,说老师你能告诉我这个钟对应多大吗?可以,我们在网上可以去搜一下u utf8杠八编码,你看我这搜了一个啊,你看我这搜的UT,查看字符。
01:10
编码UTF8,因为刚才我讲过了,在go浪中它的字符编码都是用UTF杠八来记录这个unode码的,那么点进去。点进去过后我们来输一个钟。中国的中这样你能查出来一点。同学们可以看到啊,此时此刻你会看到它的这个uncode编码实进制就是200。幺三。啊,也就是说它是按20013来对不。对应这个码子的中,就对应这个码子,因为我刚才讲了,就是我们这个工浪呢,它是按U扣的编码来进行这个处理的啊,那就说utf杠八是UN code码的一种实现。能理解吗?啊呃,这个呢,其实大家伙知道就行了,就是unq的编码的一度具体实现就是UTF8啊,我们勾浪用的就是utf杠八对字符进行记录的啊,所以说呃,刚才呢,同学们讲到这儿就知道这个刚才老师说的这个概念了。第二个呢,Go中允许使用转义符将后面的字符转成特殊字符,比如说斜杠N就代表一个换行。
02:27
这一点是不是我们在前面就已然给同学们介绍过了,这里就不再多说啊,包括其他还有什么转移字符,那么老师在前面都讲过,比如说像这个斜杠N斜杠R斜杠T斜杠点斜杠两个双引号,双引号这种啊,这块呢就不再多说,还有一个重点,这块大家要有一个印象,就是go语言的字符呢,是使用UTF杠八的编码。听到这儿,同学们可能有点糊涂了,说,老师。你刚才讲了一个阿斯科码,阿斯柯玛的这么这么一一个编码,你现在呢,又给我讲了一个UTF杠八编码。
03:09
那这两者有什么关系吗?有什么关系吗?注意听是这样子的啊,同学们。这个计算机最早的时候呢,大家都知道。这个计算机最早的时候呢,它其实啊是美国人在用的。那美国人用的时候呢,最听我这句话啊,最早是他是美国人用,美国人他用的这种,呃,这种他的英文单词也好,他的一些这个呃,表达的一些句子也好,其实呢,他只需要这么几种字符就够了。也就是说在最初的时候,美国人他们用了这个这个阿斯克玛就足足的够了,听到这意思了吧。但是呢,随着计算机的普及,不但美国人要用中国人、日本人,还有像朝鲜人、韩国人,他们也要用这种计算机了,这时候就出现了一个问题,什么问题呢?就是你这个阿斯克玛表示的这些字符不足以。
04:06
不足以去表示其他国家的文字,你比如说中国,中国的汉字很多,你光在127个或者这么一点字符不够我用的,怎么办呢?诶我们的这个计算机专家呢,他就想了一个办法,他说干脆我们就把这个阿斯克玛啊表进行一个升级。啊,但是升级过程中,它有整个好几个编码,比如说还有GB2312,还有还有这个GBK编码,最后呢,到了现在呢,就是说升级到什么地方呢,就是整个现在计算机编程里面呢,用的最多的就是UTF杠八编码,你可以这样认为,同学们你可以这样认为,你可以怎么认为呢?你可以认为。我们的unicode码。Unicode啊,包含了,呃,不,我们的这个UTF杠八编码呢,包含了这个阿码。
05:00
就把它包起来了。把它扩大了,好,我把这个做一个。透明的处理啊。就相当于说你有阿斯柯玛表,同时呢,我有utf杠八。UTF杠八这个编码,那么我的UTF杠八编码呢?我包含了你的阿克码,你可以这样简单认为。说说你会看到。你这个阿斯柯玛里面这个A是97。我们来看看在它的unicode码里面,A是不是也是97呢?来,我输入一个小A。我查看编码你会发现,诶,它仍然是97。这说明什么?这说明我们UUTF杠八编码是兼容阿斯克码的,也就说我并没有把你的那个编码给你破坏,我兼容你能理解意思吧,就相当于把它扩大了,那扩大的好处是什么呢?扩大好处就是说将来你这个你这个阿斯克码里面只能保存的是那些,就是你你的127个字符,那么到了我这个阿斯克玛里表里面,我就扩了,比如说我可以保持中。
06:09
我考试国。对吧,我还保存你我还可以保存好,那么这些就是我们的字符,那这些字符呢,它也对应一个码值,它的码值又是什么呢?比如说中。比如说中。啊,来看一下啊中。你看中就是这个。对吧,我们可以认为它就是这个马,是用力扣里面的十进制的马,国是什么呢?国就是这个马。看到没有,所以说现在大家是不是多少理解一点这个UTF杠八和阿斯克玛的这个来龙去脉了,就说最早的时候只有阿斯克玛,但是随着大家使用发现阿斯克玛能够表示的字符太少了。于是乎呢,大家就想办法进对他进行这个进行这个进行这个升级,或者叫增增加,那么这个时候呢,就有一个叫UTF杠八的编码出现了,但是这个从阿斯康码到这个UTF杠八这个编码还经历过很多历程啊,我们就不讲了,现在呢,通用的这个UTF方UTF杠八是世界比较通用的,是目前啊,目前使用的最多的。
07:23
这个是使用最多的使用啊使用最多。啊,基本上我们这个语言里面都有这个UTF8这种编码来来处理的,那现在呢,呃,现在呢,大家看到这里面就是构元字符是用UTF杠八这个编码来做的,那么它还有一个特点什么呢?在utf杠八里面,它的这个字母就是英文字母。英文字母。字母是一个字节。他是用一个字节。好,那么它的汉字呢,各位同学,它的汉字呢,是三个字节啊汉字。
08:07
汉字是三个字节来存储的。好,这个是一个基本常识问题,大家啊,要注意注意一下啊,注意一下。好,这是我说的第三一个需要同学们了解的。那么现在呢?在第四一个在构中,字符的本质是一个整数。直接输出时是该字符的对应的UTF杠八编码的码值,这个呢大家也来体验一下,刚才其实我们已经体验过了,对吧,你看我输这个北京的北,它就是21217,是不是也体验过了?第五一个我们也可以直接给某一个变量赋一个数值,然后呢,按格式化输出百分号C的时候,它也可以输出该数字对应的UT,就UNO的字符。啊,Udq的字符就是我们所说的UTF杠八这个字符,那打个比方,同学们,大家看到刚才呢,老师不是这有一个这个吗?国好,我把这个复制一下,给大家体验一下啊,来看一个案例。
09:07
来看一个案例,比方说我给一个整数。C3C4INT,我给他了一个这个值。我给他一个这个值,其实他都知道这个22269,其实它对应的这个这个编码呢,它对应的编码是国。对吧,那也就是说我如果把这个按照字符输出,它就应该说的是国这个字。那是不是这样子呢,我们试一下。好,给大家演示一下格式化输出啊,就是C4等于百分号C,然后把C4写进去。好,同学们,为了好看,我把这个换一下横,同学们看效果。看一下C4是不是输出的国,我们我们通过这个这个案例呢,就可以把它认识的更清楚一点走。
10:00
我们可以看到各位朋友,C4输出的国完全没问题。那有些同说是,假如说我说的是阿斯克玛的一个值呢,也一样的,比方说我们找一个阿斯克玛,阿斯克玛里面有一个这个。我们找一个,这个值X。这个X对应的数,这个那个数字呢,是127 120 120啊,120,这个是16进制,大家不要去管它啊,这个不要去管它,好,这个是。这个是这个是120,我们输一个120进去。同学们可以看到我输一个120。如果说大家知道的话,这应该输出一个什么呀,就输出。X。他们之间对应关系大家搞通了啊。那你看我在输出这个。你会看到CC4输出是X,明白这意思了吧?诶,其实就是个对应关系,不要把它搞得搞得太太太,呃,好像搞得很复杂的样子啊,22269。
11:00
好,这是我们讲的细节的,第五一点啊,待会我们再做笔记,第六一点,字符类型可以进行运算的,因为它本质就是一个整数,因此它可以进行这个加法的运算。我给大家举个例子,比方说注意听这个,这也是个细节啊,有时候会利用这个特性来完成一些业务逻辑,你比方说同学们看。我把这个呢,先把这个案例放到笔里面去,刚才讲的这个案例对不对。好,放到这儿笔记中。然后呢,我们又讲下一个需要同学们注意的一个细节,就是字符类型可以进行运算,相当于一个整数。好,那运算的时候呢,它是按这个它对应的那个码值来运算的,运算时。运算时是按是按照按照码值运算的。运算,那我举个例子,比如说这有一个整数表示NUMBER1。
12:04
等于二。10加上一个A。大学的就输出多少。因为我刚才讲了嘛,它一旦当做这个加法来运算,就当于说把它当成当成一个把这个A的码值得到,然后再运算,大家都知道十加多少呢,我们A的码值,大家注意观察,A对应的码值其实是。97。也就是说它相当于是加了一个97,显然这个结果就应该是什么107能理解好输出一下ft.print。输出一把啊,注意看我把这个呢给同学们输出来,干脆我就LN一下啊。这上面我来一个换行,看到没有好,直接输出N等于多少,N1等于。N。
13:00
好,这个时候我是按照数字输出的,没有格式化,说它应该输出107。走。我们可以看到这边输出的是107,没有任何问题,所以说有些时候在有些程序员啊,他专门利用这个字符可以运算的特性来完成一些操作,比如说我们想从A得到我们的所有英文字母,我就可以逐一的加一加加加加加,不停的加,然后按字符输出一下,就把它全部输出来了。所以有时候会运用运用这种特性来完成一些业务逻辑能理解吧。好,同学们,他这个细他的要注意的这六点呢,我们把它放到笔记里面去,把案例也顺带的整理一下啊。好,同学们,这是我们字符类型的使用细节。字符类型使用啊。使用细节。好的,给同学们整理一下。房子了。啊,放。
14:00
好哪几个细节呢?整理一下我们笔记第一个。好,这是第二个。对吧,这是我们的第三个。就构元的字符用的是UTF杠八编码,兼容阿斯克码。好。第四一个。好,第四一个,第五一个。好,第六一个。好,哪个地方需要给他把案例整过来呢?我们看哪几个地方是有案例的啊,这个地方是没有案例的,这地方可以查啊,可查表,如果大家要查我我写一句话,如果希望啊。如果想查询。想查询查询这个字符对应的阿斯码表,呃,UTF杠八编码。码子。马哲。那么你们可以到这个网站去查。
15:02
这就可以把所有的查出来啊,我把这个地址给同学们放一下,有些同学想查一查也可以去。想自己玩儿一玩儿啊。好的,第第四一个。第四一个就是字符本质是一个整数,直接输出是对应的UTF杠八的码值,这个呢前面已经说过了。第五一个。字符啊,第五一个案例可以直接给某个变量附一个数字,然后格式化输出,就会输出该数字对应的unicode字符,这个呢我们是有案例的。对吧。诶,把这个案例呢,给同学们放到笔记中。注意啊,现在我们在打基础,所以说呢,等到后面把这个基础打好了过后,诶,我们再去写一些项目,大家就觉得非常的轻松而又愉快了,你现在没有把基础打好,那后面呢,就跟不上思路,对不对?好,第六一个,把第六一个案例你给同学们放一下,诶,我把这个稍微整理一下啊。
16:01
第六一个案例,第六一个案例呢,是可以运算的,就是字符类型,它可以进行运算。它可以运算啊,当作加法,当然既然可以做加法,也当然可以做减法了。对不对,这个呢,我就没有一个一个的举例了,大家也要适当的举一反三啊,你别说,哎,老师讲过的我知道老师没有讲过的呢,那我就完全。不知道,这也说不过去,看这里。对吧,这相当于。这种。最后这张输出的是107。是107吧。好,把它放到笔记里面去。好,这个呢,就是我们字符使用的一个细节的说明,细节说明那后面呢,还有一个幻灯片也是讲字符的,我们一并把它说完了。那关于字符类型的本质讨论呢?老师整理了三点,其实你学到现在字符就单个的字符存到计算机中,其实它的本质存的是一个整数。
17:01
所以说他在读取的时候呢,它的流程是这样子的啊,首先呢,存储的时候,它先把这个字符。转成这个。码值,它找到这个对应的码值。啊,对应的码值。然后找到码子过后呢,他把转成二进制。二进制过后呢,再存储。啊,在存储。好,反过来读去的时候是怎么样读呢?他先读的是这个二进制的,就是他如果按字符输出的啊二进制。二进制呢,它把它找到对应的码值。找到码子过后呢,他把转成字符。对应的字符。对吧,因为它最后还是按字符输出嘛,然后呢,这个地方就读取。诶,它是这么一个啊,或者读取就行了。这是这个一个流程,那么第二点要注意字符和码子的对应关系,是通过字符编码表来决定的,事先规定好的,你不能说你去改它,比如说刚才同学们看到这个地方,比如说中国的中,他事先就定的是20013,你就不能改了。
18:12
就他定好了以后,就20013,这是字符编码的时候,它就规定好的,第三一点也是一个很重要的点啊,购物语言的编码都统一用了UTF杠八编码和其他的,对其他的语言来说呢,它非常的方便。和其他编程语言比较啊,这样说。不要这句话了啊。不要这句话。就是go语言的编码统一成了UTF杠八,非常方便,很统一,再也没有啊这个在啊,再也没有编码乱码的问题了。就是如果有同学用过像这种比如说PHP,或者有同学用过这个Java的JSP,你们会发现这个中文乱码特别的痛苦,因为它的编码呢,并不是特别统一的,有些地方用的是GBK,有地方用的是GB2312,有些地方用的是UT8。
19:08
好,那这样子呢,到了go语言呢,它的所有的编码都是utf杠八,你必强制你用UT杠八,这样子的话,我们这个在编程过程中就不会有乱码的问题了,不会出现这个中文乱码,这是一个好消息,对吧,如果说同学们以后在做这个go开发的时候,你几乎遇不到乱码问题。中文乱码几乎遇不到,所以说这是一个好消息,那么我们也能够体验到构语言它的这种简洁性啊,简洁性好,同学们关于字符的本质讨论呢,我就把它整理到我们的笔记里面去了,好便于以后同学们复习。好,本质讨论老师呢,列出一下啊。第一点。对吧,好。我把这个呢。往后面挪一下。好,第二点。
20:00
对吧。好整理到这,同样把这个呢,也把它放一下。好的,把这块稍微的往后面挪一下,诶,它这个一挪它就跑掉了,对吧。跑掉了。跑掉就跑掉吧,我们不去管它了,往后面来几个空格。好,这样排版看起来比较舒服一点。好了,关于字符类型的本质讨论,老师就给大家介绍,这里包括我们字符的使用细节呢,我也给大家做了一个详细的说明,希望同学们在使用在编程过程中要注意到这些问题,认识到字符编字符类型的啊,就是在使用单个字符的时候需要我们注意哪些问题。这个部分我们就先介绍到这里。
我来说两句