00:00
好,那么关于这个方法的这几个点呢,咱们就告一段落了啊,然后下边的话呢,我们讲两个关键词的使用,诶这两个关键字呢,相对来说呢,还比较简单一些啊,所以我们整个呢过一下啊,诶分别对应的呢,叫做package和import。呃,虽然说比较简单吧,但是在咱们平时写代码当中呢,还是离不了的,呃,首先的话呢,我们来看一下这个叫package啊,这个首先呢,这个package呢,一般呢,咱们习惯上这些关键字呢,都稍微的翻译一下啊,这个package呢,你要翻译过来,那就是包。是吧,哎,就是这个包的意思了,OK啊,呃,那它呢,刻画的是一个什么样的意思呢?哎,作用是什么呢?哎,我们看一下。说这个package我们称为包,它用于指明该文件中定义的类或者接口等结构呢所在的包。哎,这呢就是它的一个主要的一个意义啊,诶我们把它呢就写到这儿,这呢,如果算成是一点的话呢,下边就我们的一个新的一点啊。是吧?呃,用于指明该文件中定义的类或者接口所在的包,诶你比如说咱们前面呢,写的这么多的这个代码啊,诶随便呢,你打开这样的一个文件,这个文件里边呢,我们说通常都定义了一些类以后呢,我还会讲接口,还会讲枚举类,还会讲注解啊等等一些结构啊,那么这些结构呢,我们都给它分配了一个包这样的一个概念。
01:18
啊,就在咱们这个代码呢,最上边啊,有一个叫package前边啊,这个在第一行这个位置呢,就指明了你当前这个类呢,它所在的这样一个包的概念,你是哪个包下的。这样的话呢,我们后期呢,在使用啊,或者叫调用这个类的时候呢,就比较方便了,哎,我就想调用哪一个包下的这样的某一个类。啊,OK,就是这样的概念,呃,如果呢,我们把这个文件当中的这个类啊,咱们看成是具体的,比如说每一个学生的话哈,相当于呢,我们就得说清楚,诶,这个学生是哪个班的。啊,那其实呢,就呃有个什么样的一个概念呢?你比如说这块呢,就是我们一个具体的工程了啊,或者说具体的一个项目了,这个项目里边呢,我们写了非常多的这个类啊,咱们叫做class了啊呃,那假设呢,就达到1000个以上了。
02:08
啊,那么这么多这个类的话呢,你回头呢,相互之间会彼此调用啊,那你处理起来的话呢,就非常的繁琐啊,往下一拉上千个啊,想找哪个呢,都找不着。哎,就跟说呢,比如我们有1000多个学生是吧,这块我们管理起来就非常的困难了哈,怎么办呢?诶我们考虑呢,给大家就分成不同的这个班级了,就是吧,诶那这个班级呢,在我们这儿呢,就类似于这个包的这个概念了,所以呢,我们可以按照具体的一个功能哈,做一个划分,诶说你这些类呢,是啊这种功能,诶这一类呢,是这个功能,我们就把他们放在不同的包下。哎,就有点类似于呢这呢,比如说咱们看成是1000多个学生,咱们就分成不同的这个班级了,诶有的呢是前端的,有的是大数据的啊,有的是UI的啊,有的是咱们Java的啊,有的呢是其他的方向的,诶分成不同的班级啊,当然咱们实际情况呢,还会按照不同的这个入学的时间呢,再去细分一下。
03:01
那我们这儿也同样的一样是吧,真正这个项目比较大的话呢,我们还可以分成后边我们要讲的,比如这个MVC的这种设计模式。啊是吧,你专门是跟这个界面交互相关的,我们就放在这一块,这个呢是控制层相关的啊,这个model层相关的,我们就放成不同的这个层啊,这一层当中呢,又可以分成具体的好多的包。诶,然后诶包下呢,我们去放具体类,等回头呢,我们这个代码出问题了,诶你看看是跟用户交互的界面层面的问题,还是处理这个业务逻辑的问题,还是什么问题,还是跟数据库交互的问题,直接呢,我们就定位相应的层级上的,相应的包里边儿去找这个问题了。所以就更加的方便啊,这个呢,就是我们为什么要引入包这样的一个概念了。OK啊,诶像之前咱们一开始讲这个工程的时候呢,当时我们说呢,在这个工程的src上,Src下呢,也可以写代码,当初呢,咱们写的时候呢,我就直接在这里边写了。哎,所以当初呢,你看写的这些文件对应的这个类呢,上面就没有package了。
04:01
那这种呢,我们称为它叫无名宝是吧。呃,就算这包里没名了,这个类呢,现在也没有说具体哪个包下了,呃,以后呢,大家写代码的时候就不要这样去写了。啊,你这里边儿写多的话呢,这个引用起来就不方便了是吧,所以以后我们再去处理这个,呃,声明文件啊,声明文件里边具体的这个类啊的时候呢,我们都要给他指明一个包的概念。啊,你像我们在这个包下呢,如果去创建一个具体的class是吧,这个我们比如说就称为那叫package。啊import,诶关于它的一个测试,诶这个呢,你是在这个下边创建的,自然而然这个类呢,诶就所处诶就处在这样的一个包下。哎,其实很好去理解啊,行,那么关于这个包的使用的话呢,这个首先有个语法格式啊,这个一个包具体个点点,后边还有这个呃,具体的另外一个名,呃,相互之间是什么关系等等这样一系列呢,我们有一个说明,咱把这个说明呢粘过来啊,往这儿咱们看一下啊。
05:03
行,这个我也换成这个短横线了。诶,看一看啊同志来用到一个原文件只能有一个哎,声明包的package语句。这个很好理解哈,上面就这一个就行,你不可能写两个排。因为你写两个的话呢,这俩肯定也一样哈。你这个在哪个下边,这不就在就就是哪个下边,你写两个一样的没有意义是吧?诶所以呢,我们这块就只有一个package的语句啊,而且呢,把这个语句呢,我们一定要放在整个这个原文件的开头。啊,开头呢,就这就算开头了,哎,你说换永好这算开头不。这是不是都算?对哈,就是你上面有个空行,这无所谓。以后呢,我们讲这个叉帽文件的时候呢,它会前面也有个声明。哎,插码文件,比如说你的这个使用的语法的是哪个版本的,呃,使用的字符集是什么,他呢,也要求放到开头,那个开头是真的得放第一行啊,你来个换行,他就这块给你报个错是吧。
06:00
要求你得放到第一行,看咱这儿的话没有这么严格哈,只要放到开头就行,但是一般的话呢,前面也不会加一些换行啊。好,如果缺醒呢,就是无名包,咱们刚才也说了,以后呢大家就不要这样写了。啊,注意啊。好接着啊,说这个包名的话呢,它属于标识符。诶,满足标识符命名的规则和规范,诶当时我们讲规范里边呢,其实没有细说它,诶这块强调一下,全部都是小写的。哎,你看我这儿呢,Src下啊,这些你看全部也都是小写的。写大写呢,报错吗?不报错,因为它是规范嘛。诶,但是呢,大家你还是要遵守的啊,诶下一个呢,叫做建明之意是吧?诶凡是标志书我们都讲叫建明之意啊,那这块我们在命名的时候呢,有一个约定俗成啊,诶前面也稍微提到过这个事儿,就是诶比如呢,我们去给某一个公司呢,写这个项目,可能是你自己的公司的热,咱商务,咱们有商务的官网,还咱们鼓励学院是吧?诶那我们再去写这个项目的时候呢,下边这个报名呢,因为都是咱上硅谷的了。
07:05
所以呢,一般都会我们以公司域名的倒置。啊,来写啊,比如咱们不是艾特硅谷点com吗。诶,我们就com点艾特硅谷了,诶后边呢,可以根据你这个包的具体的功能。哎,我们再去写这个叉叉叉就行了。总之呢,也是一个建明之意的一个情况。OK啊行,这个呢,就是他如果呢,你要是一个外包的一个项目啊,你是外包人家哪个公司的项目了,这块你就写人家那个公司的这个域名的这个倒置就可以。嗯,这是他啊,行,这个以后大家别这个练熟了,然后到公司里边写项目,上来就看家的硅谷了是吧。看你们自己公司的哈,诶这个注意一下好,然后这块在命名的时候呢,给大家呢,呃,强调一下啊,不要是Java点开头的。啊,就这个意思啊,你比如说在我们这个下边啊,这不都是吗?你上来src啊,我右键啊,去新建一个,这不有个package吗。哎,新建一个包啊,包这块呢,我们叫做哎Java点啊这个艾特硅谷是吧。
08:05
这样写的,这不就成这样了吗?哎,这个呢,大家不要这样去做啊。比如这块我们就写一个叫package,哎,它的一个测试。啊,写个没方法,写个hello是吧。哎,就这样吧。啊,我们去做个rap。是不是报错了?说呢这个呃,这么着啊,这个有个安全性的exception啊,这呢,因为你用Java开头了。呃,这个呢,去哪讲理呢。去哪讲理呢,这个说多了,就是说涉及到呢,就是我们在运行这个代码的时候呢,我们得呃执行main方法,Main方法呢,需要就涉及到这个类的一个加载了。这个类加载的时候呢,我得知道你包在哪,我是不是就看到是这个包了。诶,那么这个这个类加载的时候呢,我们以后讲GM的时候会提到啊,它用的类的加载器。啊,就是有一个哥们专门就负责加载这个类的,把它放到那个方法区里的哈,诶,那么他在加载的时候呢,他得看清楚说你这个类是哪个包的。
09:02
他看到是Java开头的,他就特别敏感。他一看到Java开头的,他就认为呢,是咱们JDK提供的那些API了。哎,所以他一看到Java开头,他就去Java提的API呢里边去找了,因为咱们这个API是不是都是Java开头的是吧。诶,他就寻思找,结果找的话是不是没找到。哎,他就给你报错了。啊,那么为什么他非得一张话开头就认为是JDK里的呢?这就涉及一个安全机制的问题了。啊,就是诶,包括以后呢,讲到双亲委派机制啊等等的啊,比较高级的一些内容,总之啊,大家你就记住这个结论啊,咱们自己在命名的时候呢,你不要扎哇点啊。但是你可以写成com点点。知道吧。呃,点Java放到末尾行,你别上来就Java开头不行。啊,这个大家注意一下这个事儿啊,我把这个呢,就。就在注释了啊,也别执行了。好拉回来啊,所以这个呢,大家要注意哎,下边说呢,包呢,对应于文件系统中的目录啊,Package中的点啊,我们说呢,用来指明一层文件目录,每点一次呢,就代表一层文件目录,诶这个呢也很好理解啊,咱们想看一下这个文件,比如它呢,诶在哪叫open in啊,Explore。
10:21
哎,这个呢,我们就打开这个文件目录了啊,那刚才呢,我们看到了他呢,所处的这样一个包啊,是这个包。哎,是在这儿的啊好,那对应的这个文件目录我们就能看一下啊呃,这个呢往上找,诶这个往上找这边就一层,对应的就是这一层,诶再往前的话呢,这边爱特硅谷这一层。哎,再往前的这个,诶,Com这一层,所以你再顺着走呢,就是com点有一层艾特硅谷零六啊点又一层啊又一层。诶,所以每点一次代表一层文件目录。啊,这个呢也很好理解。好,下边这个啊说呢这个。同一个包下呢,可以声明多个类或者是接口,那这个咱们以后再说接口的事啊。
11:04
啊,一个包下有多个类,这很正常啊,诶,但是呢,不能定义同名的类。很显然吧。啊,你看下边呢,我在这个包下,我再去定一个啊,我叫做。Package importage import叫test。名一样了是吧。这是不是报错了?对的啊,不行,那你想这也很好理解,如果真要是能定义的话呢,那我是不是就完全区分不出来这两个类了。那掉的时候不就出问题了是吧?区分不了那不行啊,那不同的包下能定义同名的类吗?可以的啊,因为我们在使用一个类的时候呢,它同名没关系,你是不同的包下的类,我就说你是用的哪个包下的,是不是就区分出来了。对的啊,主要呢,就是没有歧义就行。换句话说呢,就比如说哎,咱班啊,当成是一个包的话呢,哎咱们这个班里边呢,不允许有同名的同学。啊,如果同没了,不好意思,那你去下个班吧,是吧。
12:01
哎,就是因为呢,我们要叫这个同学的话呢,这个就区分不出来了。啊,你比如说班里边姚亮是吧,哎,如果有俩俩姚亮,姚亮你站起来是吧。他俩看了看说,叫谁呢?就懵了是吧?哎,那我们呢,在不同的包下呢,是可以这样,就是姚亮站起来啊,说的是1109这个班的,他就起来了。啊,那你要说那个班的那个班就起来,所以没有歧义就行啊。所以呢,这里边儿有一些规则呢,其实都是为了使我们这个语言呢,就不矛盾自洽啊。就可以了啊。好这呢就说完了啊,然后呢,下边呢,我们再提一下说这个包的作用是什么,其实我们那会儿也都提到这个事儿了啊,这块我们系统性的说一下呢,诶,我这儿呢列了有四个哎作用。哎,看大家能不能去体会啊,这个咱直接看这就行,说那包呢,包含着具体的类,它还可以包含此包。这这这个OK吧。就就这种场景,比如说你像这儿哈。嗯,啊,还不能像这儿了,像像这吧。
13:02
大家看啊,我们这个类它呢是在这个包下的,这个包呢,最终是到这儿了是吧,然后这里边儿呢,呃,有一个具体的类了,是不是这还有这俩包。这就叫死包。那此包里边儿这不还有具体这个类啊。OK啊,行。诶好回过来啊,用在这个包里边儿呢,可以包含类呢和子包,诶划分项目层次,便于管理。诶,就咱们说的啊,你要有1000多个类放到一个包下,或者没有包的概念,那这个呢,管理起来是非常的繁琐的啊,那我们有包的概念呢,这个就便于管理了,比如说啊,这儿呢,举了一个叫航运软件啊这样一套系统,这个系统里边呢。航运嘛,所以涉及到了具体的这个公司,我就定义成一个类了,然后呢,你有具体的交通工具啊,交通工具呢,可能是这个卡车,也可能是这个船。哎,这儿呢,哎,都是一些具体的这个实体的这些类了,我就放在这个动漫这个包下了。然后呢,我们这套系统的话呢,需要跟用户去交互啊,跟交互相关的呢,我就放到这个诶GY这样相关的这种包下,诶相关的业务逻辑的处理呢,我们就放到这个这种相关的包下了,所以呢就是便于我们去管理。
14:11
啊,具体的这些类了。哎,这第一个啊,说第二个啊。所大家诶帮助管理大型软件系统,我们可以将诶功能相近的类呢划分到同一个包当中,比如说MVC的设计模式。啊,这个后期呢,像咱Java的同学呢,第二阶段讲Java web啊,我们就会讲到这种MVC的设计模式了,哎,简单稍微提一下啊。所以这种设计模式呢,主要目的呢,是为了降低开发当中代码业务的这个耦合度。啊,说白了就是我们把功能相似的代码呢,就放在一起啊,不同的代码呢,我们分成不同的层次。这样呢,就是解耦了。诶,耦合度这个词,咱们原来提到过一下是吧。OK啊,嗯,再举个例子啊,这个算是个小笑话一样说呢,嗯,从耦合度的角度来讲,程璇呢?
15:00
说就是比较爱吃米饭啊,不爱吃面条。为啥?哎。因为你要吃面条的话呢,得加卤是吧。你把这个卤加进去之后呢,一顿拌。最后一场,这个卤特别难吃。然后你就想分离出来。就分不出来了是吧。诶,就是面条跟这个卤呢,这不就完全混合到一起了,这叫耦合度极高是吧,那你要吃米饭呢。哎,三个菜是吧,这个菜你是不是把这个菜是不是夹过来吃的是吧,这个菜不好吃我就不吃了,你看这个是吧。哎,画这个这个耦合度就低是吧。哎,所以大家以后呢,就是多吃米饭去体会一下耦合度的问题啊。你要是我,我也拌着吃。那那那那也不好区分是吧,啊对啊,就假设你别拌着吃啊,面条拌着吃啊,这个温度高行。哎,拉回来哈,那这个MVC这个设计模式呢,我们说呃,就把整个这个代码呢,我们首先分一下层哈,呃,这个三个字母呢,对应的就三个单词啊,这个VV就是VI,就视图层啊c controller控制层,这个m model啊数据模型层。
16:11
OK啊,嗯,大体的一个思路呢,是这样子的啊。这个我就简单的,因为大家对这个手机可能比较熟悉一些,咱就以手机这个具体的APP来举例了啊,这个我们把手机打开以后呢,你打开具体一个软件啊,这个软件的话呢,我们就能看到好多的这个数据了,比如说今日头条是吧。啊,那么呃,你看到好多这个信息,你往上上下滑,包括你点进去这一项,哎,都有一些交互,那么跟用户交互相关的。啊,具体这种代码逻辑,因为像安卓的话呢,咱们不也可以用Java来写嘛,是吧,哎,那么跟界面啊相关的这些具体的逻辑呢,或者这样的一个控件。啊,这样一个视图是吧,哎,这个呢,我们都是跟这个视图相关的,就属于叫视图层。用于显示数据,为用户呢提供使用界面啊,直接进行交互的。
17:01
啊,那么这一层里边呢,有可以再可以有具体的这些包。啊,具体包啊。好呃,那么我们这个数据的话呢,最终展示呢,是到这个界面上了,但是这个数据呢,显然不是天然就存在于你手机的这个软件里的。啊,你这一一打开这软件得联网啊。呃,联网的话呢,得把你最新的这个信息呢,再发送给你啊,世界杯现在最新战况是吧?诶这个数据呢,都来自于我们服务器了。所以呢,你在打开的时候呢,其实他已经开始进行后台的一个数据的一个请求了。诶,那么他会先把这个请求呢,发送给所谓的这种叫后台。哎,那么这个后台的话呢,其实就涉及到我们具体的这个控制业务逻辑的啊,这样的一个层要控制层,它呢主要目的呢,就是来解析用户的请求啊,处理相关的业务逻辑,给予用户的响应。啊,它就是处在中间这样一个角色,这诶比如说呢,你再进来一个手机的时候呢,我们诶需要做登录是吧?把你的用户名写进去,你的密码写进去,我们你点登录按钮,这个呢,就相当于把这个请求呢,就发送给后台了。
18:06
然后呢,你的用户名密码呢,我们首先呢,得在后台先获取到。哎,那么这个获取包括呢,后边呢,再告诉你说诶。用户名密码对了还是不对了啊,这个呢,我们都理解成叫控制层来做的事儿,涉及到相关的一些。好。啊,相关包好,然后呢,呃,你的用户名密码发送到后台,后台那拿到以后呢,他是不是得校验一下对或不对是吧。我们是不是得需要到数据库里边看看跟已经存的用户名密码是不是一致啊。那我们就需要跟数据库做交互了。那么跟数据库的这些交互呢,诶可以理解成就我们的这个叫模型层。啊,承载数据处理数据的啊,操作数据库相关的这样的一些代码逻辑。诶判断完以后呢,发现诶有这个人,诶回来以后呢,诶我们在这儿发现,诶你看是成功的啊,然后我把这成功的逻辑呢,我再发送给你这块呢,后台往这儿发,是不是还是这个控制层这块做的事儿。诶发送到这儿了,你这块呢,诶显示个界面说登录成功是吧,或者说呢,我把这个呃后台呢,访问到了最新的这个新闻的信息,一个一个的呈现给你,数据发送过来以后呢,你这块呢,去承载显示,这不又是到十足层了吗。
19:13
OK,行,大家这样呢,简单的去理解一下,我们提到了三层,三层里边呢,呃,代码量其实有很多,我们再分成具体不同的包。啊,这个呢,就体现了我们对于代码量比较大的这种系统来讲呢,进行的这种管理。好,下一个说解决类命名冲突的问题。那咱们知道了,你这个类名呢,如果要没有包的概念呢,只能是一个名了,现在你要有包的概念呢,我们在不同的包下呢,可以定义同名的类了。哎,所以就解决这个同名的问题了啊好,那么下边又提到说控制这个访问的权限。呃,这个呢,你看我们有了这个包的概念之后呢,我们就可以呃这样来说了啊,默认情况下呢,呃,你要没有包,我们这个类呢,想访问这个类,假设都让你访问,现在呢,我们把它俩呢放在不同的包下了,我们相当于又天然的又加了一层屏障。
20:01
哎,这个时候你再想去访问的时候呢,我们就可以去说啊,你呢,只让你访问你自己包里的。诶不让你仿,诶或者不能这样说了,诶让我们应该看他哈,他呢,如果我们限制说呢,只能在自己包里边用。这样的话,你这个想去访问他的话呢,是不是就拿不到了。诶对,所以呢,这块我们就相当于是能够去控制啊,诶个别的一些结构啊,不想在外边去访问,那我们呢,就可以去加一层限制,哎,就是控制了这个访问权限问题啊好这呢,就我列了这样的几个特点啊,就这样简单一说,诶大家呢,随着后续啊,咱们代码的推进啊,理解呢会越来越好。好,最后这块呢,呃,简单罗列一下,咱们在诶整个Java基础阶段,咱们诶可能会接触到的啊,一些常见的包,大家呢,得有一个印象啊。哎,首先第一个呢,就是这个浪包了。啊,毫无疑问呢,这是咱们说的最重要一个包啊,LA呢,就是这个language的缩写了,可见的这个包的重要性啊,像咱们用的这个string啊,System啊,哎,包括后边这个数学类啊,Integer啊,Thread啊,后边接触到的啊,这个都属于核心的一篇。
21:09
哎,除此之外呢,跟网络操作相关的叫net。网络是吧,哎,跟这个数据跟物理磁盘的文件交互的叫IO。咱们用过一些。比如说。诶,Scanner是吧,诶对啊,诶后续呢,我们像集合框架呢,也都是这个U下的啊,哎,包括日期。啊,也是U下的U啊好,Tag这块呢,是跟格式化相关的啊,格式化呀解析啊,待会儿我们再说啊S后呢,就跟数据库交互相关的了。哎,这个叫a wt。哎,A wt是吧,哎,这个抽象窗口工具集。嗯,这个呢大家,哎,我列它的目的呢,就是告诉你它不重要哈。对,就是有时候我们去买一些书啊,现在那个书里边还会去讲这个内容,其实呢,大家就不要去研究了。啊,你还记不记得咱们一开始讲课的时候呢,我给大家这个说过几个这个项目是吧。
22:05
在这啊,哎,扩展的这个项目,你比如说像像这个。嗯,这个不是啊,还有这个。弹蛇还有这个是吧,呃,这个a wt什么呢,就是咱们Java的话呢,最初不是有几个方向吗。呃,叫Java SE是吧。哎,JAVA1。哎,扎瓦密。哎,没有Java web啊,Java web啊后后台开发其实就跟他相关了。哎,就它了啊行,然后这个Java IC呢,就是写桌面机用的啊像这个呢,是不是这都算桌面集用了,还有这个界面是吧?哎,你可以呢去交互了,那现在咱们说呢,Java已经不怎么去写这个桌面金用了。诶如果你要写的话呢,这个桌面这块会涉及到一些控件嘛,诶这个呢,它用的就是这个a wt相关的这种包下的了,现在已经不怎么用它去写桌面用了,所以这个呢你也就不用看了。哎,如果有的书还讲这块,其实你就知道这块是比较老了啊,完全就过掉就行,或者这本书呢,你可能说也得怀疑一下他怎么还写这个东西是吧。
23:04
OK啊,那扎密呢,现在不是主要的也是安卓呀iOS呀是吧,都也替换了啊,所以呢,现在Java的主市场呢,是在这儿。哎,把去除了桌面级的这些API的,剩下的那些,呃,内容的使用呢,Jare呢也需要,所以咱们就把Java SE呢看成是Jae的一个基础了。哎,这样的啊。好,呃,那么这呢,咱们就把这个package呢就说清楚了。好,那么这个package呢,我们就说到这儿了啊,哎,以后呢,咱们在写代码的时候呢,记着一上来,首先呢,你在相关的这个src下呢,先去创建这个包包,创建完以后呢,你再去包里边再去造这个类,哎,别忘了这个包啊。OK,然后下边呢,我们再讲关键词呢,叫做import。哎,这个关键呢,其实我们挺早呢就开始用了哈。可以追溯到。是吧?诶OK啊,这引炮呢,如果我们也翻译一下的话呢,那称为呢,叫做导入啊。哎,导入什么。
24:01
啊。导入的是具体的包下的。累。啊,或者是接口了啊,以后再说。啊,看这写的啊说为了呢使用定义在其他包中的类。需要呢?Inport语句来显示,引入指定包下所需要的类。哎,相当于呢,Port于告诉编译性的时候,到哪里去找这个类了。哎,这个啊。好,我把这句话呢给他拿过来。哎,这个应该比较好理解是吧。呃,因为咱们说了你这个,呃,首先呢,前面讲过,说不同的包下呢,可以造同名的类了,那你在这个文件里边,你想用这个类,那你最起码得告诉编译器,你是用的这个呀,还是用的这个呀。啊,怎么怎么告诉啊,那就用import就可以了。啊,诶,你看这个落脚点啊,哎,它呢,导入的是最后落脚点呢,是类。以后呢,我们再讲接口的概念啊。好,那么具体语法格式呢,就是inport的后边呢,你写清楚是哪一个包下的哪一个类。
25:03
诶,这样的一个格式啊,比如说诶我们想导入的是这个包,这个子包的这样的一个类,那我下边用这个test的话呢,用的就是这个类。就是这个意思。好,下边这块呢,我也写了好多的这个注意事项,咱们就一个一个的走一下就行啊,不是特别难。哎,我就粘过来了。诶把它的这块我们调一下啊。啊。来我们先看这个啊,说呢,我们既然呢知道它是叫导入的,那把它写在哪儿呢?说呢声明在包的声明和类的声明之间。来看一下啊。这个咱们找到咱们的这个位置,哎,我就找到它了,好下边呢,比如说我们这写个没方法了。啊,你看啊,咱们当初呢,用这个scanner。哎,Scanner。哎,你一个。Scanner。
26:01
哎,C这么点音。哎,这样就切好了,切好以后的话呢,因为咱们做过这个idea的设置了,它自动就给我们导包了啊,诶你看它自动导的位置呢,也很清晰,在包的声明和类的声明之间。哎,先生啊,说白了就是我们在类里边不要用它嘛,你在用之前你得告诉我呀,但是呢,咱们也说了,Pack是首行嘛。所以你也只能是放在中间。哎,这是它下一个说,如果呢,需要导入多个类或者接口,那你就并列的去写就可以了。哎,那么回过来。嗯,回到这儿来是吧,哎,比如我们现在还有啊,嗯,我这呢是一个list,哎去new一个叫做a a list。啊,OK,这又自动给我倒班了。哎,那么这两个呢,结构啊,这这个大家可能没见过的是吧。我先这样写吧,声明的是一个list啊,右边这块呢,还是new的一个list啊。好,那么对应的这个类的话呢,它也需要给我们去导包,呃,你要有的话呢,就是并列的去写,中间用分号隔开就行了。
27:02
哎,这是说的这个事儿啊。好,下一个哈说如果使用A点星导入指定的结构表示呢,可以导入A包下的所有的结构。哎,回过来。啊,是这个意思啊,我再举个例子啊,比如说哎,我这写个叫哈希map。这个大家没见过,你就看热闹就行是吧。你知道这是一个具体的类就行啊好,这个写完之后呢,是不是也倒了。哎,你会发现呢,我们这三个结构都是U求下的。我其实呢就可以啊,我这先注释一下了啊。他又自我又给我生成了我这样写个点星。哎,这个甲星呢,它就表示这个包下的所有的类。或者是接口啊,以后我们再说接口的事儿。诶这就都能倒了,所以你看这块我这样写之后呢,它就没有再自动帮咱们生成了啊。哎,进而的话呢,呃,比如我们再写一个啊,我叫哈希的一个set。
28:00
哎,哈希一个set,诶你看这时候写完之后呢,这块你看也没什么变化啊,诶是因为这个set呢,你看我点进来它呢所在的包。是不是也是他?哎,所以这块呢,就相当于是啊,这个下边的所有的这种类呢,我们都可以直接用了啊。好,这个呢,就是这个点星的这样一个意思。可以了啊好,下边这个啊,说如果呢,你要是导入这个类啊,或者接口是个浪包下的,或者呢,是你当前那个包下的,就可以省略这个音了。对,这个我们需要来说一下,其实以前的时候呢,我们第一天写hello呢,其实就已经用相关的一些类了。啊,你首先this out一下,你写了个hello是吧,这是不是有个类。啊,包括呢,你这块呢,你们一定要写你这块我是这样的啊,死中型的一个叫HTR啊这个呢叫hello。哎,你把这个呢,哎,换成了HR了。哎,这不又涉及到这是一个类吗。没方案里边是不是也用了。哎,那这就涉及到说你这个类,你不也得倒吗。哎,说的确实没错,哎,如果要倒的话呢,你就得这样写了。
29:01
Import点下的string是吧。哎,包括呢,你再指明一下这个。嗯。我刚才。行呢?行,我这再重来一个啊。好。嗯。什么鬼,这?他这个老国自动写啊。这个这个。写到这儿。这个我们再把这个system是吧。拿过来啊。哎,这么着。行啊,那么实际情况呢,你发现他说这俩我不写也没事。哎,这个原因呢,就是因为呢,你是在浪下的,诶浪呢,咱们说呢,是你这个语言最核心的这一类了,所以说我们在代码当中会使用的极其频繁。既然机器频繁呢,我们编译器呢,就设置一下说啊,你要是浪漫下的这个你就不用写了啊。
30:00
啊,这个就直接对,我就认为呢,我就能够直接去那里边儿找了。诶,这是其中之一啊,另外一点的话,就是在我们当前这个包里边儿你定义的啊,比如说啊,我在这里边儿,咱们去定义一个。嗯,加上呢,就叫person吧。啊哎,Person呢,我觉得这个类呢写到这儿了,然后呢,我们再回到这个啊程序里边,哎,他俩呢是在同一个包下的。啊,那这时候呢,如果你要去声明啊,Person类型的。哎,这个他哎去扭一个具体的person。这个写完之后呢,你发现这个person前面这块也没有导入。啊,就因为呢,你是在同一个包下的。只要你换了这个包就不行啊。换了包就不行?啊,换了包就一定要倒了啊,只有这两个包。哎,他才可以去省略。好接着啊说呢,如果已经导入了,呃,Java点,比如说A包下的类了,那么如果需要A包的此包的类的话呢。还得倒。
31:02
啊,你看这个能不能看懂啊,这个咱们可以先看一下这。啊,这个大家看这啊,这个浪包呢,咱们说了它下边这个,呃,如果你要使用类的话呢,是不是就不用写导了是吧。哎,你看这个浪包呢,这块这不都算紫包吗。包你看,比如说这吧。哎,你比如说我现在要使用这个浪包的reflect这个子包下的某一个类,哎,我们需要写import吗?需要你看,比如说这个,那这个这个后面我们讲反射的时候会用它啊,这往下走啊,你看这有个类。啊,比如说回过来咱们在这儿啊。哎,我在后边啊,我现在就声明成是一个field。哎,我就先制成个闹了啊,这个写完之后呢,你看他这时候还还都。啊,这个这个提示我是因为呢,它有好多包下都有这个类了,他会问你说你到底是要用哪个是吧,我out回车一下啊,点inport的,你看好多地儿都有,咱们用的是这个。点一下。你看上面你看他会,诶给我们加上的啊。
32:03
嗯。这个就是我们要说的这个点啊,这个呢,你要换到我们这个场景下,比如说哈,我就简单这样一说就行了,比如说咱们想用一下这个包下的。这个类了。哎,我想用这个雷啊,你就需要呢,去导一下。稍微的测试一下啊,回过来。我这样写的。你看这是不报错了啊,这个时候呢,它显示的就是用的是这个了是吧。没问题吧,好,现在我把这个位置咱们改成个星吧。那就意味着这个包下的所有的这个类是不是都能掉。好,那我现在我想再用一下这个E2下的这个。这个类啊,这个类,你说我现在要再用,需要导播。需要吧。需要啊。你看这个写完之后呢,你看上面有没有。
33:00
他他又给我写出来了是吧,他这个自动行为啊,就这样,你看我写点心了啊,这个点心呢,就表示你这个包下的所有的类都可以啊。诶当然呢,你这个类呢,不在这个包下,是在这个包的子包下是吧,所以你必须得显示在血,你要把它这个注入掉呢,它就会自动给你加一个啊。咱还得改一下是吧,对知道这意思啊,改第二他这个咱们做设置了。哎,所以紫班这个你还得需要自己再去倒啊。好,接着说,如果呢,在代码当中出现了不同包下的同名的类了,那么就需要呢,使用类的全类名的方式呢,指明是调用的哪个类。哎,它应用的是这样的场景。那这个咱们代码都写的这这挺多了啊,这个大家你下来你就知道这说什么意思就行,这个就没必要就得一个一个去练了啊,是这个意思啊,在咱们这个API里边呢,呃,比较适合的有一个类呢,我们可以去说明一下这个date啊。对,你会发现这个D的话呢,它在两个包下,甚至说下边也有。啊,但咱们不管了哈,哎,我们就只看这俩。
34:01
说这个类的话呢,在两个包下都有,那我现在恰好呢,在我这一个程序当中,我这俩都想用。都想用是吧,我先写个date啊。我先这么着,你看他这块跟我们说需要你导师,因为他不知道用哪个是吧,我out enter一下,Mport一下,他说你用哪个呀,咱们先用YouTube吧。李兄弟。咱们前面写了星了。是不是相当于就就用的就成它了是吧,OK啊行,那就相当于这个date啊,咱们目前用的是U下。那我现在我又写了一个。哎,我叫DATE1,哎,我希望呢,这个date呀,是circle下的。你咋弄?你说倒一下行,咱倒一下啊。诶,我我先不写了,你先这样看啊,光标往这一放。是不是他,嗯上面的。在哪起来?在这儿他是不是目前认为你是优秀下的?
35:01
这个也是一样啊,他现在其实都认为我们用的是U下了啊好,现在有同学说呢,我写个导入行,我写一下啊import java.circle下。是吧,这个data是吧。好,我这个写完之后呢,你看这时候。这俩啊,我再往这一放。变成so了吧?这个也是是吧。都变成了啊。嗯,那显然呢就不太对了,咱们希望上边是U秀,下边是色Q啊,所以呢,怎么办呢?哎,咱们先把这个就去了吧,这个去了以后呢,因为上面有个它啊,所以呢,它默认呢。他默认的认为我这块呢,这个是U下的这个可以是吧。呃,相当于这个呢,我们对。它呢可以使用。Import的方式是吧。哎,指明。OK,那这个呢就不行了,你不能写俩inport都是data,那到底哪个是哪个又乱了,所以这个呢,我们只能是写成这样的方式了。
36:02
这种方式呢,我们就称为呢,叫使用全类名的方式啊。哎,全类名,哎的这个方式,什么叫全类名呢?就是把你这个类呢,它所在的包啊都加上,这就叫做全类名。OK啊,这个没加呢,你就是用前面那个import了啊,这个位置呢,比如我们想造个对象,那我们就去new一下了,New的话呢,你注意你也不能这样简单的去写,也得是你有java.circle下的data。啊,这里边儿它需要传一个具体的浪形的值了哈,就这样。啊,你上面这个呢,我们就可以呢,直接去new一个data是吧。因为他这块认为呢,都是你那个上面import里的。哎,这就是我们通过全类名的方式呢,去做这种区分啊,你说我上面这个我我我我我我也想写全。是不是当然可以了?哎,你要这样写的话,那上面是不是就不用写引泡了。
37:02
对的啊,或者换句话说啊,大家你想以前其实咱们写代码,或者正常来讲呢,凡是你这里边儿用到一些具体类啊,都得写明全类名。你是哪个包下的哪个类,哪个包下的哪个类,其实都应该是这样的是吧,只不过你要这样写的话呢,是不是使得咱们这个代码的可读性就太差了。所以说呢,你看你下边写了好多,能不能说上边你抽取一下是吧,诶所以呢,我们基于这个点才引入了inport了,所以你只需要在上面说一下你这个东西是哪来的。诶,我是java.u下的好,你说明以后呢,你后边这块呢,就不用再去写了。啊诶,其实那就变简单了,诶当然呢,现在你回归成说,诶你这里边儿有同名的了,那同名了,那那没办法了,那你就只能是还用最初的那种想法来了。那就这样OK啊行,那这呢,咱们就说清楚这个同名的问题了。好,最后这个呢,大家做一个了解啊,因为咱们还没有讲这个static,先简单说一下,这static的话呢,它加在一起可以呢,调用指定类接口下的静态的属性或方法。
38:09
啊,它的落脚点呢,是一个结构啊,是一个属性或方法。呃,我就简单带大家呢,稍微测试一下就行啊,你比如说咱们写这个输出,我这写个叫hello哈,诶你会发现呢,我这个system呢,点这个out了,这个咱们后边会去讲。当然,暂且呢,也还没有同学问,我正好也没问是对的哈,你问了咱们还没法解释呢。你发现呢,我们这儿呢,是不是直接拿泪就点了?以前咱们都说那属性方法是不是都得拿对象调是吧。哎,其实泪也能掉,但泪调呢,有个前提,就是你这个调的结构啊,它得有一个这个修饰。哎,才可以。啊,你看这呢,就有它修饰了,所以我们这儿呢,直接就拿它来调了。啊,包括咱们做那个练习的时候呢,点派。咱们在讲这个直传力的时候,第一道题目,哎这个里边,哎在这是吧。点派你看这是不是也一样哈,这个你打开是不是也有一个它。
39:04
哎,才行啊,好,那么回过来。嗯,到这来啊好,那么如果呢,我们去调out话呢,其实你点就行,因为所以上不用去。但是你看我现在我加个这个东西啊。我叫做import static。哎,Java点儿浪包下的。啊,斯特。第二,Out。啥玩意儿?整哪儿去了?嗯。这个也太不理想了。我换一个。呃。看这个会不会给我省啊static Java点。哎,浪包下的,咱们不有那个麦吗?第二派。
40:00
He。我我我我这么着了,我我我先先用它。我有报道了啊,他这不又给我报错了吗?我加的意思呢,是因为我加了以后,他认为我加了没有用。Static。Java点下的这个system。下的out,这你就不能没了是吧,你看我这个加完以后的话呢,就是我们在这个代码当中出现这个out了,Out你从哪来的呀?那你就上面去找啊,是你在system下边有个out,哎,我这呢导入了,所以呢,下边你看这块我就直接这样写了。啊,就没问题啊好,运行的话呢,一样啊,就是个hello。啊,那么派呢,一样啊呃,你要是上面在这个,你加上mass点派了这个位置,你就直接呢,在这个程序里边,你就写一个这个叫派。就可以。啊,上面呢,你就只需要呢加一个。哎,我就到这啊,CTRLC粘过来。哎,点派。
41:01
哎,分号一下,哎,你看这块呢,就没问题了。行,这就一个小知识点啊,诶大家了解一下就行,你说我不知道这个知识点,不知道其实也不影响你用,你就在这块写全不就完了吗。麦点C点。啊就可以了啊行,这有一个小特点啊,就是大家呢,以后别人写了,你得知道呢,它是啥意思就行,自己呢写不写都行啊。好,那么这样的话呢,咱们关于这个呢,就说清楚了啊,就是导包的意思,所以呢,这两个关键字呢,其实使用频率挺高的啊,但是的话呢,这个难度都不大。
我来说两句