00:00
接着呢,咱们来讲第五个新特性,这呢也是咱们在这个语法层面有变化的最后一个新特性了,好,那我们来看一下这个新特性呢,咱们称为的文本块,英文呢叫做test blocks,翻译过来叫做文本块,那么如果大家接触过JAVA13的这个新特性的话呢,你会发现呢,咱们在13当中实际上呢,已经引入过这个文本块了。只不过我们现在JDK14当中啊,又对这个13的技术上做了一个新的一个修改,所以呢,这称为叫预预览的第二版,还没有把它作为一个正式版呢,来确定下来。那么在实字当中有哪些变化呢?这呢主要呢,我们引入了两个叫escape sequence,就是说两个转移字符,一个呢就是我们这个斜杠,它呢表示的就是不让你去换行的意思了,那一个呢是杠S,表示的就是我们一个空格的操作,这个咱们等一下呢,一演示大家就知道了。那么不排除呢,咱们在JDK14之后呢,可能还会有十五十六等等,还会对text block呢进行迭代,但是呢,能够确定的是一定会在未来的某个版本当中,把文本块呢,给它确定下来,做一个正式版写入JDK当中。
01:06
那为什么这么肯定呢?因为呢,这个文本块确实还是很好用的。啊,就是这样一个情况,那么这个到底应该怎么用,咱们现在呢,给大家演示一下,包括呢,如果没有,如果有同学呢,没有接触过GP13也没有关系,咱们这呢,一块儿来给大家做演示啊,那演示前咱们先说明一个问题,就是咱们在这个Java中,如果呢,用string一个字符串去表示一个或者一段HML叉l circle或者杰森格式的这个,呃,这个。代码的话呢,咱们通常都是用string来表示,那么粘过来的时候呢,通常你会发现这个格式啊比较丑,那为了能够更简洁的这个去表示我们这个格式的这个代码,所以呢,我们这块引入了这个叫文块,同时呢,这个可读性呢也更强一些。啊,那下面也有我们这个目标是什么是吧,其实主要呢,就是是我们这个代码的可读性呢更好,包括呢,我们也有一些新的这个转移字符,就是我们在这个式子当中引入的这些好这块呢,咱们就直接呢来上这个代码。
02:00
OK。哎,那我们这块写一个这个单元测试啊,叫做测试一行,那么为了让大家呢,呃,这个比较清晰的去理解我们这个文本块,首先呢,我先呢,这个把这一段。文本我粘过来啊,CTRL一下。咱们先做一个最基本的一个演示,我这呢写个string叫一个TEST1。然后呢,我直接CTRLV一下,这个答案呢,应该并不陌生,对吧,之前呢,咱不都这样操作吗?因为呢,我这段文本当中啊,带了这个换行操作了,所以粘过来的时候呢,自动的咱们idea呢,就加了一个换行操作没有问题,这呢咱们也做一个简单的输出。应该呢,非常清晰的对吧,一下。好,这就可以了,然后下边呢,我们说一下这个GDK13当中是怎么做的。13中的这个新特性,在这个13当中啊,我们说可以这样写啊,直接呢,我声明叫string,叫做TEST2右边这块呢,我们是三个双引号。再双三个双引号,中间的这块我们给它封起来。
03:01
这样子对吧。英文格式下的,然后光标放这以后呢,我直接回车,直接CTRLV,把我们刚才这段文本呢粘过来就行,我说呀,这段文本跟这段文本呢,它描述的就是一个事儿。我们会发现呢,这时候呢,每一行的末尾呢,并没有这个杠杆的操作,它的可读性呢,要更好一些。把它呢,我们CTRLC。转过来,咱们先来一个换行。然后呢,再把这个粘过来行跑一下,其实那就没有任何区别了。OK,就是这样一个情况。其实呢,要说完全没有区别啊,有一点区别就是我们这个操作呢,没有换行,这个操作的话呢,其实默认的还是有个换行的,那么如果不想让它换行怎么办呢?咱们等一下讲到这个十字的新的性呢,大家就知道了,整体上来讲呢,是没有什么区别了,对吧,就是多一个这个换行的一个字符而已,OK,这呢是我们说的这个一个文本的表示,大家可能会觉得说没什么变化呀,那咱们举一个新的例子你就知道了,那接下来我们再给大家举例子,比如说我们在这个Java当中如何呢?以自串化方式来表示一段HM2这个代码。
04:03
哎,我们来写个例子,此针形的ATML1好这块呢,怎么写呢,这样子我在咱们当前这个包下呢,我点右键去新建一个atml,一个文件at格式的,这呢,我就写一个hello,行,这呢我们写成叫JAVA14。新特性,OK,在我们这个body这块呢,我写一个叫段落的一个标签啊说哈。艾特硅谷。OK,然后呢,我把整个这个标签,就是我们HR这个跟标签,把它呢,整体上我们CTRLC一下,然后回过来,我在这个位置注意啊,我CTRLV一下。我就给粘过来了,粘过来以后呢,大家会发现是不是有点丑啊,或者这个可读性呢,是不是就很差了。对吧,那我们要想呢,更清晰的能够表示这段HTML代码呢,我们就可以使用叫文文块,我站ATT23个。然后呢,在这块封起来。
05:00
然后CTRLV直接一粘,但是这时候你看这个可读性呢,是不是要更好一些,相较于它来讲。能体会这个感觉吧?行,这是一个例子啊,我们再举个例子,这是atml当中,呃,咱们13的新特性,CTRLC一下。我写这了,我这就不再去输出了啊,不给大家演示了。那么我们再举个例子。这个例子呢,我提前已经写好了,就是这个杰森。这个杰森,咱们台词一个三。杰森呢,也是一个特殊格式的一个字符串嘛,这呢就是这个杰森有这个name address跟email这样三个算是K,这呢就是对应的这个值了,那这个可读性啊,其实是稍微偏差的,我这写的其实还不算多复杂啊,那如果要复杂来写的话呢,这个可读性就更差了。那就是如果我们这里边呢,还包这个接算数度里边又包接算对象,整个这个可读性呢就很差,那我们怎么更简洁的去写它呢?大家注意,你看我这时候把它呢,CTRL,嗯,我就直接把它吧,CTRLC一下。13当中我们怎么写?我这叫麦一。
06:01
我们呢,把它可以仍然用这个三个双引号的方式来表示,这时候还有一个比较简洁的一个写法,大家看我直接把光标呢,放在我们这个换行的操作这个位置,已经能够自动识别这是一个杰森了,我直接呢点al enter1回车,这呢就说你去替换成一个叫text block,我们点击一下,诶直接搞定。啊,是不是很牛是吧,很方便啊,咱们这个这个idea呢,还是非常智能的,然后我把它呢做一个输出。嗯,来阶层一对吧,咱们可以把它那跑一下。行这呢,就是咱们两个这个杰森字符串嘛。比较清晰对吧,那很显然呢,我们下边这个可读性呢,是不是比上边这个可读性呢,要更强一些吧。没有问题对吧,这呢,我们是举的这个杰森,咱们还可以呢,举的是不是这个circle的例子啊,给我写个四。Circleq这块呢,是这样子的,我写一个死针形的circle,写完这个circleq以后呢,咱们需要把它传送到这个数据库服务器呢去做执行,那circleq怎么写呢?咱们举个例子。我这呢,通过这个SQL这个客户端呢,咱们去连一下这个MYSQL的数据库服务器,好,那在这里边呢,我们有一些表,比如说呢,我这以这个叫customers这个表为例,首先呢D一下。
07:11
卡的表。OK,这呢是它其中的一些字段行,下面呢,我们做这样的一个这个查询ID name。Email from customers,嗯,加一个过滤条件吧,比如where I呢?我们让它小于大于吧,大于四。然后再加一个叫order,比如说按照这个email呢,进行一个倒叙吧。行,这个我们跑一下。嗯,没问题,那说明咱们这个SQ语音呢是OK的,然后把它呢CTRLC一下对吧,直接呢,粘到咱们这个位置上往CTRLV。就成这样子了,正常是咱们这个以前的一个写法,直接粘过来就是这样子的,对吧,那我们如果用这个JDK13这个新特性来表示。
08:02
四针形的SQ13个。光标往这一放,然后CTRLV一下,那么很显然我们这个可读性呢,是不是比它要强一些。行,这呢,就是我们说这个JDK13的新特性。这就说完了啊,那这个说完以后呢,我们接着呢,顺带去说一下这个JDK14的这个新特性。JDK14的新的性,那我就我直接就写这吧。哎,这个或者我我我拿出来吧,这个就别跟他混着来了。CX。行,那我在这个实战的基础上呢,我去描述CTRLC一下CTRLV,此时呢,如果我们去打印一下,咱们这个叫SL1。打一下我这个SQ1。跑一下。是不是就这样个情况呀。OK,这个大家都很清楚,那我们通常呢,是不是把这个搜Q语句送到咱们数据库服务器执行的时候呢,一般咱们是不是都习惯上都写成一行对吧?那写成一行这个事儿怎么办呢?你还得把它这块呢收回去,然后放到我们这个email的后边,那这时候呢,我们说用不着这么复杂,咱们在这个十字当中引入了一个新的一个转义字符。
09:16
哎,我先把它的调过来,然后呢,CTRLV一下。占多了,咱们把这个粘过来对吧。CTRLV一下。控住。好这就可以了,那么在这个后边呢,我们不希望这个跟from有个换行的操作,这时候怎么办呢,大家直接呢,可以用一下我们这个叫斜杠。我把这块一加,此时呢,大家再看一下我们这个输出的一个效果。当然这时候你会发现呢,我们这个email跟from呢,是不是中间就没有这个换行操作了,没有这个杠N了是吧?诶这呢就是这个斜杠呢,它的意思呢,就是取消这个叫换行的操作,我们在这稍微标识一下,它呢叫取消换行操作,OK,这就是这个意思,那这块取消换行操作以后呢,你发现这个结果当中啊,说这个email跟from联系起来,这肯定不合适,中间是不是需要个空格啊,那这个空格怎么处理啊,一方面当然呢,你可以自己在这块呢加一个空格。
10:20
这是一种情况对吧,还可以怎么办呢?比如我这块呢,还是在下一行这块,我体现一个斜杠,咱们可以用一个叫杠S。这里边儿就提到这个叫。斜杠S它呢来表示就是一个空格。诶,它就表示个空格行,那这块我加上杠S又加上一个不让它换行,那其实这个效果呢,大家应该能够想象的出来。大家看这个customers这个后面。咱们在这个后面是不是有个空格啊,这个空格呢,就是杠S来表示的,然后呢不让换行,所以这个where呢就写在后边了,那后边这2BY,那大家也可以同样的在这块我们空格一下斜杠简单来处理的话呢,就是自己写一个空格了。
11:02
那这时候呢,它是不是就整个就合成一行了。你看就成这样了是吧,所以呢,我们也可以把原有的这个文本啊,写成多行,然后通过这个斜杠呢来表示呢,它不让去换行,这样一个操作就可以了,那么再回到咱们一开始说的这个问题上。对吧,诶这是两个写法,在这个问题上的话呢,我说这个跟这个啊,说整体上呢,其实一样,刚才也说到了,其实还是有一点区别的啊区别呢就在这儿,比如说我们去做一个输出,我这块输出一下,咱们这个叫test1.les。跟我们这个test2.length,就是这两个文本的这个字符的这个长度,我们跑一下。行这块呢,大家会发现呢,是不是就差一个呀,那这一个差到哪了呢?我们上边这块呢,你看有换行,这块呢也有换行,所以说呢,这块都不差,就差到最后这块在。这个within the soundo silence,这是我们这一首歌对吧,这个这个silence后边呢,我就直接没有换行了,而我们这个位置啊,实际上它是有换行的,如果呢,你要想让它俩完全一致的话呢,大家就可以在这个后边呢,是不是我们补一个这个斜杠就可以了。
12:12
这就表示我没有换行操作了,那这时候我们再去看它俩的这样的一个长度。诶是不是就一样了,OK,就这时候呢,他俩是完全一样的了,如果你要没有这样的诉求呢,说都可以,这时候你就可以把它去掉。这个能明白我的意思是吧,嗯,就可以了哈,行,我这块呢就去了,行这呢就是我们说这个JAVA13和JAVA14当中,关于我们这叫这个文本块的这样的一个新特性的描述,这个大家呢,也自己亲自去操作操作,OK,那么在未来呢,一定会作为一个确定性的版本呢,加入到我们的这个JDK当中,这个大家呢,可以稍微的做一个等待啊。
我来说两句