00:00
往下走,下边我们看看数据类型的列表,有哪些类型呢?我们来看一下。我这里列了这么一些类型,看short float double char string、布尔、unit nothing now,还有nothing any any refer,这些类型呢,我在这边都有说明。这些就是用的最多的哈,用的最多就是最多的,那么比如像BAT,它是表示一个整数,那么它是八位有符号位的整数范围,在这里shortt那漏我就不一个个讲了,因为这个跟Java同学们以前是学过的,所以我把它列出来,特别需要注意的一个是这个地方unit,那么多说一句unit这个类型呢,在SC表示是没有返回值。它等同于VOVO注意这个unit它只有一个实例值。
01:06
它这个值是什么呢?是小括号,很有意思,也就是说,也就是unit这个类型呢,只有一个值就是小括号,这个小括号就就等价于以前的VO啊,就是。就是返回的这个。只要你看到这个就代表是个unit,它只有一个值,这是第一个。还有现在看nothing nothing是开这个类层级里面最低端,它是任何其他类型的子类型。那同学们将来如果希望构建一组数据,这个数据呢能够交给任何变量和函数,那么你可以把它做成nothing。啊,如果你真的有这种需求的话,你看为什么刚才我们这个异常啊,他可以抛给了是吧,说明他为了让这个异常可以往上不停的抛,他就去把它做成拉伸类型,那么我们再看any any呢是所有其他类的超累这个脑海里面有那张图。
02:09
Any呢,是所有引用类型啊,这个大家有个认识就可以啊,同学们,我把这个给大家伙放一下。这个是我们的数据类型的列表。往下走。来一个标题三对标题三,然后呢,我给同学们把这个图就截过来就行了。放到这里。OK,没毛病,下面呢,我们就往里面稍微的追一追啊,稍微的给它过一下这些类型第一个。整形类型,整形类型呢,呃,Bit short,那这就不多说了,范围。相信同学们应该能推的出来。我问大家,我找一个同学说一下为这个浪吧,为什么是这个范围呢?
03:01
哪个同学能说说一下这个原因呢?或者说这个吧,这个int int它是这个是四个字节,表示一个int它的范围为什么是从这里到这里,我随机的抽查一位同学哈,看看同学们基本功。行不行?好,我随机的找一位同学,叫做刘开明同学来回答一下,来,小刘。它为什么是这个范围。24位的就应该是那个。二。二点四次方。小刘,坐下啊,再找一位同学啊,旁边这位同学叫高俊峰同学,来回答一下,来小高为什么是这个范围?还是?二的多少钱,它是32位的,它是32位的,对是32位,它是怎么算这个值的嘛。
04:09
二的多少次方嘛。31。二的31次方,二的31次方前面还写个负号是吧?为为什么它是31次。这个不知道,好坐下。嗯,这个基本功还是有点弱哈,但是这个也不怪大家,毕竟大家不是那个二进制,应该是学过的咯。啊,可能都忘了是吧。这有点不好意思啊,我再找一个同学,我再找一位同学叫做。呃,沈勇同学,来回答一下,来小沈。他这是它32位嘛,他刚好是二三十一次方正好一正一负。
05:04
那有一个问题啊,就是首先呃,你你先说说这个简单的吧,下面这个简单这个正数好说是怎么算出来,是二的多少次方。二的31次方对吧,为什么是31不是32呢?就是它这个包括那个正负值它是。最上面应该是。零和一的话是第一非是零和一,他就是一的时候是复制,然后零的时候是政治嘛,对他说出来,但是说的不是很专业,你应该告诉我,告诉那个面试官说他的最高位是符号位。符号位是表示这个正负的,那么零表示正还是负数,零表示表示正,零表示正数是对的。一表示负数,老师,刚才以前老师教你叫一,为什么是负数呢?因为你倒过来不是负的嘛,对吧,还那么它这个是二的31次方对吧,很很好,那么负数为什么负数它就算出来不对呀,它是应该怎么算的到负一这个,这个是不是应该是二的三一之还要减一个一啊从零到那个。
06:11
减一对,这个是二负的,从负一开始。二。三一负的231,请坐一下啊,没有回答的很到位,这说明这个基本功还是不够扎实啊,我建议同学们可以看一下韩老师讲的这个二进制啊,但我现在没有时间讲这个玩意儿了,这个东西你搞清楚,我可以负责告诉大家,一定要把它的。一个数的这个,呃,它的这个原码补码反码真的搞清楚。我建议同学们今天晚上啊,我我看看我有没有讲了一句,你花十分钟看一下,对于整体这个对计算机这个运行是有道理的,比如说我就问大家在计算机里面有没有减法。为什么没有减法呀?
07:00
因为你加一个负数不就代表减吗?对吧,所以说它这个为什么这个地方,它这个负数要比这个正数多一个,一是因为是这样子的,其实他仍然是遵循这个原则,它是这样子的。呃,我简单说一下啊,我就说一一下,本身这个呢,不是我这里要讲的,但是既然说到这儿了,我就提一嘴。啊,如果同学们觉得这个基本功比较重要的话呢,可以去看一看,它其实是这样的,因为32位它是怎么算的呢?比如说我们这地方有32位,那它它全它第一位是符号位。它第一位是符号位,后面呢,后面这个就是值。就是那个零一位,零一这个表示值的位零一位,那么我们看它正数最大能表示什么呢?第一个就是零。符号位就是像零表示零表示正数。
08:05
对待正数啊正数。啊,一符号位如果是一表示负数。负数。诶,这个负。真整不出来了。负数好。好,我们看最大的一个正数是多少?注意听最大的一个正数应该是0123456712345671我觉得还少一个啊,1234678 12345678,对同学们看这个数是不是就是刚好等于二,知道31次三十三十一次方减掉一个一。能理解吗?这个你要推不出来,你就想一想那个一个字节的好,那问题在复数。如果最大这个负数,那就是这个为一嘛。
09:03
那那相当于说把这个整体拷贝过来,注意听,关键点在这里,它如果全部都为一,是不是这个代表负的最大的一个数啊,它理论上说应该是负啊最小的一个数,对,就是负的里面的那个负的最最大的一个相当于最小嘛,就是相当于是负的二的31次方减一,其实理论上是一个。是不是理论是这个值啊,没没说错吧,他说老师那你不对啊,如果你真的是这个值的,因为你这个是符号位。那你这边是你的职位,是这意思吧,同学们,那你就这样,那理论上说它就应该等于负的。这个字。负了多少次呢?就是我们算一下。就实际上的二。的。31次方。然后呢,还要减掉一个,因为你也要减一啊。
10:00
你凭什么不减一啊,你不能说因为因为你负数你特殊啊,所以说你其实它这个值理论上说应该是负的这么多值,因为你上面正的是这么多,我付的也应该这么多,但问题来了,凭什么负数要多一个呢?原因在这里,同学们,原因在这里,哎,我问大家一个问题,如果全零的话。如果全零的话,哎,各位,如果全零的话,是不是它就是零。但是准确的讲这个是什么零,这个是不是相当于是正零呢?如果我如果是一,后面这个是全零。哎,同学们,如果按照我们这个这个方案,我我可能零个数不一定是正确的啊,是不是就是负零的,但是正零和负零是不是都是零呢?诶我们这个专家就很有意思,他借了一位。他把这个负零借过来给他用到这里,他觉得他觉得你没有必要嘛,正零和负零都是零吗。于是他在补马这地方做了一个转换,就那些一些专门研究这个数据二进制的些人,他特别聪明,你复灵和复灵和正灵都是你,你凭什么把这个负零给我浪费了呢?诶,他就把这个负零借过来做补码里面,把它做成一个更大的数。
11:15
它是这么来的,明白吗?它是这个,如果同学们有兴趣去研究这个二进制,就知道这么来的,好,我简单说到这啊,其他就以此类推了,就为什么会。多了一个以后,有有面试官再问大家,你跟他聊两句,你说其实是负零,在不骂这个层面上,这个不骂这个层面上,他在计算机二进制里面,把这个负零当作一个更大的复数记录来啊,这样就说的很清晰了,好,这个我就不再多聊,那么其他的我就不一个多说了啊,同学们注意这个细节,那么我这里要讲一下,就是在开里面呢,它提供了一段方法,Bit mini value,还有这个max value,可以算出它的最大值和最小值,我举个例子。
12:00
好,同学们啊,来给大家再举一个小案例,叫type的DEMO3。同学们,以后呢,工作一段时间以后啊,记住老师的一些东西,就是可以把一些呃,比较核心的东西把它再过一过,你会飞得更远啊,你会飞得更远,那么我举个例子。比如刚才我们想看一下最大值,比如说我想看看这个浪的最大值。那么我可以这样写。弄点max value看这有啊,它的最小值,它的最小值。啊,你可以看到它这个地方是有这些类似的这个东西啊,点mini好可以了,那我一运行,同学们可以看到它的最大最小也就看出来了,他一定跟我们分析是一样的。你看这儿。
13:01
啊,你看这个没有这么大,一个值这么大,但是我告诉这个值也不够用,后面我们会出一个题,这个数算什么呀,对于大数据来说,这个值根本就不够用。说老师这么大的值还不够用,大数据远远超这个值,那到时候如果你超过这个数怎么办呢?好,我们后面有一个专门的类,就是专门处理大数据,那个数据特别特别大啊,绝对你们用个big December啊就可以解决这个问题啊,别人问到你你可以解决这个问题,那么别人问到他底层是怎么实现的呢?其实它就是用的把一个数转成一个字符串,然后再进行这个运算的时候呢,仍然参考了这个加减存储的运算规则来处理的。好,这个我们说到这,接着往下看,好就是我们整数类型就说到这里了。好快速的过一下整数类型。OK。整数类型写到这整,哎,整数类型我们是标题二。
14:02
标题二,好的。那整数类型呢,我讲了两点啊,一个是它的类型。好,给他来一个标题三、整数类型有哪些呢?在我们看里面整数类型主要有这么一些。诶有这么一些放这就可以了,接着我们继续往下看。整数类型。啊,有几个细节我就念一下就行了啊,我可能就不举例子了,比如说撕开了各个整数类型,有固定的范围和长度,不受OS的影响,不做操作,OS就是操作系统。那么以保证开了程序的可一致性,这是第一点,第二点开了整形,就是这个字面量。默认为int类型,如果你要把它写成那类型,那么加一个小写的L或者是大写的L,反编译我就不看了,我就就举这么一个例子啊呃,注意听这个细节就行了。比如说我们给了这么一个值VR等于十,那么这个I就是类型。
15:07
那如果说你给一个结,你就想让它变成整形,而长整形你要加个L。这个时候这个节呢,就是那类型啊,这里大家注意一下就可以,你看我给他演示一下,看J浪。It好,这是需要同学们注意最后一个小案例,那同学们看一下这个案例对还是不对,找一个同学说一下怎么解决。同学们看这里。这个这个应该是没问题的吧,好。嗯,这地方应该输出多少,同学们是不是输一输11啊啊好,我这个时候把一个12L给了D,这个D是不是就是那类型。啊,这个时候呢,这方应该输出12。再问大家,这个代码我这样写行不行?我把一个这个数。交给了易类型。
16:03
行吗?告诉你先告诉他这个值,这个值肯定超过了让了。超过浪的,首先我问大家这个这个地方会报它已经大于浪了啊,大于浪这个值了。肯定大了。啊,大于那个什么大于int了,说错了啊,大于这个int了。的范围是不是肯定没有这么大吧?这方肯定会报错,报错是为什么呢?因为你在这个地方给值的时候,这个类型,这个字面量也是有类型的。这个字面类型是什么呢?是int,你你不可能把这么大一个值给一个int的,所以它就会报错,我给大家举个例子。这是也是一个很经典的面试题,那直接跑错了。报错的原因,他并不会说是E的问题,他会说这个超过了一个特,那看案例错误,你看这。In take number is out of range for in time,看到没有,所以它说明这个超过了in,它说的是什么说?
17:04
这个超过了。超过。超过这个int范围了,那你怎么解决啊,同学们。简单的很,加个L就可以了。啊,加格说,哦,我告诉你啊,我这个值就是一个长,整形就没问题,好,这是我们的一个案例,好,我把这个整形的细节简单的给他整理到我们的笔记中去。好,标题三。这是我们整数的啊,一个细节的描述,三点,第一点。第一点,第二点。第二点,第三点。第三点,OK,那么我把这个案例呢,也给同学们放到这里来,案例我们就把它挪到这里来就可以了,非常简单。好,紧接着我们看下面的话题,好,整形我们就说完了。
我来说两句