00:00
那么知识层面呢,关于我们这个包装类呢,就算是说完了,需要大家掌握的就是他们三者之间的一个相互转换,刚才这个核心的内容呢,我们已经说过了,那我们看一下这个课后的题目,这呢是这个面试的题,这个题目的话呢,还是比较险的,比较阴险的,大家看第一道题。这呢一看是一个三运算符,这是一个处三运算符,如果要是处直行,它是for呢,执行它,显然呢这块有执行它了,那么问O1多少。这两个题目的话呢,我就直接粘到咱们这个面试题这里边吧。新建一个,我这张叫interview。的一个test在这里边,咱们拿过来。
01:00
哎,这呢,我们写一下。这个叫关于包装类使用的一个面试题。这是第一道CTRLC下。拿过来这块呢,我们直接import一下,好还有一道。行,Ctrl shift一下。先看上面那道。这个结果应该是多少?说是一,还有别的可以考虑的答案吗?地址还有吗?只要你说一个稍微靠谱的错误答案都行,还有可能是什么呀?没有人啊,还真有人说是2.0的呀,闹啊闹行,说2.0的有点过分了,你这不瞪着眼,这是个处吗?对吧?不可能是2.0的,还有吗?
02:19
目前这里边没有正确答案啊,什么也没有,嗯,就是那应该是什么呀,就什么也没有,什么也没有,它是一个什么呢?到底这个很这个这个很难形容了,你要说字符串的话呢,我们这么着一下,这这也算叫什么也没有,这这也不是字符串啊是吧。你身边没有这个事儿就有点很尴尬啊,还有吗?有一个微弱的声音说了个1.0,这个正确答案呢,就是1.0。
03:05
就是1.0,前面这些呢,就都不对了,写这个啥,哎,你这不又另外一道题呢,我我现在正在讲这个问题啊,你这个题呢,我后边有那个类似的,看这这个正确结果呢,是一个1.0,这个题确实有点难度,就是首先的话呢,肯定是得执行这个结构了,执行这个结构的话呢,结果呢,按说应该是个一,但是不是咱们前面呢,其实也提到过,就是说呃,对于三运算符的话呢,要求这个类型和这个类型呢,它俩得能够统一成一个类型,那其实这里边还涉及到就是它呢对应的这个in的型的跟这个double型,呃,这叫浮点型了,它会有一个提升,所以这个结果的话呢,就是一个1.0了啊就有个提升,这就1.0了,它整个呢,它相当它都得需要去编译一下啊,我们编译的时候呢,就是你想想我们编译的时候,你不能说我。
04:05
运行我才知道执行它跟它没关系,那不行啊,咱们写代码的时候呢,你要是这写一个int,这写一个string,编译不就错了吗?也就是说编译的时候呢,它就得要求你这个类型和这个类型都得能统一成一个类型啊,那自然而然在编译的时候呢,它就会提升为1.0,跟这个时候是不是处没关系。你是force我也不也无所谓,反正我就必须得要求你编译这俩类型得能统一,不统一他就报错呀。它就得提升了,所以呢是1.0行,那下个问题呢,声明了一个object if处or它L是,它这个是多少。这个不敢说了,这就是个一是吧,这个就是一个普通的题目了,这里边儿呢,没有要求它跟它必须得统一类型了,所以这个结果呢,就是个一。行,其实这道题的话呢,挺无聊的,这个挺无聊的啊行,这个呢,无聊的题呢,咱们就过了,然后看一个比较有聊的题。
05:07
把这个呢,CTRLC。站过来。这呢,我一统一下吧,这个就叫三了。这个题需要大家还是要关注一下的,这个有点像,这就是我之前给大家说过那个事,就是在print line的时候,Print line的时候呢,咱们说你这放一个差型数组,输出的是内容,除了差型数组之外呢,输出的都是地址值,就对于数组这块,然后呢,咱们这个当时我说一个同学呢,考的时候呢,就考它两道题,一道题呢是这道题,另外一道题呢,就是这道题。就是这道题,看看这道题,首先我呢拗了两个都是一,那这时候呢,我I等等于接怎么着,False这个大家都应该清楚,等等呢,比的引用类型就是比地址是不是同一个对象,显然不是好看下边。
06:08
我呢,M等于一,N等于一,这个时候的话呢,我是用的自动装箱。自动装箱的时候呢,你说我这时候M和N,这这算是触啊,算是false啊,其实是。有点疑惑了,不知道该应该是true还是false了,你要认为呢,它这个一呢是用new的方式的,那似乎呢就应该是false了是吧?嗯,但事实上呢,他还不是那种拗的方式。咱们直接就说结果了,这个结果呢,是一个处。这要是个处的话呢,下边又写了个128,这是处的话呢,这个按说是不是也没有道理,是false啊,那这个结果呢,它就是false,嗯,那这个题的话呢,它是有难度的,那这个一执行,哎这块呢,你看就是我说的这样的一个情况,这呢你要说它多难,其实倒也不至于,主要呢,就是因为里边有个知识点呢,你不懂,你不知道,没见过,所以说呢,你就做错了,但是一说呢,你就知道了,知道了他就错不了。
07:16
这个知识点隐含的是什么呢?哎,我们这个int当中,大家看正常这个呢,我们说它是对一个int型变量的一个封装了,这个变量呢,就是我们看到这里边的value。我这是里边放的是Y6,额外多说一句,我要是一个float里边放了个啥呀。还放in型的Y6嘛,那肯定就是float型了,所以封装类包装类其实很简单,就是它把里边这个核心的基本数据类型那个变量呢,给你包了一下,作为这个类的一个属性出现而已,另外呢,加了一些方法就这样。那么我们还回到这个inte,说为什么这个一就是一个处128呢,就是一个false,实际上这个事儿呢,很容易说清楚,我们在这个TE类当中,它定义了一个内部类,下一章咱们具体去说这个内部类的事儿,你就把它看成是TE中的一个结构,叫TE catch catch这个单词呢?
08:16
要缓存。也就意味着这还是个静态的啊,就是随着这个类加载就加载了这个咱们明天呢,就开始讲这个叫static了,这个inte catch它呢,就是跟你这个具体的对象没有关系了,只要你有这个inte类,我们这个结构呢,就加载到内存中了,这个结构里边有个什么呢?有一个数组。这个数组呢,是一个integer类型的,这个数组的话呢,它提前造好了,因为这有个static,明天咱们具体展开说,他就提前造好了,这个数组存了很多数,直接说一下结论,存了哪些数呢?他存了从负128开始一直到正的127这样的一个阶段的数,相当于呢,就是我们BAT的这个范围的数,那他造这个数提前造好的目的是什么呀?
09:08
这就方便我们去用了,就是咱们呢,用这个inte表示的是一个整形封装起来一个对象了,那我们发现呢,在使用当中呢,在这个范围的数呢,用的非常频繁,那我们是不是就考虑提升一下性能,你用的时候呢,我就别你每次用的时候给你造了,造完以后你不用了,又销毁了,怎么办呢?我提前先给你加载好。我们使用的很高的概率呢,是用的这个范围内的数,那你用的时候直接从这里拿,用完以后呢,你就你就用完就得了,我这块呢还存着缓存的好处呢,不就是说在加载的时候速度可以很快嘛,所以我们就提前造好了这样一个范围,正因为这样的原因,当我们使用这个自动装箱的时候呢,我这地这是一个一,那就直接从这里找的,找了个一,我这还是一个类类型的,相当于我们记录的也记录它的地址了,然后你又也叫个一,还从这里找。
10:01
那他俩的地址值是不是就一样啊,所以等等就是出那128呢,为啥写128,就是为了不在这个范围内出了是吧,出了以后。那我要是我这写了个是128,那怎么办?那就给你拗一个,那你你又来了128呢,那就再拗一个,那这时候他俩等等就是false了,仅此而已,你说你知道这个知识点呢,就会不知道呢,就不会就这么个事,那你要是想细节看的话呢,是不是这个catch这呢有一个漏是负128氦氦在这块呢,拿H负的值H呢是127,然后在下边呢,这个定义了一个这个数度的长度,这是127减去负的128,再加二一,这不正好就是256嘛,然后呢,我们让这个勾呢,是从漏开始,就是负128开始,然后呢是先取负128,然后再加加,这是最小的数呢,就是负128,然后呢,这个长度呢就256,最后一个呢就是正等于二七,就是做了这样的一个负值操作。
11:02
哎,就这样个情况,所以说呢,你再回过来看这个问题的话呢,其实也没有想的那么难,只是呢,你不知道这样个知识点,那面试的时候呢,他就故意考察这样一些偏的一些知识点,那没想到我们也给讲了是吧?啊大家回头再去答的时候呢,你就可以非常有底气的说,这个是这样的,这个是这样的啊,就是因为他内部啊,声明了一个integer的一个缓存,在这简单写一下integer内部定义了,这叫integer catch。这样的一个结构,这个catch当中。在中它呢,定义了一个叫一个integer类型的一个数组啊,保存了保存了从负128到这个正的127范围内的这个整数。
12:00
下面的这个整数,那么如果我们使用要自动装箱的这个方式,这个给inte赋值的范围在的范围在这个我们负128正,正到正这个127范围内的时候。范围内时啊,可以直接使用咱们这个数组中的元素。数字中的元素,然后呢,就不用这个再去拗了。那同时的话呢,当你使用完以后的话呢,这个数组中的元素呢,也不会被销毁,那就相当于就你只是把你那个定义这个变量你自己销毁就完了,我这个元素还在我这个数字当中的,那你回头别人再用的话呢,别人还这样的,直接用现成的就可以了,那这个目的呢,就是可以提高我们这个在装箱的这个时候呢,你复制的一个效率。
13:13
啊,不用再用了,主要目的呢,就是为了提高效率啊,那因为咱们使用这个范围内的数比较多,所以我们这个数组的话呢,也不要把它建的太大啊,你总不至于把它从这个二的负多少次方,这个几十次方到正的几十次方,那你造这个内存中占的也太大了,那你除了这个范围之内用的频率呢,也比较小,就没有必要呢,一开始老是占那么多缓存了,所以咱们缓存这个范围呢,还是比较小的,出了这个范围的话呢,我们再去new,也就是说这里边的这两个操作,那相当于这个new了一个对象,New了一个这个对象。对,下边这个呢也一样的。
14:01
行,那这块呢,我们关于这几个小的这个面试题的话呢,我们就说完了,还是稍微有一些难度的。
我来说两句