粉丝9.6万获赞46.9万

组合音标一共十一个,嗯,试吃之日戳子桌子,大家拿出笔跟我一起画图啊,桌子腿画上。 好的,然后呢,我们来画桌子的脸啊,长了一个阴沟鼻,所以这就是是就是。嗯,这这个字母组合,它一般来讲会念是是 眼睛,这样啊,另一个呢,我们写一个六,然后这样好,哎, t h 组合,这读眼睛的这两个音,一个是,一个是滋行,就是这样,你的上下牙咬住舌尖,流从舌头的两边穿过,发一个滋的音,但要咬舌尖来发,所以是 好,这一个音怎么发出来的呢?你还是上下牙咬住舌尖,然后呢声带震动,发一个布店或者做鬼脸的大舌头的日的感觉啊,所以是红色的嘴巴,写个 t 就 可以了,试吃,你把 t 和 放在一起,它就会变成这个组合呢,这样子写好的,呃,这个呢是鼻音, 紧接着呢,我们来画他的耳朵,也可以理解成他的另一只桌子腿,耳朵上面呢,他挂了一个耳环啊,这个耳环呢,长这个样子好,所以这一个音标怎么写呢?就是印刷体和手写啊,长得有点不一样。好的 好,那这个音标怎么读呢?不是试吃之啊,这个音呢,读之之,学字母 j 的 时候有遇到过,对吗?大家都说因为吃 aj 好, 然后你把音去掉,所以他剩的音应该是 j, 这个音呢,在音标里面要这样子写 啊,这就是这个音,然后还有哪个组合会发这个音呢?字母 g 是 不是之一 g 呀?好的,然后你把它的韵母去掉呢,剩一个 g, 所以 说说明这个 g 在 单词里也有可能发 g 音, 就是这一块。好,那这个单词呢,末尾的 g 不 发音,然后剩一个,这个 g 紧接着耳朵要有几个呀,是不是有两个啊,所以为了好看我反着画这个。单独自己也是一个音标,会怎么念呢?其实他就念类似日,对吗?所以他就念类似日的音啊。日 好,那这个音标你在哪里能看到呢?啊,这个组合大家很熟悉对吧,这后面要加一个 n 的 音啊,或者呢,他就是日,然后杰克学的,学的秧元音,呃,所以是他长头发劈个叉。好的,我们读到哪了?嗯,试吃之日是不读到戳了好看,他这是不是, 哎,我们连个线。好的,哎,也就是说 t 和 r 要组在一起啊, t r 这个组合他的音标呢,就是这样子写好,那你怎么发呢?你就可以发到戳音啊, ai 呢,读 a 的 名字 a 好, 这个呢读 n, 这个呢读戳,所以是戳 a n 锥还是要画他的头发啊?卷毛, 我们也是要把它这样子连在一起啊,所以就是 t s 组合 t s 它的音标怎么写呢?就这样子写 rest, 哎,休息好,那我们有学过单三啊,所以说我休息,哎, rest 好, 那他休息呢,那这里是不是要加上一个 s? 好 的,就是 he rest。 特斯吗?不是的啊,所以这个特斯在一起呢,我们读它呲好,还有拼音里的呲的音啊,音标呢,就这样子写好,它怎么读呢?读呲,哎, 所以呢,这里是,哎,读到了,哎。戳词的词音是不是有这个耳环啊?好,我们把红的呢都可以组在一起啊。啊,这一个耳环呢,我们来 再连到这里来啊,所以呢,就是 d r 加在一起也是一个组合,你在单词里看到的也是这样的 d r, 然后呢,他的音标呢?就这样子画,然后不桌子吗?所以是桌音啊,所以举个例子,比如说桌啊, job, job 什么意思呢?啊?动词落下,然后呢,他还会有一撮毛,嗯,还有一根毛啊,长成这个样子。然后呢,就是还是啊的和他组在一起,他会这样子写,他 就念兹的结尾。好,那么我说两只手是不要变复数。好的,那就是这种组合的时候,他会发这个音。好,那我们不读他汉德斯,汉德斯啊,我们读他卡兹。哎,所以说我们写一秒克啊卡,然后一个儿化音,然后呢? 这样,好,那这个呢?我们整个就读它声带振动的滋音。哎,好,那我们这个的其实是读不出来的。好,故事讲了什么呢?嗯,试吃之日戳此桌子,现在呢,这里有一个神仙桌子。那你试吃之日的时候啊,你就戳哪里呀? 你就戳这两个音。好,你发一个嘶的音,你再发一个嘶的音,你戳他桌子上呢,就会有好吃的东西给你试吃了。我们用这个图和这个故事把整个组合的音标十一个就都记住了。好,那到此为止呢,整个音标就全部都讲完了,我们回忆一下整个音标的写法。

一条视频带你搞定英语四十八个音标,一定要点赞、收藏、转发给孩子学!今天教大家一个真正能做到看词能读、听见能写的真正英语背单词的方法, 大家一想,那肯定是自然拼读了是吧?老师不都这样讲的吗?来,各位,首先记住,自然拼读是不可能让你做到真正的背单词的,自然拼读本身有太多不合理的地方,你如果按照这个方法的话,不敢说百分之百, 你至少一大半的单词拼出来是错的。举例来说,大家最熟悉的单词,你根据自然拼读的话怎么读?你不要说老师,这词我学过,我知道念成 banana, 但如果你没学过呢?这三个字母 a 分 别发什么音?你如何确定这是根本不可能的。我们再写一个词,请问你按照自然拼读,这个应该怎么拼?你会发现这个 ri 好 拼是吧?自然拼读里不是学了 这种结构吗?这种结构应该读成 i, 你 是不是念成 recite? 实际上不对啊,这个词念成 recipe, 所以 你会发现自然拼读学完之后,你读出来的全是错的。那么真正能够让我们保证大家百分之百能拼对能学好的一个东西,注意了,叫音标,这才是真正百分之百准确的东西,我们学英语就要学对的嘛, 那么音标可能大家也听过,老师,我经常听啊,国际音标四十八,元音二十辅二八,是不是这样说的?首先这里就有一个逻辑上的错误来注意,音标 有上百万个,英语有多少单词就会有多少音标。什么叫音标?就是你把一个单词整体的发音拼出来的那个完整的东西才叫音标。按举例来说,比如说你看一个名称叫 eric, 你 把它拼出来 这个完整的东西叫音标,而里面你说的那所谓四十八个是这一个一个单独的,这叫什么?这叫因素啊,因素是构成音标的一个小单位吗?所以首先概念要搞清楚,你看我们还没开始讲呢,是不是发现我们平常学的有两个常识性的错误了? 那这个因素其实大家也听过呀,你不是不知道的,因为我们知道音标要分成元音因素和辅音因素,类似于我们汉语拼音说的声母和韵母, 声母和韵母大家只要掌握了应该怎么读的话,你是不是就能把汉语拼音拼出来了?哎,比如说举例子啊,老师姓张,你学过一个东西叫知,你学过东西一个东西叫昂,你把这两个拼一块, 你自然知道之肮脏。音标跟这个逻辑是完全一样的,就是把不同的因素拼出来嘛,那这一共四十八个因素,你只要把它简单的学会不就好了吗?等我们一节课就可以把它搞定啊。首先我们看一看元音因素,元音啊,英语当中是一个比较核心的主管发音的东西, 通常他会成组出现,比如说啊,我写一组,大家感受一下,你看这个因素的写法啊, 啊,跟你拼成了音标,首先它有共同点,这两个斜杠,我们看到这些符号之后,应该怎么去读它呢?注意在学习这个音标因素的读法的时候,主要要注重唇齿舌的位置,你把这些口腔器官摆正位置之后,这些音自然而然就发准了。比如说第一个音, 我们在发音的时候,舌尖抵着下齿音,舌尖抵着下齿音之后,把两个嘴角尽量的往两边拉,你把你的嘴尽量拉平,这个发音发出来是什么样子? e 一,注意啊,你听老师这个发音是不是跟别人不太一样?老师,我们原来学音标的时候好像怎么都是平着发音的,老师教我一 一,你有没有感觉到平着发音有问题啊?首先,英语中有平调吗?我们汉语四个声调对吧?啊啊啊啊,英语中好像常用的就是声调和降调吧,通常疑问的时候才会声调,那你为什么要用平调去读它呢? 所以你在学习这个这个国际音标的时候,一定是用降调去读它。而且不光从逻辑上来讲用降调是合理的,更重要的是 你感受一下你平调发出来的咦咦咦,这气息是不平稳的,不好读,你尝试用降调来跟着一起读一下。啊咦咦,声音既平稳,比你原来好发多了,而且这个腔调到位了吧?啊,你只有这个腔调到位了,你后来在进行英语的这个口语交流的时候发音才准确嘛。好,第二个, 老师说了,这原因是成组出现的,既然是一组的,他,他应该也读成一,对不对?不对啊,我们只是习惯性的把它写成成组的出现,方便记忆,但实际上他们的发音是有差别的。我们刚才讲到上面这个嘴角往两边拉, 但你这个就不用这个使劲拉了啊,你不用把它扯的很平了,口型的开合度会稍微的比它大一点,然后发出来的音也不是一的音,它念成一一一,有没有感觉到这是短促有力的,哎,刚才我好像脱音了啊。一一 好,这个差别差在哪呢?就差在这两点上,这两点我们可以叫长音符号啊,也可以这个认为,它是标,用来标注重读的,就读的会比下边那个重,那下边不带这两点的呢?它的读法就是短促有力,急促的发出来,马上收住,就不能脱音了,这一点跟我们汉语有极大的差 别。你看汉语,我们小时候班级里面啊,老师说齐读课文,大家开始读了,我是中国人, 大家有没有发现,一旦齐读的时候,哎,我们就就会把这个音读的很长,本质上是为了追求整齐性嘛。但如果你让这一个人单独站起来读,老师,我是中国人,就很短,对吧?你读的短也对,你读的长也对,但注意,英语不是这样啊, 英语这种不带两点叫短元音,短元音它就要短促有力。如果你把这个音脱音了,本来应该念成一, 你把它念成一,那就错了啊,那这个发音就不地道了。所以我们讲一个教学方法啊,英语课上千万不要齐读课文。这也是我们经常在这个实际教学当中发现这个我们课内老师经常犯了一个错误,一旦齐读课文,所有发音全都错乱掉了。这是第一组啊,那么第二组 一看这个形状,上面这个比下面这个胖一倍,是吧?差别在哪呢?差别在他俩的发音,也是口型大小的问题,上面这个怎么发?那怎么去测量他开口的尺度呢? 两个手指啊,把手拿出来啊,学音标要带手啊,不要把手拉在家里,两个手指平着放,给他叠在一块,放在两尺之间,不能这样竖着啊,这样竖着并排的话太大了太厚了,你放到两尺之间你的嘴就张的非常费劲了,我们说英语一定是不要太费劲的啊,平着放放到两尺之间 啊啊啊,那有的老师讲三指,有的老师你试试三指怎么发这个音啊啊?再发两次吐出来了。所以你看他一定要合理,他不可能说一个音发的非常的费劲,那么下面这个比他就瘦一倍啊,所以一个手指头平着放。 哎哎,那你看这个音都没带这两点啊,就你就不要脱音了。这两组发音的时候有一个特点,大家其实能够感受到啊。一哎 e 好 像发音位置在舌头的前部,大家自己感受一下这个更前一点就在舌尖上的感觉。 e e e 产生音的这个位置好像感觉在舌尖了吧,这个稍微靠后一点,但整体来讲也是在舌头的前部,所以这两组叫前元音, 就字面意思啊,发音位置靠前,那么有钱呢,他就有中,所以来看一下第二组元音。这俩你看写法不太一样啊,长得像三一样的,后面带两点的,他的发音是, 呃呃,照样是舌尖抵着下齿音发呃的音啊,然后有这两点你可以脱音,可以读的稍微重一些,那反过来没有这两点呢,短促有力。呃呃呃。好,这个大家感受一下。发音在哪呃 呃。你是不是感觉到舌头中间好像有一个往上稍微顶起能够触到上颚的那个位置呃 哎,所以他就叫中元音,发音位置好再往下又来一组这组音呢,首先这个长得跟这个汉语拼音的啊一样他的发音也很像,但是要注意虽然很像啊你不能按照汉语拼音来发发成啊就错了, 有前有中那么它一定叫做后元音,所以这个音你发音尽量把位置往后压发成什么样子啊啊有没有感觉到发音实际上是在舌头的舌根后部这个位置啊啊我们汉语拼音念成啊啊啊你明显感觉到靠前 这个声音是不饱满的,这就是差别。这个呢跟他有点类似那我们念成啊啊啊这个音实际上在日常生活中的发音跟他是非常像的 啊。我们在发这个音的时候你会感觉到有点像啊音有点像呃音介于两者中间啊 啊这就对了,千万不要把它念成啊你要真的顺着这个念成啊啊那就错了,那我们会会会会把它念成什么比如说公交车 bus bus 不 就错了吗?你听这个一听就知道哎这这有点这个中式发音的感觉对吧? bus b s 对, 它就是这个介于啊和呃之间的一个音啊还是一组后元音啊。这个音你看这个口型就知道了,它是把嘴收圆收圆之后那念成哦哦是不是发音也在后边哦 这个短促有力哦哦哦,注意写法啊,写法是不一样的对吧。又来一组这个类似于汉语拼音的呜但是同样汉语拼音的呜发音是靠前的,而我们这里应该靠后呜呜呜。第二个短促有力呜呜。 哦对,千万不要按照汉语拼音来发,否则的话你会出现一个什么情况?比如说大家这个词怎么读?我们要按照汉语拼音,乌的音, good, 让大家都念 good, 不是, 是这个音物 good, good, 你 看你这个发音是不是面貌一下就上去了?这叫后元音 加一块,一共是六组十二个。这十二个元音,你看每一个元音因素里面都是一些单独的东西,对不对?这十二个统称为叫单元音, 那有单就有双了呗。我们还有把这些单元音组合起来的时候,就会组合成双元音,比如说我们用到这个 e 这个音,就可以组合成三个双元音,分别是这样的, 这样的,还有这样的双元音,实际上是不用教的。你看我们虽然说哎,我们要学四十八个因素,其实有很多是不学就会了。你说我们单元音会了之后,这怎么读?这个音刚才学过,念成一个手指头,哎哎,这个音刚才也学过,念成一 一。那你把两个音直接划过来呢?由第一个音划到那个音,哎一哎一哎一哎 a a, a, 有 点像什么?有点像我们在甜美的应答妈妈呼唤里的声音,孩子,刷厕所去吧, a, 马上就好了。 a, 这就是他的发音。第二个说这个没见过呀,这个其实就是我们刚才的这个字母。我们刚才学过这样一个音嘛,叫做阿音对不对?那你从阿音过渡到 a 音合在一块,就是啊一啊一啊一 i i i i, 这个是刚才的 a 音啊,这个是 a 音啊,过渡过来哦一哦一哦一哦一,搞定了 啊。实际上这些就相当于虽然是我们可能新接触的双元音,但全是已经会的。又来一组, 我们可以用刚才学到的呃音再拼出三个,分别是这几个,第一个叫做一,第二个叫做呃一呃一呃耳耳,第二个叫做呃呃呃呃 呃。你会发现很多老师在读的时候啊,会把它直接读成 ear ear, 我们不建议大家在学音标的时候直接把这个儿化音读出来。 ear ear 这样读就行了,因为它真正在单词当中不一定能够念成 ear。 我 们一般美式英语当中,如果你看到字母 r 的 时候,你才会有这种这个卷舌的发音,比如说你看到字母 r 啊,这个 字母组合发的就是这个音,好,中间有一个啊,你确实可以把它读成 ear, 它念成 here, 对 吧?但是同理啊,如果是这个单词呢,它后面的 e a 它也是发 ear 这个音,但它没有字母啊呀,你就不能够读成 idea, 那 就错了, 要念成 idea, 美式英语当中也是念 idea, 因为它没有这个是不能够卷舌头,这个音在美式英语当中念成呃呃呃,你没有它,你就不能发对应的音了啊。所以我们建议大家在学音标的时候不要直接把它读成 ear air, 这是不好的啊,还是按照这个正常的念法来念。 那第三个,这个是呜,这个是呃,合在一块,呜呜。还有一组,我们用这个可以组成两个音,一个叫做,还是你把它拆分开来念嘛?这个是呃,这个是呜呃呜呃呜哦哦 啊呜啊呜嗷嗷。所有的这些加一块是不是一共元音因素 二十个?讲完了,刚才是十二个,这是八个,这八个叫双元音啊,所以整个元音就是由十二个单元音和八个双元音构成,那么他们在整个英语当中主要负责的是发音,就我们学发音的核心其实就是把元音因素学会,因为辅音因素虽然二十八个,但是那要比这个元音因素啊 简单太多了。来我们接下来看一看辅音啊,整个的二十个元音,我们发音的时候舌尖基本上是在下齿音附近的,来回变动不大,但是辅音差别就大了啊,也是成组出现。首先我们看一下第一组,这个一看就熟悉,这不跟我汉语拼音一样吗?这个念成波, 这个念成坡,这个念成波,对吧?但是注意这个汉语拼音这样的念法,其实都是在发音的过程当中加了一个呃音,你凭什么念成波?波是怎么念的吧?呃吧, 汉语拼音的发音里面都会带有一个呃的音,但是你会看到英语里面他这个就是一个单独的这个这个音啊,所以他不念成坡,他念成 啪啪,你说老师我听不见啊,你这念的是什么东西?听不见就对了,因为它叫做清辅音。清辅音不是说发音很清啊,是指的我们这个喉咙,这里是清澈的,没有震动的,所以你发出来时候是只有气流没有声音,怎么感受这个气流呢?你可以拿一个手放在口腔的前面啊,嘴巴前面,你在发音的时候 啪啪啪,你能够明显感觉到有一股气流冲击到手掌心,这股暖流冲击到手掌心,这是气流冲击清辅音的一个核心特点,同时用这个手指放在声带这个位置啪 啪,你会感觉到没有震动的,不会感觉到有震动这个概念,反过来对应的,他这个音叫做啪啪啪,这个音你在念的时候就明显感觉到这里有震动了,啪 哒哒,你可以两个对比一下,一发就知道了,对吧?那么有震动呢?我们就把它叫做浊辅音,有一种浑浊的感觉了,那同理,浊辅音这里一震动之后,他就不会有强烈的暖流冲击了,啊哒哒, 不会像刚才那样一个一个气流冲击过来了吧?好,所以辅音是分清和浊的啊,清辅音有气呼声, 浊辅音有声,没有气流,所谓没有气流,不是说一点气流都没有啊,它就是没有强烈的气流冲击出来的那种感觉。第二组叫做同理啊,还是一个清一个浊。清音发音的时候不要震动,就是一口气特 特啊,浊音的时候有震动的的的。第三组,上面是轻音, 下面浊音,个个个好,这六个音分三组,我们在发音的时候有一个共同的感觉,你有没有发现?首先我们以这个为例啊,啪啪,首先在发音开始的时候,你的口腔是闭上的, 啪,对吧?口腔一开始是形成阻碍的,气流出不来,但是你在发音的那一刹那,口腔被冲开了,气流出来了,啪的 干,你会发觉不管是哪一个音,要么就是一开始嘴唇把这个气流的通道给闭合了,要么就是舌头和上颚之间哎,扣死了,然后气流出不来,到最后发音的时候,一打开,气流喷出来了,这六个音就是这个发音特点,所以基于这个特点,我们把它叫做 爆破音,就是发音一开始是有阻碍的,后来气流像这个这个爆破的感觉一样,一下冲出来,膨胀出来,所以就叫爆破音。但他的发音特点,那么接下来又出现一组啊,还是上面清辅音,下面浊辅音,上面念成嘶嘶 嘶。你感受一下,跟上面的发音特点不一样了吧,上面一开始是阻碍你的,然后突破阻碍,啪, 好,这个一开始好像有一点阻碍,没有完全把你的气流阻死,所以你在气流出来的时候是没有就那种冲破的感觉的。嘶,就正常发下面一个, 所以很显然这不是同一组吧,这叫什么音呢?嘶,这个音是怎么出来的?是气流通过牙缝的时候好像摩擦出来的声音,所以这组就叫摩擦音。还有很多,比如说这两个写的就跟我们汉语拼音差别很大了,对吧? 但是很形象啊,你看这个上下两个像不像牙齿?中间这个就是舌头啊,你看见中间这一横,说明要看见舌头啊,所以舌尖伸出两齿之间, 但是你千万别咬着它啊,要咬着舌头就发不出来音了,你咬着舌头把所有的气路都关闭掉了吗?上齿跟舌头是有触碰的,那舌头跟下齿之间你要留一丝缝隙,让这个音出来, 就以这个口型来发这个音,以这个口型来发这个音, 对应这个。嗯嗯嗯,也是以这个口型来发这个音, 所以这两个呢,看上去不太熟悉,但是实际上是很好发的啊,跟他一样,对于这种我们汉语拼音当中不太会出现的发音,一定要多练,练到你这个嘴巴舌头习惯为止。所以这个叫什么?这个就叫技术, 就是我们英语学习分知识和技术两大类,知识是学的,而技术一定是靠练的,你熟练就好了嘛,对吧?其实你单独念的时候确实有难度,可是放在单词当中很简单的,你比如说举例子啊, 这词怎么念? that 很好念吧,你没有感觉到困难,但实际上这里的 t h 发的就是它呀, w at that 啊,就是这样发的呀, 不就是他这个音吗?哎,所以放在单词当中就很好读了啊。下面一组这个就类似于是他的翘舌音一样的感觉嘛,念成是是下汉语拼音的 s h 那 个音,对吧?都用的是这个日日 日好,这两个感觉是他们的翘舌音,对吧?这组发音的位置啊,上齿贴着下嘴唇,注意啊,是上齿,放在下嘴唇上就行了,千万不要咬着下嘴唇,你一咬那个气路又关闭,你又发不出来了,所以 下边这个,嗯嗯嗯,还有两个,这两个呢,不是成组出现的啊,单独的啊,这俩不是一组啊,正好单着这两个我们就写出来了一个叫做, 哈哈哈,这个发音是非常独特的,你能够明显的感觉到这个发音其实就是一口气哈, 你平时在呼气的时候就是这个音,所以由于它的发音特点它就是一口气。所以在我们平时啊,这个读英语的时候 就会出现很多啊,比较奇妙的现象,比如说举例子啊,这句话应该怎么读?你看我们正常读 i love her, 对 吧,你看这个音啊,就是一口气啊,这个音呢, 这就是刚才我们学到的,呜,对吧,你看你在一个音后面加了一口气,这口气你加不加,反正都得呼出去呀,虽然我们这个呜呜浊辅音,但浊辅音也是要呼气的嘛, 那么你这口气跟这口气不就可以直接连起来了吗?就相当于省略一口气了。 所以导致的结果是什么?后边一个单词是以这个音开头的时候,反正你前面这个音也得呼出一口气来,自己再来一口气重复了,重复的可以省略,所以直接拼到这个 e r 上面, i love i love i love 就 可以了。这个现象在英语当中叫击穿,这指的是发音的时候击穿这个字母,直接拼到后边去。 我们很多时候讲英语啊,讲发音的时候,老师讲的东西过于专业啊啊,同同学们,今天我们学一个非常神奇的原则叫击穿,大家一听就蒙了,这些原则的名称你一定是放在最后再说的,你先把道理讲清楚,大家懂了,然后最后下个定义啊,这叫击穿。这个定义你记住和不记住是无所谓的,主要记住它的本质逻辑啊。这个音 就比较特殊了,这个音在英式英语和美式英语发音是不一样的,我们学这个国际音标呢,是英式的体系,所以首先你要了解它在英式发音当中,舌头翘起来发这个音叫做日日日。这个音是什么呢?我们原来在教学过程当中,大家都喜欢把它念成弱,弱 就是弱,这个音我用一个汉字代替一下啊,我们原来都喜欢把它念成弱,实际上这种发音是不对的,因为如果你把这个音念成弱, 相当于什么?相当于你在这个音的后面加了一个 a 音,这才念成,而他现在是没有这个 a 音的,所以我们在真正念这个音的时候,你应该是念弱这个音的前半段日日有点类似于入的感觉,感受一下啊,日日日, 怎么去强化记忆这个音标呢?就我们用我们已知的可能不是很多的单词量反馈过来去记忆这个四十八个因素的发音,比如说你肯定会一些很简单的词, red 红色的 read, 读书,对吧?你用这些单词反过来去记, red red red 日日日,是不是这个音就记住了? read read 日日 read, 日日日,是不是就记住了啊?这才是它的一个正确发音啊。 但是呢,在美式英语当中又有区别了,美式英语当中就把它当成一个儿化音,还是舌头要卷上去,舌尖抵着这个上颚,它简称日日日,就是一个儿化音的儿的音。 teacher, 日日 mother, 日日日,就这样的一个音了啊,所以它会存在英美的不同的一个区别。这五组就叫做摩擦音了,那么上面有爆破,有摩擦。还有一种情况是把这两组音结合到一块,又会形成一些新的发音, 比如说我们把这组音跟这组音结合,就会形成一组新的发音,像这种发音有点类似我们刚才说的那个双元音的感觉啊,就是你用两个辅音拼在一块,那也是直接滑动就可以了,前面一个音叫做特特 特,后面一个音叫做嘶嘶嘶,所以这两个合一块,特嘶特嘶特兹兹兹,就出现了一个新的音,叫做兹兹兹。自己拼就好了啊,特兹特兹 兹兹兹,两个音拼在一块,速度不断加快,最后拼到一个音就变成了次次 呲的音啊。同理,这个念成的这个念成子还是把这两个音拼在一块儿,速度不断加快的。日的日的滋滋滋滋滋滋滋滋滋滋滋滋滋 滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋滋。 嗤嗤嗤嗤嗤,就变成了嗤的音了吧?嗤嗤嗤的日的日的日,吱吱吱吱吱变成了吱的音。吱吱吱。好,再继续搭配,还是这两个让它们跟日去搭配起来,就变成了 嗤嗤嗤嗤嗤嗤嗤嗤嗤就变成了嗤嗤,有点类似于初的音嗤嗤嗤。 我们很多人在教这个音的时候把它念成戳戳,我们学的也是戳,但是你要把它念成戳,其实是有点违反单个音的规律的。包括我最开始教书的时候,我也念了十几年的戳啄, 后来我就发现这样的念法其实是逻辑上是不对的,因为你你一定是两个音单独拼一块形成一个新的音嘛。那既然你确定这个音念日特日特日吃, 自然是拼出来叫,而且它比较符合单词的发音逻辑,比如说我们自己去感受啊,这个词怎么念? tree, 你 要把它念慢点拆分开来呢? tree 是 不是第一个音出来了? tree, 所以 它一定是吃,因为你在单词当中可以找到嘛,你要把它拼成戳一锤,那有点完全按照汉语拼音的说法了啊,那真的就是汉语拼音了嘛。所以 tree 吃吃吃 特日对吧?同理,包括我自己以前也是把这个音念成啄,但是你自己想一下,这个念字啊 的,这个是日的日的日吱吱吱吱吱,有点类似于猪的音,猪就出来了。怎么验证呢?还是用单词啊? 我们原来以前拼的是啄 e dream dream, 你 感觉是不是又汉语拼音了?把它放慢, dream dream, 吱吱吱吱,这个音是不是自然而然就呈现出来了?所以吱 e dream, 所以 这是 它的正确发音。我们有些时候啊,英语学习是完全可以靠逻辑自己推理出正确答案的,所以为什么说很多常识性的东西大家都这样教啊,包括我自己也这样教戳啜啰,教了十几年,后来发现当你去思考问题的时候跟真相是有差距的, 哎,你会能够通过思考解决问题的啊。这三组是由爆破音和摩擦音加一块形成的,所以我们就叫做破擦音,又有爆破成音的这种感觉,又有摩擦成音的感觉,所以这是综合起来的啊,叫破擦音。 姐,你看这些概念再记起来其实也很容易记得,当然你你你可以,你没有必要非得记住这些名称啊,这是不不重要的,但是我们在讲课的时候把原理讲清楚之后,实际上应该大家直接就记住了吗?接下来的三个叫什么呢?一起写出来了啊,叫鼻音。 这三个鼻辅音很明显,它的特点就是发音的时候要靠鼻腔,那么从下从上到下口型依次增大。第一个音嘴巴是闭上的, 完全是闭合的,舌头放平从鼻子里出这个音,嗯嗯嗯,他其实就是 m 的 一个一个发音情况了好到第二个之后嘴巴可以稍微张开一点了,舌尖抵着上齿音,上齿和牙龈结合的位置还是从鼻子里走,这个音, 嗯嗯嗯,好,到第三个嘴型再放大,舌尖抵着下齿音,舌尖抵着下齿音,嗯嗯嗯,所以这是有一个规律的啊,口型由小到大,然后举一些例子,单词啊,大家去感受一下啊,比如说 team, team, 嗯嗯,最后一个是嘴巴是闭合的,嗯,这个音,那比如说 team tinn, 你 看到最后这个嘴巴不是闭上了,张开了 tinn, 舌尖抵着下齿音,嗯,比如说这个词, think think, 嗯, think, 这个音就变成下齿音了吧,比如说 long long, 嗯, long long, 嗯嗯,舌尖又抵着下齿音了,所以大家用单词去感受这些啊, tin, tin, long 啊,这些是鼻鼾音三个特点。再有一个舌侧音,舌边音,它的特点是什么呢?发音的时候舌尖抵着上齿音, 然后气流是从舌的两边出来,然后发出这个音的。它有两种发音啊,一个是在单词前面,在元音前面的时候,以刚才说的口型发了的音啊,口型不要动啊,不要真的念成了了,就以刚才舌尖抵着上齿音的口型,日日日, let leg long look, 这是在前边,如果这个音在单词后边,发音位置是不变的啊,还是舌尖抵着上齿音,然后发 o 的 音,哦哦哦, school, 这个单词是大家经常发错的,错在哪呢?错在我们只念前五个字母, school 完了,那这个音就没念啊, 对吧? school, 哦, school, school ball, basketball wall pool, 哦哦,这个音,对吧?所以这是两个不同的情况啊,但是口型是一样的,这叫舌边音。最后还有两个 名字叫半元音,就是有时候在元音当中也会见到这样的东西啊,你比如说我们最经典的这个,这个音,我们其实 经常把它当成一个整体,这个整体就是字母 u 的 发音,念成 u, 实际上呢它也是拼合而成的啊,我们还是把每一个单独的给学会就行了,这个 念成耶耶, yes, yes, yes, yellow, yellow, 就是 这样的啊,这个呢,刚才那一页黑板,再加上这六个,一共是二十八个,这就叫辅音。 我们把元音和辅音按照单词的需要拼到一块,拼成的那个东西就是我们用于背单词的核心手段,就叫音标了,所以这个是这节课跟大家去分享的,音标的第一个核心内容就是它的读法。

pyxon 基础语法 fstream 字母串格式处理 hello, 大家好,我是陈学木木,今天的话想教大家 fstream 的 字母串的格式化的一个神器。那这个案例呢?其实在爬虫里面的话,包括我们的这一个 web 里面用的是比较多的,我接下来给大家用一个简单的一个案例给大家去演示一下。在里面首先第一个我先准备一个 name, 这个 name 呢,我们给他一个名字,比如说现在的话,我这里的一个 name 是 陈学木木, 好,下面的话给上一个年龄,这里有一个 age, age 的 话这里写上一个十八,呃,相对是我今年十八岁啊,在里面。好,接下来我想把呃里面的支点把它打印输出,那这个地方直接是 print 打印里面这一个 name 啊, 下面这里呢有一个逗号,我把用一个逗号隔开,这里有一个 a 键。我们这里先来看一下鼠标右键点一下运行这个地方的话,他直接是程序木木跟十八,但是我想打印的是,我是程序木木,我今年十八岁,我想打印这种的,怎么怎么去打印?那这个地方可能同学会想的是这种的,第一个我们用一个,我是我是, 后面这里呢,我把那个变量名加到这个里面啊,后面这里有一个逗号隔开,下面这里的话就是我们写上这一个,我今年 嗯十八,后面这里我们也是用到一个 a 键这种形式打印,我们来看一下鼠标右键点下运行这里的打印的话,大家可以发现这个地方只会打印,我是内容里面是 a 键啊,对吧?他没有把这个地方只会打印,我是什么他就打印什么,为什么呢?因为这一个数据的话,他是一个字母串, 因为前面有这种的引号嘛,它就是一个字母串,而前面这个地方的话,它是一个变量名,因为颜色都不一样,这里大家很明显能够看得出来。那我怎么样能够把前面的这个变量名引用到这一个字母串里面呢?那我们就得用到这个支点在里面,那我这里写的话,直接在前面加上一个 f 啊,一定要加一个 f, f 是 固定的,后面这里的话,我们把这个用一个花括号把它括起来在里面啊,你要把花括号括起来在里面后面这个地方呢?我们也要把它用花括号括起来在里面啊,这样子才是对的,在里面里面没有,但这个地方呢,有一个注意的一个事项,就是我们里面这里的话,呃,如果你这里写完,这里就不要加了, 就这样子去写啊,因为前面的 f 必须放在放在一起在里面啊,这样子就是变成这种的一个白色的,它才是引用到里面的一个变量名的,这种就是我们的 f 格式化的一个输出,像在爬虫啊,还有那个, 嗯,很多数据处理当中都有用的到在里面的,所以这个就是我们的一个 python f string 的 这个次序串的格式化的一个处理,它是 python 技术语法里面必学的一个内容在里面。那接下来我把这个代码运行一下,给大家看一下效果,手边右键点一下运行, 运行完之后呢,这里就直接是,我是陈学木木,今年十八,对不对?就直接能够直接引用在里面的,那么这个你学会了吗?

hello, 大家好,未来的加瓦工程师们,欢迎大家来到加瓦零基础入门到精通的一个课程系列, 想要掌握加瓦这个武林秘籍吗?别急,我们一关一关的闯,不管你是大学生转行者还是纯好奇,跟着我点赞、关注收藏起来,带你打开加瓦新世界的大门。 嗯,上一节课的话给大家说到了这个方法的重写,然后我们来看一下为啥要方法重写啊,先回顾一下之前的一个方法重写 啊,什么时候需要方法重写呢?就是当父类的方法啊,他的功能不满足子类需求的时候,哎,我们就可以重写啊,父类的方法啊,然后呢子类啊,去实现他自己想要的一个需求和功能,然后构成构,嗯,构成那个方法 重写的那个因素有哪些呢?第一个是什么?方法名必须相同啊,方法名必须相同,然后参数列表必须相同啊,然后它它这两个核心要素啊,就构成了那个方法的一个重写啊,至于重写的一个详细规则啊,大家看这里, 然后它相关关键字的话,一个 override 啊,放在那个方法的上面啊,表示这个什么? 表示这个强制什么?编辑重检查这个重写的规则啊,就书盘呢,就表示调用父类的重写了一个方法啊,就比如说你这个父类和子类都有一个同样的方法啊,然后的话,哎,你就可以通过书盘和认识来区别你是用父类的方法还是用子类的方法啊,然后的话, 嗯,这节课的话,我们来看一下 final 关键字啊,这节课我们要理解 final 关键字的核心啊, final, final 就 表示最终的意思啊, 它就是最终的意思。就是说不可变吗?就是不可变啊,理解 final 修饰什么修饰变量,修饰方法,修饰类,它不同的含义啊,运用什么 final 设计不可变类和产量啊,区分 final 啊,与其他关键字啊,史蒂克呃 over strike 的 这个区别啊。 啊 final 关键字呢,它主要有三种用法啊,第一个修饰变量的话啊,它就表示这个变量啊,它就变成了一个产量啊。 就是干嘛这个变量的值一旦被复制了啊,就不能被修改,而且什么必须出此话啊,然后就是方法的话,哎,就说这个方法禁止被重写啊,此类不能什么 不。什么不能重写啊,父父类的一个方法啊,翻译的如果说是类的话啊,他就表示这个类,哎,他不能被什么不能有子类不能被子类继承啊,他核心特性就是说,哎,一旦父子不可改变啊,然后变异时优化就翻译的产量可以被内联优化啊。 fire 变量什么天生是现成安全的?为啥?因为你都不可变了嘛,你都不能变了,那多现成同时访问他也不能改你啊。所以说他就是构成了一个现成安全的啊,什么?还有就是他构造完成前必须出的话,就是说你定义的 fire 变量,哎, 在你干嘛在你这个构造方法执行前啊,必须进行粗俗化啊,那就是翻的就是变量啊,就是用用于什么产量吗啊定义产量然后的话就是方法的话啊,就表示这个方法,哎不能干嘛不能被此类 覆盖啊,然后如果说修车类的话啊,就表示这个类不能被继承,那我们来看一个案例,设计一个订单系统,要求什么订单状态,一旦创建就不能修改啊,用 find 变量,然后表示什么订单号生成规则啊, 然后不能被什么,不能被纸类进行一个覆盖啊,表示货币单类、单位类,它是不可变的一个类。 final 类啊,统一系统管理啊,统系统产量统一管理啊,使用 static final 进行修饰啊。首先我们来看一个材料类啊,我们定义的什么公司的名字啊, 包括这个这个比例啊,好, 最大订单金额包括他的一个货币类型啊,包括他的一些订单状态啊,这些都是产量。哎,你看就是产量修饰好了啊,就比如说我这里我定义好了这些产量,对吧? 看似定义好了,就不能去变他了,为啥?你看如因为这些产量都是我们规定好,事先规定好的一些变量,哎,我们怎么去变呢?比如说复制一,复制不了,改不了,对吧?不能改,但如果说我把代码换成去掉, 那就可以改了,你就怎么去掉,哎,是不是就可以改了,是吧?所以说就是产量啊,就是变量,他就变成产量了。好,如果不可变类啊,什么叫不可变类?就是这个类啊,这个类他设置成什么或地域单位,他不可以变,就是你这里这里面的属性。 包个方法啊,都不不能变啊,都不能被什么?不能被别的类继承啊?就比如说我现在这个特此类,我现在要干嘛要去继承这个类?看报错了,他说这个 是,呃,这个是翻的,不能继承,如果说你要想继承的话,你就要干嘛把它变,把翻的去掉,你看我们把翻的关去掉, 是不是现在就可以进行一个继承了啊?他说没有匹配的一个 ctrl 啊。那我们创建一下这个构造方法啊,我们创建个构造方法啊,这就这样就可以了啊。 好,然后这里的话,呃,我们来把 find 关键字给它还原回去啊。 啊?货币单位不可变类,还有个就是订单类啊,演示 final 变量和方法啊,就这个 order 这个类 order 这个类。 order 这个类的话,就比如说我们这儿用 final 修饰的方法啊,表示子类就不能去修改,就比如说我们 order 这个类里面干嘛去干嘛? 就用 find 修饰这个关键字,就修饰这个方法了,对吧?那子类,哎。这个它的子类是哪一个? order 应该是这个类啊。 呃应该是这个类,这个类继承 old 类。那这里我想要去重写这个方法,是不是不行啊?他是不是在报错啊?是不是在报错?比如说我,我就随便写个方法啊,对,他一个这个这个啊,我要重写这个方法是不记不,没办法,没办法重写啊,你看方法名字都一样,对吧? 返回参数也一样,没办法重写,那如果说我们把返回参数去掉呢?哎,你看他是不是就可以重写了,对吧?就可以重写了, 就可以被重写了,然后的话我们再回来把它的关注加上啊,它又不能重写了啊,又不能重写。所以说啊,这就是 find 关键字在这几个地方的一个用处啊。 那这个的话就国际订单内啊,继承这个 word, 它不能重写这些 find 的 方法啊,但是它可以重写什么非 find 的 一个方法啊, 然后的话这是测试类啊,测试类,然后大家可以看一下啊, final 变量的一个初步化啊,就是静态翻译的声明时啊,就是说初步化时机,就是说在声明的时候,或者是说静态代码快的时候啊,就说 static final, 什么 int a 等于十,对吧? 实体的 final 啊,实体的 final 就是 声明时或者构造方法或者代码块里面啊,进行构造复制。构造什么是代码块啊?这个其实也是代码块啊,这个也是代码块, 然后它这里面也是可以执行相关的一些代码的啊,就比如说这样啊,代码块它是在 粗俗化的时候执行他他的话,他执行的话他要比那个什么,他要比那个静态方法啊,比静态方法静态代码块执行要晚啊,他在静态代码块后面执行啊, 然后的话局部翻译的话就是使用前一次复制即可啊,就使用的前一次进行复制就行了啊。局部翻译 然后使用的场景话,哎,第一个是定义残量对吧?然后第二个是定义不可变的一个对象,第三个的话就是说,哎,你要定义一些安全的数据不能被修改啊,比如说核心算法不允许指定修改啊,然后的话就是匿名内部内局部变量必须用 final 修饰才能被什么匿名内部内访问 啊,然后的话就是 final 跟其他关键字的一个对比啊,然后的话, 然后呢?我看一下 final 的 一个好处总结啊,就是它有哪些好处呢?就是安全啊,就是关键数据不能被随意修改,还有设计上它明确意图 告诉什么其他开发者,哎,不要改它,对吧?还有性能就是变异优化啊,残念可能被内敛啊,然后现成的安全啊,就是 final 变量,它是天生现成安全的啊,后面会讲到多现成啊, 然后的话大这里大家知道就行啊。 find 他 是 find 修饰的类变量啊,他都是天生,怎么现在安全的啊, find 他 不可变啊,他简单可靠啊, 不可变对象异于什么使用和缓存啊。然后的话,我们来看一下快速的一个记忆口诀。 find 修饰有三种啊,方法,变量还有类, 然后的话,变量赋值不能改,方法重写被禁止,然后就是 final 类,五指类啊,安全设计要考虑。然后就是 static 是 常量 啊,全大写下划线啊,空白 final 要注意啊,构造里面必赋值,那就是不可变内用 final 现成,安全又简单啊,大家记一下,然后这里的话给大家讲 留几个案例。第一个是啊,设计一个一个不可变的 person, person 类,然后里面的内蒙 age id 都不能被修改啊,然后再设计一个数学工具类,包括 pi, e 等材料啊,所有的方法都是史蒂克 find 修饰的啊, 然后设计一个配置类,从配置文件读取啊,从配置文件读取值,然后并除成为什么 find 变量啊, 然后如果说,大家这里啊,给大家讲一下,要学会使用 ai, 就 比如说,哎,我这里我怎么如果说这个东西我不会弄怎么办?你要学会用这个东西啊,用这个 ai, 然后帮他,让他帮你去实现,就比如说,哎,我现你告诉他你的需求对吧, 我现在正在学习 java, 然后呢,你告诉他你的 jdk 版本,版本是多少,是二十一对吧,然后你帮我完成这个需求,然后你把代码搬过来,对吧? 然后他就会开始帮你去实现了。哎,你看你项目结构都帮你搞好了啊,就比如说 项目结构你这个文件应该放在哪里,对吧?我来给大家演示一下怎么去使用这 ai 啊?就比如说它告诉你 a 你 的项目结构在哪里,就被 s r c, 对吧?你对比一下这目录嘛?他这有个 resource 这个目录,对吧?那我们不在 resource 目录,然后是叫新建一个什么 resource 目录啊?新建一个 resource 目录,嗯,然后的话你在这儿新建一个文件, 呃,他是加碗啊,所以说我们就放到这里吧,也差不多一样的啊。嗯,放这里还不行,嗯, 我们就放到内陆镜架,也行,就放这吧。嗯,新建一个, 我们就放 s r c 下面。新建一个 file, 就 放 s r s r c 下面吧,然后的话它告诉你这个配置文件,对吧?然后你拿过来, 对吧?你这新有个配置文件嘛?拿过来,然后呢?它告诉你啊?配置一,创建一个什么内加载器啊?我们在这里就在十二干这新建一个内嘛,然后拿过来, 拿过来,然后复制一下这个代码啊?先复制拿过来,是吧?然后他告诉你这里开始拿取翻译的材料变量一个类,他说所有的类都读取到这个变量里,这个类里面啊, 我们来看一下,然后把代码复制过来,对吧?你都不需要自己写。然后最后应该还有个什么测试类啊?测试类,然后把测试类拿过来麦拿过来,把测试类拿过来,然后的话把代码复制一下, 复制一下,然后的话,这这这自动打包啊,让他自动打包,然后我们来看一下这里为啥在报错啊?这报名不对,然后的话这里也在报错,应该是报名的问题啊,往上走,把报名啊搞掉。 来我们看一下测试类,它首先它要加载配置文件,你看它这里定义一个静态方法,哎,进来这个 properties, 它会创建一个对象啊,它说如果说对象为空,用这个什么用这个? 嗯,单列模式啊,创建一个这个啊, load properties 它会干嘛?它会去找这个什么?它会找这个 application 叫 properties, 它在哪里找?它在内路径下找,哪里是内路径呢? 这儿 out 克拉斯,这儿就是内路径啊,你的内在哪里啊?它这个它这个就在哪里啊?你看它内拼音在哪里,对吧?内很明显就在什么,就在 s r c c s r c 下面啊,你看我们现在来运一下,看能不能找到啊?能不能找到, 能不能找到呢?放在 s r c 下面。那我们来运行一下这个麦方法,看一下具体到底是一个什么情况啊? 啊?我在这里利用 ai 教大家如何去搞啊?如何去搞?如果说,哎,你看这儿继承你这包错啊,这是刚我们演示的时候弄的啊,看 是不是最终这个什么,这个最终开始测试配置类,你看最终这个文件是不是写到这里来了,对吧 对吧?所以说这里这里这里,这里 get node 啊,这个牌牌提示,这从哪里找?从内路径,你来看 get class 啊, class 叫 get resource, 就是 说你要放在这个内路径下面, 内路径 s r c 就是 内路径啊。如果说你这个文件是在哪里?是在 demo 杠十二里面的啊? 那你这个滤镜就要变一下,你看就要变成斜杠。什么 demo 干十二干 properties 啊?这个滤镜要变一下啊?它是从 src 在 开始的, 如果说你直接放在那个 src 下面,那你就不用加这个 demo 四干十二啊,你看已经读取到了,读取到了,读取到了之后,他已经把这个东西封装到什么封装到这个材料内里面了,你看啊, 放到它这个场景内里面了,然后这里的话是教大家如何去使用这 ai 完成你自己想弄的事情啊,这个是一个思路。


当我们记住 craft 这个单词,我们就可以用今天这个视频记住一堆和 craft 相关的单词。 craft 这个单词有三个词意,首先它可以表示工艺、手艺的意思,第二层意思呢,可以表示船,专指这些小型船,作业船。还有第三个意思还可以指飞行器。 当 craft 表示船的意思的时候,我们可以在前面加上 fishing 钓鱼这个单词,我们就记住了 fishing craft 小 渔船。当我们在前面加上 pleasure 休闲这个单词的时候,我们又记住一个新单词, pleasure craft 游艇。 当 craft 表示工艺和手艺的时候, craft 前面加上个 hand 就 组成了 handcraft 手工艺。在 craft 后面加上 man, 我 们又得到了一个新的单词, craftment 手工艺人。我们还可以组成以下和手艺相关的单词, wood craft 木工手艺, metal craft 金属工艺, paper craft 纸艺 leather craft 皮具手艺, glass craft 琉璃手艺, clay craft 陶艺。 最后我们再来看一下表示飞行器的时候会有哪些新单词。当我们用 space 空间这个单词加上 craft 在 外太空飞行的飞行器,它就是 spacecraft 宇宙飞船。在 craft 前面加上个 air 空气,我们就得到了可以在空气中飞行的飞行器,它就是 aircraft 飞机。

每次改信息都要重写代码,太麻烦。变量就是内存里的一个带名字的小盒子,三步走声明盒子放入东西,取出使用 看。我们先准备好三个盒子,把信息存进去,然后用加号把它们和文字连接起来,输出一次赋值,随意使用修改 name 的 值,所有用到它的地方都会变。 给变量起个好名字是你和未来自己以及其他程序员的善意。动手时间,试试完成上面的挑战。代码发在评论区吧,下期预告,有了记忆程序如何做判断? defiles 让你的程序会思考。

inspiration, 这是个名词表示灵感的意思,词根 spare 表示精神的意思,前缀 in 表示进入的意思。第二一个表示行为的名词后缀 asian 进入到精神领域就可以寻找到我们的 inspiration 启发与灵感。

前几天我和一个朋友在咖啡馆聊天,他突然问我一个挺有意思的问题,他说,小米,你不是天天写 java script, 那 我问你个事,数字明明是原始值对吧?那为什么我可以在数字后面调用方法,比如把数字变成字母串? 我当时听完就笑了,这个问题其实特别经典,而且很多写了好几年 java script 的 人可能都没有仔细想过。 一个普通的数字看起来就像一枚硬币,很普通,很简单,但神奇的是,当你需要的时候,它居然还能变成一把瑞士军刀。 事情要从 java script 的 一种数据类型说起。大家都知道 java script 里有几种叫做原始值的数据,比如数字字母串、布尔值。这些原始值有个特点,就是它们不是对象。 既然不是对象,那按道理来说,他们应该没有属性,也没有方法。可奇怪的事情就来了, 平时我们写代码的时候,经常会对数字调用各种方法,比如把数字转成字母串,或者控制小数点的位数。按逻辑来说,这件事本来是不应该发生的。那 java script 是 怎么做到的呢?答案其实很有意思, java script 在 背后偷偷做了一件事,当你对一个原始值调用方法的时候,它会临时帮你创建一个对象,把这个原始值装进去,然后再去调用这个对象的方法。 方法执行完之后,这个对象就立刻消失了。换句话说,每当你对数字调用方法的时候, java script 都会在背后瞬间创建一个 number 对 象,帮你完成这次操作,用完之后马上销毁,整个过程快的像闪电一样。所以我们平时完全感觉不到 这个机制有一个挺形象的名字叫自动装箱,你可以把它想象成这样原始值。就像一个普通人平时穿着日常衣服,但当需要执行某些技能的时候, java script 就 会给他瞬间套上一套装备,让他变成超级英雄技能,用完装备立刻收回。 不过这里也有一个特别有意思的小陷阱,比如有些人会尝试给数字加属性,比如给某个数字挂一个自定义自断。很多人以为这样就能把属性存进去,但实际上是做不到的。原因就在于刚才说的机制,因为每次访问数字的时候, java script 都是在创建一个新的临时对象,你刚刚加上的属性,其实早就随着那个临时对象一起消失了。 这也是为什么在实际开发中,我们几乎不会主动去创建 number 对 象。 javascript 已经帮我们把所有事情都自动处理好了,我们只需要正常使用数字就可以了。

大家好,欢迎收听。首先还是要特别感谢波面 app 为我们提供了这次深入探讨的知识点。嗯, 今天我们要聊一个 java 面试里几乎绕不开的话题, string 对 象的不可变性。对,这个点确实是高频考点,我们会帮你弄清楚三个问题,这个不可变到底是什么意思? java 是 怎么实现的?以及最重要的为什么要这么设计,帮你彻底搞懂它。没错,理解了为什么才能在面试里真正脱颖而出。好,那我们就从一个大家肯定都写过的代码开始吧。比方说, string s 等于 hello, 然后下一行 s 等于 s 加 word, 嗯,很常见的操作。这就有意思了,你看变量 s 的 值,它不是从 hello 变成 hello word 了吗? 这怎么能叫不可变呢?听起来有点矛盾呢?哈哈哈,这是一个非常好的问题,也是很多人的第一个困惑点。这,其实,嗯,算是一种错觉。错觉对,这里的关键是要分清楚引用和对象本身。 我们代码里那个 s, 它其实只是一个引用,你可以把它想象成一个贴在盒子上的标签。一个标签,是的, 而 hello 这个字母串儿是实实在在放在内存里的那个盒子。当你执行 s 加 world 的 时候, jvm 并不是打开原来的 hello 那 个盒子往里面加东西。那它干了什么? 它做的是,呃,重新找了一个新盒子,把 hello world 这个全新的字母串儿放进去,然后把 s 这个标签从旧盒子上撕下来, 贴到这个新盒子上。哦,我有点明白了,所以原来的那个 hello 盒子其实还在原地没动过。完全正确,原来的 hello 对 象从始至终都没有任何改变, 如果没有任何其他的标签指向它了,那它过一会儿就会被垃圾回收机制给收走。所以像 concat 或者 replace 这些方法,其实原理都一样,都是返回一个全新的 string object。 对 对对,就是这个道理, 所有看起来像在修改 string 的 操作,实际上都是在创建新对象。原来如此。那 java 是 怎么从代码层面强制保证这一点的呢? 总不能光靠约定吧?问到点子上了,设计者当然不会留下任何后门,他们用了三道锁哦。哪三道锁?第一, string 这个类本身,你看它的源码是 public final class string 这个 final 关键词,就意味着它不能被任何类继承哦,直接把路堵死了, 你想通过写个子类来搞破坏门儿都没有。没错,第二道锁是它内部存制服的那个数组,不管是早期的 char 还是 jdk 九之后的 byte, 它都被 private 和 final 修饰了。 private 我 懂,就是外部访问不到。 那 final 在 这里的作用是? final 在 这里是保证这个数据库的引用地址不能变。就是说这个数据库一旦出土化,指向一块内存,它就不能再指向另一块内存了。嗯,听起来很安全了。 但是最关键的还是第三点, string 类压根儿就没提供任何公开的方法让你能去修改那个数组里面的内容,你翻遍它的 api, 一个都没有明白了。层层设防让你看得见,但就是动不了。 这就引出了最核心的问题了,也是面试官最想听的,为什么要费这么大劲把 string 设计成不可变的?到底图什么? 这个问题就触及到 java 设计的灵魂了,这背后有几个巨大的好处,但最最核心的一个是为了实现次浮串长量池。次浮串长量池? 这个能展开说说吗?当然, jvm 为了提升性能和节省内存,设计了这么一个区域, 当你写 string s 一 等于 java, string s 二等于 java 的 时候, s 一 和 s 二这两个引用其实指向的是藏量池里同一个 java 对 象。哦,是为了赋用对象省人钱啊。对,那你想想,如果 string 是 可变的,会发生什么? 嗯,如果 s 一 把那个 java 对 象改成 python, 那 s 二的值不也就跟着变成 python 了吗?完全正确,那整个程序逻辑就全乱套了。所以不可变性是磁串常量池能够安全存在的基础。这个我理解了,是地基。 那还有别的好处吗?有啊,第二个就是它天生就是县城安全的。县城安全?对,因为一个对象的值永远不会被改变,所以你可以在成百上千个县城里随便共享它, 完全不用担心数据会被某个县城偷偷改掉,也就不需要加任何锁,编程就简单多了。这确实是个巨大的优点,尤其是在勾并发苍君下。 第三就是安全性,这个非常重要。你想我们平时代码里,像数据库的 url 密码、文件路径这些是不是经常用字母串来传?是的,那如果 string 是 可变的,就可能出现这种漏洞。 一个方法,先检查了文件路径的权限,没问题,但在他真正去打开文件之前,另外一个恶意县城把这个路径字幕串给篡改了,指向了一个系统敏感文件。哇,哼,那后果不堪设想。对, 不可变性就杜绝了这种可能,一旦创建这个路径就定死了,谁也改不了,保证了系统的安全。明白了,所以它还是一道安全屏障。是的, 最后一点,它让 string 非常适合用做 hashmap 的 键。这个怎么说? hashmap 存东西不是要先算一下键的 hashcode 来决定放哪儿吗?如果 string 作为键,它的值能变,那它的 hashcode 也就跟着变了,你存进去之后再想拿出来就找不着了 哦,因为钥匙的形状变了,开不了原来的锁了。就是这个比喻不可变,保证了 hashcode 永远不变,所以它能当一把稳定可靠的钥匙。明白了, 所以说当我们确实需要频繁修改字母串的时候,就不能用 string 直接加了,而是应该用 string builder 或者 string buffer。 对, 这才是正解。 知道什么时候用 string, 什么时候用 string builder 是 区分新手和老手的标志。好的内容非常清晰。那最后我们来梳理几个关于这个话题的超高平面课题,快问快答一下。好问题一, 请解释一下什么是 string 的 不可变性?简单说就是 string 对 象一旦被创建,它内部的字体序列就不能被修改了。 任何看起来像修改的操作,比如加号或者 replace, 都会创建一个全新的 stream 对 象。好,问题二, java 是 如何保证 stream 不 可变的?主要是三点, 第一类被 final 修饰,不能继承。第二,内部的字体数组是 private final 的。 第三也是最关键的,它不提供任何能修改内部状态的公共方法,非常到位。问题三, 为什么要把 string 设计成不可变?四大好处,一,为了磁线磁浮创建池,节省内存。二,天生线上安全。三,保证系统安全,防止敏感信息被篡改。 四、适合做 hashmap 这类集合的键,因为 hashcode 稳定完美。问题四, string string builder 和 string buffer 有 什么区别? string 不 可变,后两者是可变的。 string builder 性能高,但不是现场安全的,适合单县城。 string buffer 是 县城安全的,适合多县城,但性能稍差好。最后一个问题稍微有点绕, string s 等于 new string abc 这行代码创建了几个对象?呃,这要分情况, 可能是一个,也可能是两个。如果字母创建池里已经有了 abc, 那 就只在堆内存里 new 了一个新对象,总共一个。 如果创建池里没有,那会先在创建池里创建一个 a, b, c, 然后再在堆里扭一个,总共就是两个对象。这个问题确实是个小陷阱。好的,今天聊得非常透彻,感谢你的分享。不客气,也感谢大家的收心,我们下期再见。