00:00
好,那么自动类型提升力预算呢,我们就说到这了,然后接着呢,我们来看第二个叫做强制类型转换啊,这个我们就不在这写了,我再去新建一个,在D02,再新一个variable test3 CTRLCCTRLSCTRLV。哎,这个我在这标识一下啊呃,强制类型转换呢,我们说键,嗯建这个点Java文件啊,哎,我们写到这了,哎强制类型转换啊呃,什么叫强制类型转换呢?呃,一句话呢,先说清楚,它呢是我们叫自动类型提升运算的一个逆运算啊哎叫逆运算,这个自动类型提升呢,我们是将这个容量小小的,呃跟容量大的做运算的时候呢,结果呢,提升为容量大的,那假设我现在有一个容量大的这个变量,我就想给它呢附到一个容量小的变量上,问可不可以,或者说如果可以的话呢,怎么做?哎这就涉及到叫强制类型转换,对比如说。
01:22
我们现在呢,哎,我在这个内存当中,或者我们一执行,这不就在内存中啊,哎,我定义这个变量,我呢叫12.3啊,我现在呢,就想把这个double型的变量啊,赋给一个in的型的变量。I1,你要这样写行吗?这样写的话呢,八成感觉会有点问题是吧?来我们执行一下,哎,你看这时候就挂掉了啊,你要这样行的话呢,那岂不是这个int型呢,比它的容量还大了是吧?啊,这显然是错误的啊,但是这个需求呢,也是合理的,有的时候我们确实会出现这样的情况,我现在拿到的就是一个double型的,然后但是我现在呢,需要的就是一个int型的。
02:13
举个例子啊,比如说呢,咱们这个后面呢,还会讲数据库,数据库的话呢,我们知道会存放着很多张表啊,假设这是其中的一张表啊,比如说就像京东吧,京东大家呢,后台关于这个京东的这个用户,很显然这里边这个数据量极大啊,几百万是上千万的这个用户,假设有一张表呢,它这个数据量呢,就有10万条啊,我现在呢,可以后边咱们会学circle口,诶我写一条circleq语句,查这个表,看看有多少条记录,诶它会给我们返回一个值,默认的情况下呢,我查的说这个记录的条数有多少,它返回的呢,实际上是一个浪形的啊,因为它怕这个in型存不下是吧?诶它默认的返回的是一个浪型的变量,假设呢,返回的就是比如说呃,几千几百啊,几十几条,可能这个条数不多哈,但是它也是用浪型接收,但是我们现在回到Java层面呢,咱们现在就是需要拿一个int型的变量去接收这个数,那就需要呢,把这个浪型呢强转成int型。
03:12
那现在就问怎么做,哎,这就得这样是吧,那怎么来实现呢?哎,我们说呢,必须要使用强转幅啊,在我们这个,呃,第一的前边的话呢,我们写一个小括号,在小括号里边指明呢,你要强转为的类型啊,那这呢,我们就写上int。哎,相当于就把这个double型强转为int型了啊,那我们输出一下。哎,那大家猜一下这个结果会是多少12是吧,肯定不能是12.3了吧,诶变一过了。哎,你看12,那我这要写十二点九四十五嘛,对也是12啊对,这时候呢,我们把这种呢,运算不能叫四舍五入啊,这种对就叫截段啊,截段就是你12.9999那也不行,就是全部呢,光取整数部分,这些部分呢就全不要了。
04:24
啊哎,那通过刚才这个操作呢,其实也看到了,本身这个数呢,可能比较精确,是12.9了,但是由于你做了一个强转,哎,我们这个数据呢,就变成了12了,没有那么精确了,哎,我们把这种情况呢,称作叫损失精度啊损失精度原来这个数呢可能更精确,但是呢,你现在精度呢,损失了小数点后没有了。啊哎,把这个过程写一下啊哎,首先呢,强制行转化,我们说呢,需要使用。哎,这个叫强转服。
05:01
哎,这个强角符呢,就是我们这一段小括号啊,哎,这是第一个问题,然后第二个呢,需要注意的点啊,这个我们说呢,强制性转换,哎说可能导致精度损失,我这写的叫可能啊。啊,不是说一定会出现经度损失的,比如说我们这本身呢,咱们定义了一个浪型的,比如叫L1,我是一个123啊,你现在把这个浪型的转化成一个short型,哎,前面呢,加上一个short,这是不是就没有精度损失了,没有对,这就没有精度损失,相当于你这个浪形的,这是一共是有八个这个这个这个字节了哈,然后呢,你相当于是八个啊简单画一下。哎,这是八个字节,是一个浪形的,然后呢,我现在给它强转成short型,呃short呢是两个字节啊,相当于就是你把这些位置呢,就给它砍掉不要了啊,如果这些位置呢,它本身就全是零,本身也没有存储这个数据了,那其实就没有精度损失。
06:15
啊就是还是这块的个数据啊啊哎,这个呢,相当于是呃没有呃精多损失啊嗯还有一种情况,再举个例子啊,我in的型的一个I3I28等于128,哎,这是128,然后呢,我给它强转成一个BA啊显然呢,这块呢得需要加一个强转弧,那这时候呢,看看这个BAT是多少说诶这个这个也没有什么小数点的问题了是吧?这这你要说让他是128的话呢,他也成不了128呀,嗯,128不行,那就给他个127。
07:01
看看。感觉有可能你会惊讶。运营运营没保存吧,S建议运行,诶啊没写没写是吧,白整了啊编译就行。会员吧。啊,就是相当于是嗯,12128不行了,说127也行啊,结果呢,发现是个最小的数啊。哎,这个是什么原因,这个呢,咱们就得深入到二进制这个层面来解释了啊,这个咱们一会说进制的问题就知道了啊,这个呢,变成负2128了啊在这呢,其实也算是一种精度损失啊,所以精度损失的这个,哎举例哎,这是一个二,哎上面是一。
08:06
哎,这是这样的啊好,这是我们说的这个,呃,强制力行转换,呃,大家呢,需要关注的事情呢,就是这个啊,第一个怎么能够强转啊,这个其实这个强转就是咱们刚才说的这个往回返的话呢,就得需要强转了啊,这是这个,然后另外呢,这个强转的时候呢,要小心一点,就是它可能会导致精度损失。啊,是这个情况啊行。
我来说两句