00:00
好,那接下来的话呢,我们再讲一下最后这个关键字啊,这个我们叫做啊inport的关键字啊,它的一个使用,哎,我们还是在这儿来说啊第二个。嗯,Importt啊,关键字的一个使用,好呃,我们最初呢,开始用importt的时候呢,应该可以追溯到使用scanner,对啊,使用scanner啊,就是这个scanner的话呢,我们上来呢,写了一个importt啊,写完以后呢,我们就可以在这去用了啊这呢就是它第一次首次出现啊,那首先我们提一下这个port的它的一个作用啊,它这个翻译的话呢,叫做导入。哎,这个叫导入啊,这个我就把它就不叫一了,直接它就是导入啊,一个翻译,那import什么意思呢?说我们呢,可以在一个原文件当中啊,显示的使用import的方式呢,导入指定包下的某个类啊,或者是后边要讲的接口啊,说在原文件中。
01:07
啊,显示的。哎,使用这个import这个结构啊,然后导入指定包下的。啊,这个类,或者我们后边讲的这个接口。啊,结果我还没讲,大家呢,目前就先按照这个类呢,我们去体会啊,呃,举个例子呢,比如说我在这呢写个may方法。哎,导入指定包下的结构,指定包下,比如说我就写这个scan啊,Scanner就已经说过了啊,换一个ari,哎,Ari这时候呢,我们这个调它的一个结构啊,比如说叫调个图润吧。哎,这个我们去拗一个具体的int型的数组。呃,123哎,就调这个方法啊,这个我们中心呢,不是想讲这个方法具体怎么用了啊,哎,这我接收一下这个输出信息啊,就叫info吧,我这呢用到这个ara,哎,你会发现呢,我们上面呢,这导入了啊,就我们刚才调的时候呢,自动写了,哎如果你要没写这块就报错了。
02:13
啊,那这时候呢,他就说你这个race到底是哪的呀?哎,我们说呢,我是用的,哎YouTube这个包下的啊,在我们eclip当中,把光标往这一放,点一下就出来了。啊,就出来了啊,那这个它自动呢就生成到这儿了,你也能看到它所属的这个位置啊,哎,我们说声明在,哎声明在我们这个package啊包的声明。哎,胞的声明,哎和我们这个类的声明之间啊。啊,这是它声明的一个位置啊,这是第二个点啊,啊声明在这就可以了,那我们想用哪些包下的类,你就在这声明就可以了,那如果要有多个的话呢,哎,我们说多个inport的语句呢,就是并列着往下写。
03:03
啊,比如说咱们接着呢,想使用一下咱们自己定义的啊,比如说像这个bank,哎,我这呢bank bank等于new一个bank。诶,写完以后back的话呢,也需要我们去import一下,哎,它就自动的写到下边了,如果还有再接着往下放,哎再来一个,比如说我们这个叫a list,后边我们要用到的一个类啊,哎,我造了一个list,哎它呢也不知道是哪的,往这一放一看,好在这里点一下,哎这就过来了啊这就说啊,如果呢,需要导入多个结构啊,那就并列的写出即可啊。则并列啊,写出啊即可。啊,这是我们说的这个第三个点啊,那么接着看啊呃,大家看我这里边呢,有两个结构呢,都是我们这个U这个包下的,那回头呢,我们还可以再写啊,比如我能写这个结构,这个呢叫诶嘿诶哈希,比如哈希map。
04:10
嗯。哎,我们去new一个h map这个结构呢,你发现诶它也是这个U下的,那可能还有其他的,呃,我们这个U下呢,就用了好多了,那这时候呢,我们其实可以给它们都合成一个,对,就是这呢画那个星。啊,你要把这个删掉了,那肯定这这几个就都报错了,这三个都报错,然后呢,CTRLZ啊给它带上,哎星呢,咱们其实也有过类似的经验了哈,这就表示呢,它导入的是这个包下的所有的结构。啊,在这写一下啊,并列写出就可以了,那么也可以呢,啊说这个可以在使用啊,比如说我这样写叉叉叉。点星的方式。哎,这个叉叉叉呢,这样我们给它这个加上这个双引号啊。
05:03
哎,使用叉叉叉点星的这个方式呢,哎,表示这个可以导入这个,哎,这个叉叉叉这个包下的所有结构啊。哎,所有结构啊,就都可以去用了,包括呢,咱们说的这个scanner。哎,Scanner这个我就叫S了啊,我就先生明成个no,哎,Scanner也属于咱们这个U下的,哎,但是由于你上面点星了,所以呢,这直接呢就可以去用了,好,这是咱们说的这个问题啊,那再接着嗯,再接着的话呢,我们说一下这个事儿啊,咱们呢,嗯,这个在第一天讲课的时候呢,咱们就在这个位置出现过string,包括呢,咱们也写过这个system.out点诶print LA啊这呢我写一个hello。你会发现呢,诶你这个string跟这个system,这不也是累吗?是不是也没看到你去导包吧。
06:06
诶对,这里边儿的话呢,我们要特别说明一下啊,像这个string和这个system呢,它属于我们这个Java的一些核心包。诶所谓的核心包呢,就是我们用起来频繁,这个频率比较高的啊,他就认为是一些核心了。啊,这些核心包的话呢,都定义在浪包下了,定义在浪报下的这些类或者是接口,我们呢就不用再导了,默认呢就可以用啊所以就是这第五个点说哎如果哎这个使用的这个类或接口,哎是Java点浪包下定义的哎说则哎可以省略。哎,对,省略这个import的这个结构。诶可以省略这个importt结构,那那类似的话呢,还有一个就是如果我们这个调用的这个结构呢,是我们当前这个包下用这个这个定义的啊,像咱们这个package import这块,我这写这个person test,咱们这里边这不定义过一个person嘛,这好歹也算是你同一个包下定义的啊,那我在咱们这块,诶你看我这样去写个person p等于new一个person,哎,你看这也不报错,这时候person呢,就是咱们自己这个包下定义的。
07:28
啊,那也就是说,如果我们使用的这个结构是本包下定义的,那也可以不用倒。哎,如果使用的这个类,咱们把这个接口都带上啊类或接口,哎是本包下哎定义的啊则啊也可以省略。这个这个。啊,这个呢,其实也很好理解啊,这个问题就也给省了啊,那杨IG呢,就是你要调用的是其他的这个包下的,或者是我们这个,呃,Java API里边的一些非浪包下的这个结构,都需要我们去显示的port。
08:12
啊,显示的去port去导啊就可以了,行那下一个问题。啊下什么问题呢?就是我们现在基本上已经关于这个引炮呢,说的也差不多了,但是呢,在实际开发当中呢,发现确实还是会出现一些问题的,什么问题呢,比如说大家看我现在呢,在咱们这个类下啊,这个包的这个肋下,我呢想用这个account。说想用,想用你就掉呗。是我想用它的同时呢,我还想用它。这两个呢,哎,麻烦就麻烦在同名了,对吧。嗯,那你想想,我们如果这两个都想用。是不是有点难度了?
09:02
哎,这就对,这就出现一个问题了,比如说咱们先看这个ecr,这个四啊,在这里边呢,咱们有一个构造器,就光放了一个参数这种啊,那咱们在这呢,先用一下,我这呢就写一个account act啊,New一个哎,Account out斜杠一下,这个时候咱们先用的是这个四里的,哎,我这呢写上个1000行,这个时候呢是这个四里的,自然而然的上面也会有一个这样的import。啊,那现在呢,我们还想用这个三的三的呢,定了一个1233个参数的构造器,我还想用它。那那怎么写啊。你要你要你要这样写说account a new,一个account,咱们那个构造器长这样子哈,ID balance和利率啊,ID写个1000BALANCE2000块钱,利率零点啊1230123。
10:05
啊,洗完以后呢,你看这块就打叉了,说我们这个构造器呢,根本就没不存在,因为你看这个前面这个坑呢,他认为你还是四里的。这这这怎么着,加一个包名加到哪呢。就是你要在上边倒,这个时候呢,显然是不行的了啊,你像我这个呢,你说我对应的,我就再把这个三里边的导进来,那这俩本身长得都一样,那下边到底是用的三用的四的编译器都懵了是吧?所以这个时候呢,你想通过上边写引泡的这种方式呢,不靠谱了。对,那只能是这样来做了,在这个account前面呢,我们只能是把这块的这个名字写全了,哎,咱们是com点艾特硅谷点EX123下的这样的一个类。那你new的呢,也是这个下边的这样的一个,诶对象CTRLC,然后在这CTRLV一下。
11:06
只能这样来写了。哎,看着呢,就感觉可读性呢,就差一些,但是呢,没有办法,哎,谁让你这里边使用两个透明的了,哎没有写的这个呢,那就是用上面的import了啊,那你这个透明这个呢,只能是这样来写。啊,只能这样来写了。啊啊,首先呢,我们把这种写法,把它呢,叫做这个类的一个全类名啊,这种就全类名,就是你这个类到底是哪个包下的啊,这叫全类名了啊所以我们这块呢,说明一下说如果在原文件中,或者叫啊嗯行原文件中啊。说如果在原文件中说呢,使用了不同包下的,咱们那会儿讲包的时候说过,说不同包下是可以有同名的类的啊说你恰好呢,在这原文件中还使用了不同包下的这个同名的类,哎,那么我们说则啊必须啊,至少啊有一个这个这个类呢,呃,需要。
12:11
啊,以这种全类名的方式呢进行显示啊。哎,全类名的这个方式呢,哎,这个显示。哎,这也就是说这种方式啊,这呢,我们就把它呢,叫做这种全类名的方式。啊,这个显示。嗯,这个后边呢,我们讲到这个反射的时候呢,也会提到这种全类名这个概念啊,就是包含这个包的这个,呃,路径在内的这个类的一个,这个完整的一个路径名就叫做全类名。啊,就是这个意思啊,嗯,实际上哈,实际上呢,大家想这个事儿正常咱们写这个Java代码呢,其实呢是都需要这样去写的啊,你像这个呢,String就是Java点浪下的啊,你这个a release呢,你就是Java点哎YouTube下的,实际上我们写的话呢,都应该这样去写,只不过呢,就是这样写呢,可读性有点差啊,就是写一个结构呢,前面整了一堆是吧,可读性有点差,所以说呢,咱们说干脆呢,要不让我们这个代码呢,看着干净一点,咱们呢整一个关键字叫importt吧,诶加了一个importt说诶我呢就导入说浪包下的它或者说呢,是咱们这个,呃,这个U秀包下的这个release,你上边写了in part以后,所以我们下边这个可以简化着写了啊其实从这个过程来讲呢,实际上是先有刚才这种过程的啊,所以我们后边呢,就写到用一泡的写到上边了,但是如果你这时候呢,出现俩同名的了,那你这个呢,其中有一个还得使用这种原始的方式。
13:45
感谢。啊,其实呢,就是这么个意思啊,那有的同学可能也会想说,那真的开发当中还真会有这种情况吗?诶确实呢,也会出现,你比如说呢,像咱们Java当中啊,比如我这时候ctrl shift t一下啊,哎,我那搜一个类,这个类呢叫做date。
14:02
啊,Date呢,就是日期的意思啊,这个date的话呢,它就比较特别,它既在咱们这个U下呢,有一个date类,对在我们这个circleco下呢,也有个date类,哎这两个的话呢,还都有,都有可能出现在咱们这个程序当中,那你要是在同一个原文件里边出现这两个date了啊,那你也只能用这种方式啊,你就比如说我这写个data。嗯,然后date等于new一个date。哎,然后这时候的话呢,哎,他没报错,这个是因为我们这个date呢,你前面上面不写着U点星嘛,哎,他就认为你是U下的了啊,但是如果现在你还想用这个circle下的只能是java.circle.data哎,DATA1又一个,哎,java.circle下的这个data。啊,这个呢,它又没有这个空三的构造器啊,这个里边呢啊,还得你写一个这个其实就那个毫秒数了啊哎,给大家定义一个,哎先保证它先不报错了啊哎只能是这样的进行一个区分。
15:05
能理解是吧,行,这是一个事儿啊,然后嗯,第八个事儿,第八个事儿的话呢,这是一个小的问题了哈,但是这个事儿呢,也需要大家关注一下,嗯,就是说嗯。看这个事啊,我们这是一个JAVA2,嗯,JAVA2这个VA2呢,是我们定义的这个包,我现在呢,我再定一个这个包啊,JAVA2下我再定一个JAVA3是二下面的一个子包,我把这个二下边又点了个JAVA3,把这个点JAVA3呢称作这个JAVA2这个包的一个子包啊,然后这个包下呢,我定义一个类,比如说我们定一个叫dog。狗是吧,那问你说我在这个JAVA2这个包下,我想用这个dog,还用我去import吗?感觉上不用是吧。
16:03
哎,那写完以后的话呢,这时候是不是又需要往这一放,需要倒一下啊,那就是说用。啊,那类似的还有其他的一个问题啊,就是这样个情况说嗯,这样这样说吧,说如果呢,我们去使用啊,比如说啊XS点星的方式啊或或这样说吧,说使用XS点星的方式呢,说表明啊可以。哎,调用这个叉叉叉这个包下的所有结构。哎,所有结构啊,但是如果使用的是这个叉叉叉的子包下的结构。哎,如果你使用的是它子包下的结构,则需要,则这个这个仍需要啊,这个显示导入。
17:01
就是说呢,我们这个时候这个叉叉叉点星,它这个星呢,只能是考虑你这个星的代表的是这个类或者接口这个呢,可不表示子包。啊,它不表示子包啊,那那类似的问题,比如说呢,大家看这个我们在API里边有这样的一个啊类啊叫field啊。哎,我这先写个闹了啊。这个field呢,它是在哪呢?诶我们一点,咱们用的是这个long包下的子包叫reflect。哎,用的呢是这个结构啊,这是我们这个field,按照咱们刚才的想法好像说,诶这个浪包呢,不用导了,但是呢,你不是浪包,你是浪包的子包,这个就跟浪包没什么关系了,哎,那你这时候呢,该倒还得倒。所以大家呢,你就就看这就行啊,只要你是这个包下的,你你要在这里边去用别的都没问题,你看我们从这个角度去看,它俩是不是也算并列着写了,只要是并列的写了,你就把它看成是两个不同的包就行了,所以说呢,你在这个下边,你想用这里边的dog,那该倒还得倒。
18:06
啊,咱们俩呢是并列着写的,不要认为呢,它就是你这个下边的了。啊,是这个意思啊,行这呢,我们就写了这八个这个点啊,再再补一个啊,再补一个的话呢,我们提到一个,呃,这个是咱们后边呢,其实才会涉及到一个概念啊,就是这个static这个关键字的意思,我这都写上了,叫import static,哎,它呢表示的意思呢,就是导入指定类或接口中的静态结构。这个static咱们还没有讲,但是实际上咱们也都用过了啊。哎,怎么就要用过了呢,像咱们像咱们写这个system.out诶没写一个啊,哎,system.out这我写一个hello。哎,你可能会看到system不是一个类吗?类还可以去点一个东西呢,这个你从结构上来看,它显然是不是一个属性啊,要调方法,方法怎么也得一个小括号吧,对吧?哎,这个显然是个属性啊,哎,这个属性呢,比较特别是咱们这个C这个类里边的一个静态的结构。
19:19
哎,静态这个事儿呢,咱们后边再讲啊,其实也翻来覆去提过好几次,你就知道用这个修饰的就叫做静态了,它加了一个static,它其实是我们这个类中定义的一个变量了啊,其实准确的说它是个常量,因为它用它修饰了啊啊是一个是一个属性啊,这没毛病啊,那么它这个结构的话呢,我直接用这个system来调了,那你像我这时候呢,可以这么着去写一下啊。写到这吧,我这呢这样写叫import,叫static,这个system呢,是咱们java.lu下的来,我这写个system点儿,我写个星。哎,表示的就是我可以呢,使用system这个类下的静态的这个结构。
20:05
那你看这时候呢,我就可以把这个system点呢删掉了。哎,因为这时候out呢,它能够自动的找到你这个out呢,就是用的这个system点这个的。啊对,就是这个意思了啊,包括呢,咱们说的这个,比如说M点,我去开一个方,哎,写个减,写个round吧,来让写的12点啊这个。哎,这呢,我们就得到一个四舍五度一个值,得到一个long形的,这个我们就简单接收一下啊,这个number了,这个mass下的这个round呢,是它的一个方法,这个方法的话呢,前面也有这样一个标识。哎,那这时候我们就可以这样了,我就诶import static Java点包下的这个math不能到这啊,就是port sta呢,它的落脚点不是一个类import的,我们落脚点都是一个类或者是一个接口了啊,它的落脚点一定是它这个类中的一个结构。
21:11
我点星了一下,你这个点星过我此时的这个max点呢,我就可以给它省略掉了。哎,其实你用的还是这个ma里的。哎,所以这个时候我们这样总结啊,说一半这个可以导入指定的这个类或者接口中静态的结构,它这个落脚点是这个类或者接口中的结构。啊,这个结构具体来讲呢,你就可以使这个属性,哎,或者是是方法。哎,刚才我举的呢,这个就是属性,这个呢,就是一个方法。啊,而我们这个importt它的落脚点呢,是这个类或者是接口。啊,它的落脚点是类或者接口,这个import static落脚点是属性或方法,这个呢用的也比较少啊,大家听一听就可以了,哎,主要呢,还是我们前面的讲的这样的一些点。
22:05
啊,前面讲的这样一点,这这样一些点啊呃,这边具体的我把这个点呢,其实也都呃写到这个里边了啊这个里边了啊行,那那这呢,就是我们关于这个呃,Package和import这两个关键字的一个使用啊,实际上呢,咱们前面也都在用了啊,就是基本上使用的话呢,就像咱们前面那样应用一样,只是说呢,如果有一些特殊情况的话呢,哎,大家可以参照一下我们这里边讲的这些细节,哎,看一看就OK了啊。
我来说两句