00:00
好,同学们,咱们接着往下看啊,接着的话呢,我们来打开idea的安装已使用的下篇啊,那下篇当中呢,我们第八个专题呢,讲一讲快捷键的使用。啊,应该说呢,大家不管你是使用idea也好,还是使用其他的一些开发工具也好,我们都是有必要来熟悉这个平台下的相关的快捷键,啊,应该呢,是十分有助于提升我们开发的一个效率的。啊,那么这里呢,就带着大家呢,整体来熟悉一下idea这样一个平台当中常用的快捷键呢,都有哪些。好,那么首先的话呢,我们在当前功能下呢,去新建一个module啊不妨呢,我的命名呢,就是诶MODULE02呃叫k map,那我们在这个modu下呢,来演示咱们这个快捷键的一个情况啊,新建一个package啊,com.at硅谷点哎,Java。好,下边我们再去新建一个具体的类啊,步伐呢,我就叫做key map的一个测试了。啊,首先呢,我们来一个main方法。行,那这块呢,关于idea平台下的这个快捷键呢,我专门呢,写到一个文件当中啊,这个呢,大家也可以呢,打开这个文件叫做快捷键一览表。
01:02
好,那么打开以后呢,这里呢,我把这个快捷键呢,分成了这样的几波啊方便呢我们再去熟悉啊啊首先呢,第一步呢,叫做通用型,这呢也不光适用于咱们idea了,呃,在其他的你比如像word呀,呃,像这个记事本啊诶等等这样的一些平台下呢,也是通用的这样的一些快捷键。好,这个呢,大家相对来说都比较熟悉啊,咱们一个一个过一下,诶这块呢,首先涉及到呢,叫复制粘贴啊,这个大家都应该很熟的,比如说呢,我们在这个main方法里边呢,我写了一个hello是吧,我现在想把这一行操作呢,再呃复制一次啊复制一次再去呃多一个输出语句啊,当然呢,最low的情况呢,就是你自己再去写一遍是吧?啊这显然呢是比较low的啊,怎么办呢?我们可以呢把它选中。然后呢,你来一个CTRLC。这呢就我们所谓的叫复制了啊,然后放到那你想粘贴的地方CTRLV一下,诶这呢就复制一份啊,你说我们这块再来一个CTRLV,是不是又复制一份啊,哎,没问题啊,诶然后在下边这个呢,叫做剪切啊CTRLX,比如说呢,我们在方法里边呢,定义一个number,这个值呢是十。
02:06
现在呢,我想把这个局部变量呢,声明成是一个成现变量啊,你可以CTRLX,那这个呢,就是剪切的意思了,放到我们这个位置呢,CTRLV一下,那这样呢就粘过来了。然后呢,在下边儿呢,叫撤销啊,大家呢,平时不知道诶是不是也经常用这样的一个快捷键啊,跟其他的一些平台呢,也是一样的,这个叫CTRLZ。你说我们现在呢,这个变量声明成是一个成现变量了,你说我后悔了,我想再放回去,你可以呢,就CTRLC。诶这个呢,哎,就这样的就过来了是吧?啊那么这个反撤销,反撤销就是你刚才做的这样一个操作,我们说后悔了,你就把它移回了啊,如果你后悔刚才这个后悔了。啊,就像你想把这个车型呢,再再再再移回到刚才这个呈现变量的位置啊,这个呢,我们应该叫CL shift z是吧?啊这个你看我们在啊,多次点CL shift z,那是不是又把它又放回来了,这呢叫做反撤销,OK。
03:00
然后再下边这个呢,叫做保存啊CTRLS,这个CTRLS呢,其实大家平时做不做都行啊呃,我呢,可能这个在演示的过程当中,有时候也时不时的会来了一个CTRLS啊,因为养成习惯了,那以前呢,像eclipse的话呢,都需要我们手动的去CTRLS啊呃,在我们idea里边呢,这不有个保存的叫CTRLS,其实这个按键呢,大家。嗯,就当一个摆设就行,一般呢咱们都用不着,OK,然后呢,下边这个呢,叫ctrl a全选,这个咱们在其他的平台呢,也是如此是吧,那这个我就不用多说了。好,这呢是我们的第一步,然后下边呢,有个第二组叫提高编写速度的啊,我这儿呢,列举出来了相关的一些这个情况啊,那这儿呢,咱们把它整个呢做一个钉啊,诶方便呢,我们这块呢,来做一个演示啊,第一个呢叫做智能提示。Al加enter这个层呢,其实我们用的还蛮多的啊,Alt加enter,嗯,比如说那我给大家举一个场景啊,我这呢,通过这样的一个代码,那去加载了具体的一个类啊。就是我们这个死针一类了,当然这块大家如果没有学过反射的话呢,也不用担心啊,你就把它看成是一个普通的代码就完了,这个代码呢,在我们洗完以后呢,它报了一个红线。
04:09
诶,这块也有一个报错的信息是吧?诶你说我们这个红线是什么意思呀,你把光标放在这儿来一个alt enter,它就相当于给我们能有提示,诶这块你一看就是哦,有相关的这个编译式异常,我们需要做处理的,那这块你可以选一个,比如说try catch啊,诶这样呢,处理一下就可以了。啊就可以了啊呃,另外的话呢,你还可以比如说光标放在这个位置,我们来一个al enter,这个呢可以提示我们给当前这个呃,调的这个方法呢,得到一个返回值啊这呢就我们得到一个返回值这样的一个情况啊,一个class,哎,这呢也是没有问题的啊,这个呢就是我们叫al enter。诶,就过了下来呢,就要提示代码模板啊,叫CTRL接,比如说我们在编写代码的过程当中啊,你说我现在想运行模板,呃,这个模板具体我也记不太清楚了,怎么调出来的啊,你可以CTRL接一下。这时候呢,就把我们可以能调用的这个模板呢,都展示出来了啊,你看你想用的是哪一个啊,这个叫CTRL接啊。
05:05
好,下一个呢,就要使用叉叉叉块来进行环绕啊,Surround with啊T。这个是什么意思呢?呃,你比如说啊,假设呢,我们还是针对刚才这行代码,比如我再复制一份啊,我就放在这儿了,咱们可以再换一个啊浪包下的,比如说是一个integer。啊,这样的一个类是吧,好,现在的话呢,我们想把这一行代码呢,给它包起来,用一个try catch啊包住怎么办呢,我们可以呢,Ctrl out加一个T。啊,你看这时候我们就出来相关的这样结构了,我们呢,使用这个TRY啊,或者你用这个TRY都行,常常呢,我们在处理这个异常的时候呢,通常都会用这样的一个啊surround with啊叫control t了,哎这样呢,我们就把它包起来了。没问题是吧,哎,或者的话呢,你再去呃,像我们定一个变量啊,String的IR1啊等于一个啊这块我们直接复制为啊,比如说就叫做iner吧。哎,敷完以后的话呢,我们先把它啊,或者这个你想判断一下它这样一个情况啊,Ctrl out加个T这个呢,我们可以比如说放在这个if语句里边啊,这块呢,写一个啊true的情况下啊,他就哎做这样变量的一个声明。
06:13
这呢也是可以的啊。行,这呢叫surround with,在下边儿,这呢就是生成get set、构造器等相关的一些结构。这呢主要针对的是这样的这个场景,把这个收起来啊,比如呢,我们在当前这个包下呢,去新建一个类啊,这个类呢,比如我们叫做person类了,这个类里边呢,我们声明它相关的一些这个属性啊,In特型的一个ID是吧?诶string类型的一个name。哎,再来一个in特型的一个age,那么针对这样的三个,呃,成员变量呢,我们可以给它对应的提供盖塞方法,包括构造器啊,一些结构咱们就可以用,诶刚才提到的这样的一个情况啊,叫out加insert。好,那么大家你看清楚,那有的同学呢,这个键盘隐ER的话呢,跟另外一个呃,功能键呢会共用,那你需要呢,必要的时候配上一下这个FN啊就可以了啊好,那这块我重新的再去操作一下,首先呢,我们生成当前这个类的盖方法,哎,那我们就选这个啊,单独的你要光生成get或者光生成set,你就选上边儿的啊。
07:12
啊这呢,比如我们点这一项,呃,针对于当前的这个属性,呃,这三个呢,我们都希望呢,给他提供盖方法,你就按住这个CTRL键是吧,都选中啊,或者你点第一个按住shift键,再选最后一个啊也行啊,点OK。啊,质量就生成了是吧,然后呢,再接着啊,Out加ins,我们去生成对应的,比如说equals和方法点那个next。啊,这个根据实际情况,你看诶怎么算叫E4啊这呢,我就让三个属性呢都参与进来了。是吧,诶三个属性呢,都参与进来了啊好,然后呢,你可以再去生成对应的,比如叫图斯林方法啊,也是通过我们这个奥加in色去实现的。行这呢,就咱们对应的这样的一个方法的调用啊,诶很实用。在下边这个叫自动生成返回值变量啊,CTRL加V。
08:00
啊,这个咱们还回到这儿吧。那比如说在这儿。啊,别在这啊,这个咱们现在呢,可以这样子,嗯嗯,比如我这块还是这样吧。呃,咱们来一个,呃,上午咱们讲过这个事儿啊new啊string.new这呢相当于是一个模板了,对吧?好这样呢,我们就创建这个对象了,创建完这个对象以后的话呢,呃,一方面啊,我们通过这个al enter呢,相当于这是一个叫提示功能啊,你去给它生成一个变量。怎么给我跑这儿来了,重来啊,Al加enter来这是吧,来回车一下,这个我们叫str。嗯,加一,哎,行,这是一种情况啊,诶或者呢,你也可以这样。啊,这样完了以后呢,诶光标你在这块呢,哪都行,Ctrl alt加个V。哎,你看这时候我们也可以再回车一下,诶,生成一个变量。啊,这个呢,就是生成这个变量的这样一个快捷键啊。啊,就他。OK,下一个。说那复制啊,当然这块呢,我们是直接这个对象,你也可以呢,使用其他的一些场景啊,你比如说像我们上边这个,诶class.for诶或者咱们来个这个也行啊,比如要calendar点来get一个。
09:05
啊,这样啊,然后呢,Control加个V是直接呢,就帮我们去生成这样的一个实例了啊,你选一下你想叫什么名啊都行啊。好,然后下边。复制指定行的代码啊,叫CTRLD啊,这个呢就比较简单了,比如我们这行代码,我想给大家复制一份啊,这个呢,你直接CTRLD就行。就是我们给去复制的这样的一个意思啊,啊这个呢,比如我们叫个一啊这就是复制了,就像我们上边呢提到这样一个情况,哎,我们想把这个hello呢再输出一遍,你就没有必要呢,把它选中CTRLC是吧,然后再换行CTRLV,这个太慢了,直接CTRLD。那多方便。那就他。好,下面呢,就删除指定行的代码,这个呢CTRLY啊CTRLY的话呢,你比如说我们这行代码不想要了,直接呢就CTRLY。啊,这个呃,CTRL和Y呢离得比较远啊,这个如果是女生的话呢,你可能得需要两个手来做了啊,男生的话呢,你可能得一个手呢,跨度比较大啊,小拇指点CTRL啊这个左手的食指吧,点这个Y是吧?诶这就删除了,那比如我们把这几行呢都选中啊,你看我这块呢,没选全,光留着这一点是吧?诶光光搭到这儿了啊诶我们来一个CTRLY,你发现呢,把这一行呢就也给删掉了。
10:18
啊,是可以的。好,下边这个啊,就要切换到下一行代码的一个空位。嗯,这个呢是诶这个把它放大一点啊,这个什么意思呢?比如说这儿啊,我们现在在这儿,我现在想把这个我想在这一行代码的下边呢,再接着去写代码啊,那以前的时候呢,你可能需要把光变量是不是先调到这儿,然后呢,呃,回车一下。啊,你在这块呢,再去写代码是吧,那这个有的时候你会慢一些哈,那如果光标你在这儿怎么办呢?我们按住shift键,你再点那个回车。哎,是不是就直接可以了。诶这个呢,就比较方便一些啊,这样呢,在我们开发当中也是比较常用的这样的一个操作了。呃,或者你按住CTRL啊,CTRL加shift键,你看我们再点那个回车是不是一样的道理啊,也是这样做一个切换啊,好,但是你不能不按,你说我们光标在这儿呢,我就只想按这个回车键啊,这这成这样了,那显然呢是不合适的啊。
11:12
那么有的时候呢,我们再去调一个方法的时候呢,发现这个方法呢,调完以后需要呢,传一个参数啊,我在这块呢,比如再举个例子吧。比如说我们这块呢,去扭一个啊叫哈希。Map。哎,这么着啊,哎,我呢想给大家生成去一体一个变量啊,我可以ctrl al加一个V啊刚才我们讲过的是吧?啊光变呢,我们就到这儿了,现在呢,我想在它的上面呢去定一个变量啊,那要以前的话呢,你得需要呢,比如说把光标放到这儿,然后呢点一下回车,诶然后再在光标调到这儿,在它的上一行去写这个代码,对吧?哎,那多少呢,我们说呢,会慢一点啊,那此时呢,怎么办呢?我们可以呢叫诶使用的这个快捷键呢,是它ctrl out加enter啊。哎,比如光标呢,你随便在这一行的某个位置啊,Control out,诶加一个回车,诶直接呢就掉到这了,比如拿一个啊in特型的一个叫啊可拍哎,我们附个值。
12:03
是16,那么把这个变量这个值的话,CTRLC一下,把它C到这。那这样就可以了啊,相当于你在这个上面呢,可以去,呃,再去声明相应的一些代码的话呢,直接啊ctrl out加一个回车就上去了。就是这个意思。好下这个叫向上移动代码,向下移动代码,C shift上啊c shift下,嗯,比如说。大家你看这啊,我们这呢,是不是有个变量啊,诶我现在呢叫crl shift上啊,我们发现键上你可以呢,把这行代码是不是去移动啊,走走走走走走走走走,诶大家看我现在已经走到这个main方法这儿了,我们再点呢是点不了的了。上不去了啊,只能在我们这个方法里边呢,随便的去游动啊,到这儿你看到头了,下不去了。哎,这个呢,就是control shift上或者是下。这样一个操作,然后呢,紧接着我们再说一个叫out shift,上或者是下啊这个呢就更强大了,来你看啊out shift,哎,咱们先看,诶下巴离下比较近是吧,诶我这就拿着它往下跑跑跑跑,你看我都跑到这儿来了啊,跑到这儿呢,程一看你这这有点过分了啊,都跑到累的外面了,他就给我报错了。
13:13
哎,往上跑跑跑跑跑跑,大家你看啊。我就往上掉。诶,你呢,可以突破这个魅啊,我可以,诶跑到这个位置,这呢相当于它是一个成因变量了啊,再往上跑啊,还能跑到这儿呢,你看。哎,是不是有点夸张啊。诶,所以这个呢,就相当于是咱们,呃,这个移动呢,就范围就更广了。啊,这个呢是叫out shift上或者下,哎,根据你的实际情况啊,你看你到底是想把它生在哪。这呢是说的它,然后再下边的呢,叫方法的行参列表的一个题型啊,CTRL加上一个P。哎,CTRL加个嗯这个呢是这样子啊,你比如说我现在呢,去一个string,咱们在这个new string的时候,你看我这块呢,加个这块加个小括号啊,这个写完以后的话呢,诶目前呢,会给我有一个提示说呢,你这个string的这个行参啊,你看你想写哪些参数是吧,但是呢,大家注意,一旦你把这个光标了,你调走以后,你再把光标调回来,这个参数呢就没有了。
14:12
你说我现在想看看,呃,这个我调哪个我也不太熟悉是吧?诶我想看看你当前这个,呃,方法也好,构造器也好,里边都有哪些参数啊,这个再怎么看呢,你只需要呢,使用一下叫CTRLP就行啊P呢就para matter的意思了,参数是吧?这时候呢,你就能够看到当前你可用的这样的一些参数都有哪些。啊,下边你就去写就完了。是吧,你比如我们现在想用的就是第一个啊,那你这块呢,你就写一个hello啊这个自然而然的它就匹配的就是诶跟这个对应的这样的一个哎,构造器了。啊,这是这样个情况啊好。这儿呢,是我们说的。哎,把它生成一个变量吧。关于我们这个CTRLP啊,它的这样一个场景。哎,这就过了,好,接着我们来看一下这个第三组啊。这个还是呢,提高编写速度的。来,我们把咱的盯一下。
15:02
哎,先看第一个说呢,批量修改指定的变量名,方法名,或者叫类名呢,那这呢叫shift加F6。啊,Shift加F6这个修改的话呢,其实针对于咱们当前的这个文件名,包括咱们这个,呃,叫什么。呃,Mo名也都适用啊,比如我们shift加上你看这呢,是不是就让我们选择去修改了,它跟咱们在这个位置呢,去点右键这有一个rename啊是一样的,那shift加F6。那你比如说针对我们当前这样的一个,呃,原文件的一个名称,我们想改一改啊,Shift加上F6。啊,比如说这个位置呢,我想把这个M呢,把它改成是个小写的。就这样就行是吧,来一下你看我这样就修改了。好,那么回到咱们这个程序的位置啊,嗯,比如说呢,我们针对这个I tr2啊,下边呢,咱们可以给他加上几行这个操作啊,一方面呢,打印一下啊,另外一方面呢,给他在。哎,比如说加上一个呃,Word。
16:01
哎,这样是吧,好这呢,针对itr呢,我们下边有几行的一个操作啊,现在呢,我想把它呢做一个修改,我们来一个shift加上六。啊,你比如说我这块我想改成的啊叫ST2,哎123。诶,大家你会发现呢,凡是使用我们这个变量名的位置呢,都同步的做了一个修改。哎,这呢,就是我们这样的一个快件,它的一个使用。诶,熟悉一下啊,熟悉一下,那要演示个方法的话呢,比如说public static word,我们这写个method。哎,在这里边是吧,哎,比如我们写一个啊叫hello,然后呢,在我们这个may方法里边,咱们去调用一下这个method,是不是就这样啊好,然后在这呢,我们shift加上一个F6,哎,我把它改成叫method。METHOD1,你看我们回车一下同步的呢,诶使用到这个方法的位置上,你看也都改了。这就是他。挺好用的啊,好,下一个说抽取代码重构为一个方法啊,Control加一个MM就是me的意思。
17:01
嗯,你比如说咱们把这样的三行代码呢,我想给它抽取出来,造成是一个方法。啊,有的时候呢,我们在一个类当中是吧,呃,一个比如说main方法里边啊,这个写了一段操作啊,后来呢,发现呢,另外的方法里边也要用这段代码了,咱们就可以考虑呢,把相同的这段代码给它抽取出来。啊,这是一个场景啊,另外的话呢,咱们在一个文方法中当中啊,呃,不要呢,写这个代码量特别长。啊,以前我听说过一个同学,呃,给我吐槽呢啊,说毕业以后呢,到公司里边啊,接受别人写的这个代码啊当时呢,看到一个类中那个方法呢,就开始骂娘了,就啊说一个方法写了七八百行代码。啊,一个方法啊,特别扯是吧。啊,这个呢,大家一定要注意啊,咱们写代码要遵循的叫高内聚低耦核是吧?啊这个你相应的给他把方法呢,该抽取就得抽取啊。比如这里边呢,我们就想把这样的几行代码做一个抽取啊,造成一个方法,那这呢,我们叫ctrl alt加M啊。CTRL加M,诶,你看这时候呢,就我们抽出来了,你可以呢起个名字,比如我们叫METHOD2,诶。
18:04
这样的就行了。啊,那由于呢,咱们这个方法呢,是直接呢从may方法里边抽的,所以它自动的把这个方法呢,也生明成是静态的了啊,那如果我们是把这个METHOD1里边举个例子啊,把这个呢再复制几行,把这样的三行代码我们给大抽出来啊CTRL再加一个M。这个呢,我们比如说叫METHOD3,哎,这个时候这个方法。这个这个我们拿着演示也不合适了,这个还是个静态的是吧,这个我再重新换一个啊。比如在这儿,Public world。哎,我们写一个啊,叫method的三。好,这呢,我们把这样的三行代码啊,我CTRLC下吧。粘过来是吧,好,我们把这两行代码呢,给大家抽取一下啊,CTRL加一个M,诶你看这时候它生成的我们这个方法呢,它就不是一个静态的了。嗯,我这是有重名的吗。哎,先取消一下啊。啊,没重名的啊。嗯。呃,这个呢,就是我们叫METHOD4啊,因为呢,这个METHOD3呢,不是静态的,所以抽出来的时候呢,也就不是静态的,默认呢,抽出来的方法都是private的。
19:08
啊,就是私有的是吧,那管带类的内部呢,被调用哎,这样的一个情况啊。好,这就过了,比较简单是吧。好,下一个啊,说那叫重写父类的方法,哎,Ctrl o。嗯,比如说啊,我们现在针对于当前这个person类呢,我们再去提供一个叫student,让这个student呢,去继承一咱们这个a person类。没问题是吧,好,然后在这个P类里边呢,咱们不妨给大家加两个方法啊。诶,Public avoid啊,比如我们写个E的方法。哎,打印一下啊,这个我们叫哎person冒号啊E的方法。再来一个。Avoid,咱们来一个叫哎,Sleep吧。好,后边我们来一个啊,叫sleep。那这样的一个方法。啊,那么我们在P里边呢,有一些方法啊,回到咱们这个student这个层面,我想呢,把负类中的一些方法呢,做一个重写。
20:06
啊,这时候你注意student它的负类呢,除了person之外,Person的负类是不是还有object呀,所以我们要重写的时候呢,你看它提示到什么程度啊,Ctrl o。Over。这时候你会发现呢,他不光把person列出来了,Object呢也给列出来了。啊也给列出来了,好,那这我们就可以考虑,比如说针对it方法啊,你可以按照CTRL键啊,诶Li方法,哎,包括object当中的啊,这个C方法,如果你也想重写啊,我把这几个呢都选中了,这时候我们点一下OK。哎,你看这时候呢,就给我们呈现在这儿了。默认那里边啊,它就掉了一个super了啊,如果你不想掉它,你再重新在这里边去做一个编写就可以了。对吧,诶这呢,就我们说要重写的一个操作,就省着呢,我们再去P里边你找一下,你说哎呀,我们要重写哪几个,诶回来这块呢,你再去啊一个呢照着去写,这有点慢了。啊,尤其呢,当我们后边呢,随着业务呢不断的增加,咱们在这个类里边呢,可能写的方法呢很多是吧?诶然后呢,你回到student这块呢,我们直接呢调control啊,你可以选择哪一些做重写啊很方便。
21:11
下边一个呢,就是关于实现接口中的方法,这个呢叫I了啊,怎么着呢,比如说在这个student这块呢,我们来一个叫implements啊,这呢我们写一个叫comparable吧。啊,写完了啊,那下呢,是有这个抽象方法的,那我们当前这个类呢,必须要实现这个抽象方法,否则呢,你就啊得是个抽象类了啊这块你可以啊ctrl I一下I呢就是。啊,当年comparable里边呢,只有一个抽样方法,那我们这块只需要把这一个方法呢,做一个重写就行,对吧,那如果说我这块呢,举个例子啊,我加一个逗号。哎,如果呢,你还有其他的啊,比如我们再来一个randomable啊,这时候你再ctrl I。啊,对应的这两个接口下边你看都有啊,是不是对应的这个,呃,抽样方法,哎,你又得把这两个呢,都给大家重写一下啊,这个我们点一下OK。
22:00
哎,是不是就在这儿了,诶因为我光标呢,刚才放在这儿了,所以他就给我写到这儿了啊,比如我这块呢,把它呢再做一个CTRLY啊这样的一个删除,哎,把光标呢,我们放到这儿,哎,我在呢CTRLL一下,哎再OK一下,是不是就给我们写到后边了。哎,这样就行啊。好这呢就过了,下边呢叫选中的结构的大小写的一个切换。哎,回到我们这个K这块啊,比如说。啊,比如说我们回到上边吧。哎,像这呢,我们是定义了一个变量啊,前面呢,如果我们把它声明成是一个final的话,这就是一个常量了,常量呢,我们说通常都得是大写的,那这时候呢,这个number我们就要给大家呢,呃,改一下啊,全部改成大写,呃这呢就ctrl shift加U。啊,U呢,就是up的意思啊,你在ctrl shift加点一个U啊,这就是大小写之间可以切换了,就。哎,这个注意一下。好,下边这呢叫批量导包啊,这个呢,其实咱们就用不着了啊,因为呢,咱们在第五个专题的时候呢,讲设置的时候呢,是不是已经设置过自动导包了,是吧?啊你把这一自动就给我们导过来了,咱们也用不着去手动的再去批量导包了。
23:06
嗯,那这块呢,咱们就呃讲到这儿啊,先说这一波。
我来说两句