00:00
好了,那么接下来咱们继续再往下看啊,咱们再来一个例子。Int test04,那么这一块呢,比较枯燥啊各位这个也是没办法啊,没办法咱们这个东西啊,现在就是Java刚刚开始的时候,咱们就是枯燥啊,因为现在呢,我们还做不出来什么东西,对不对,哎,没什么可好玩的。所以这块呢,感觉很枯燥也很正常啊。来啊,那么这块这样写,各位大家看啊,BATB现在等于什么呀,等于300。好,问一下同学们,这个行不行。告诉我这个程序这么写行不行?行吗?行。300为啥不行?就分析啊,以下代码编译可以通过吗?
01:05
是数字过大吗?位不够,不兼容。首先我们分析一下啊,300被默认当做什么?类型。是不是被当做int类型啊,因为我是不是说过一个一个一个语法规则嘛,对不对,哎,语法规则。被默认当做什么呀,Int类型。啊,然后呢。B变量是BAT类型对吧。啊。那么这样的话是不是应该是大容量?转换成小容量啊。对吧,啊,要想怎么着啊,编译通过吧。必须怎么着?必须使用强制类型转换符对吧。
02:02
是不是,哎,所以说现在我不使用强力转换符,我们看一看会出问题啊int test04。啊,零四来点加吧。好说,不兼容的类型,从int转到BAT,可能会损失,可能会有损失,跟我们之前的错误是一样的。啊,就是这样,那如果说要想啊,要想让以上的程序编译通过。必须加强制类型转换符,还是那句话,虽然编译通过了,对吧?啊,虽然编译通过了,但。但是可能精度损失啊来BATB等于300,接下来在前面加一个什么呀,哎,加一个bit。对吧,那system out输入么,我们这个们可以测一。
03:00
对不对,哎,测试一下。来300。这个int类型。对应的。啊,这个对应的二进制是啥呀。可以再比划比划吗?是不是哎,幺二四八十六三十二六十四一百二十八。然后是200。56吧。那是不是这个这个这个呀。对吧,256。到300。还差多少啊?嗯。到300。
04:01
还差这个44。32。嗯。0011,这个对吗。44这么快就算出来了。0011011。1100。来看一下啊,咱们同学们给的这个。给的这个值啊,这个32还不对,不是32。来看一下啊,这谁给的,君丽给的是吧?的啊。然后呢,这个位置是零是吧,这个位置是零,这是幺是不是啊,这是不是幺。
05:01
然后是是。然后是001。是不是,哎,那这块对不对啊,这是一个32 32呢,再加上这个啊,这是。32加上这个二是34,三十四三十四加四,三十八三十八再加八。六对呀。不对呀,各位。来,再来一次啊,幺二。四八对吧。嗯,十六三十二。然后64 128。256。256。256,咱们现在这个数字是多少啊,是300吧,256呢,应该是,呃,44呗。
06:01
剩下44就组合起来就行了,这个位置是一呗。这个位置是一。对吧,剩下这个谁和谁组合起来。这个是。20。哎哟。三二。对,八。然后再加四。110。对吧。100。100101100啊,你也可以怎么着呢,可以怎么啊,按照咱们那个短短除法也是可以的啊,没有这个问题。一个一两个零,一个一一个零啊100101100。来这个对应的二进制码是什么呀?是我们的一个100。
07:05
然后是幺零是吧。然后是1100。好,那么这块呢,咱们这个如果是印的的话,来一。2345678。对吧。1234567。啊,12345678。12345678。那300所对应的int类型的二进制码就是这个四个字节嘛,一个两个三个四个对不对,是这个值啊,然后接下来呢,它进行强转转的话,它就会诶砍掉什么呀,应该是BY占用。一个字节砍掉前三个字节。啊,这个结果是是什么呢?是这个。
08:03
是不是啊,那这个值是多少啊。12484个86 32。嗯。32 48。应该是44吧。32加八四十四十四对不对,那应该这个值是44。这个值是不是44强转之后。我们看一下啊,加va c。Int test04加va加va行int t04走。哦,是44。44啊,大家算的很快啊,就是脑子很快啊。好,那么这个呢,其实就是有精度损失了,损失掉了啊呃,300锁定安置码是这个这个码啊,你我说了,你可以采用这个短除法,也可以采用计算器的方式,都可以啊,你愿意用哪个用哪个啊,然后呢,这块呢,强转四个字节转成三,转成这个一个字节,强转的话把前三个字节砍掉啊,剩下这一个字节,这一个字节就是44啊。
09:06
哎,那你说带啊,我现在加个X等于一。好,各位这个行不行。这个编译能通过吗?这个编译能通过吗?各位告诉我。这个可以啊。那一不是int类型吗?一是类型。对吧,默认被当做int类型来看。X是什么类型啊类型。对不对,哎,一个字节。大容量无法直接转换成小容量。按说啊是编译怎么着啊,报错的,真的,因为我们之前在一直在讲的就就是这样啊,你这个不是出错了吗。
10:04
对吧,哎,这个按说应该出错呀,是不是按说编译应该报错的啊,但是我们来看看这个编译到底报错还是不报错。这里有个很重要的一个规则,各位啊,需要大家记住,这这个需要大家记住啊,来他加我说有这么一个规则,来编译一下int test04走。我们发现没报错,诶不是Java虚拟机智能啊,不是GM很智能啊,不是G,这是这是编译器允许这种语法啊,那BYT呢,加个Y等于127。哎,我们看看。也行啊,来,我们再来一个BYZ呢,等于128。哎,我们再来看一下。废了废了啊,这不行了,这不行了,所以它有规矩啊,有规矩,有规矩什么规矩呢?在加法中有一个语法机制,这种语法是什么?就是如果,如果你这个数本身没有超BAT的取值范围的话,你可以直接用等号赋值,没问题。
11:06
啊,Java中有一个有一个语法规则啊,这里有一个很重要的语法规则,我在这里写一下,这个其实就是为了方便开发,方便编程,你你好好想想,萨德那帮人在设计这个语言的时候,设计这个语法的时候,是不是就是为了为了方便我们程序员开发呀。这种语法是不是就是为了方便我们程序员的写代码呀,对不对啊,Java中啊有一个语法规则啊,什么规则呢?当这个整数型自变量,就整数型自变量没有超出什么呢,带T的取值范围。那么这个整数型自变量可以直接复制给贝塔。类型的变量。没道理啊,按说是没道理的,你这个不行,这个按说肯定也是不行的,因为你毕竟是int类型,你是bet类型,Int是四个字节,BAT类型呢是一个字节,你怎么能这样写呢?哎,结果呀,在咱们加法中是允许的啊,一啊可以,127可以,但128不行啊,一百十八不行,你看你看不行,128不行,对吧?你把这个给它注释掉,你看剩下的这两个是不是就可以。
12:21
啊,没有任何问题对吧?啊没有任何问题,这个和这个就是可以的。啊,其实这种语法就是为了方便编程啊,这种语法机制。语法机制是为了方便写代码而存在的啊,而存在的。那我问大家一个问题啊,如果如果没有这种语法规则的话,大家以后写代码是不是都得这么去写。Ix等于什么呀,一完之后前面加一个什么呀,BAT对吧,然后BATY等于什么呀,127前面我们是不是都得加个BAT呀,哎。
13:00
那这个127既然没有超出我们拜的人取值范围,那这个东西呢,干脆就怎么着啊,为了方便我们的开发,以后这个统一都不用写了,一都不用写了,对吧?但是呢,这个编译器啊,它能检测出来你等号后面这个值啊,哎,到底超没超这个范围啊,有没有超这个范围,所以说这个语法呢,其实就是,哎,就是咱们这个编译器给咱们的一个。这个特殊的一个照顾吧,算是啊,然后方便我们去写代码啊。那short是这样的吗?我们看一下short看看一行不行。来这么点out.plan打印输出S。我们编一下行啊。还行啊是吧,来short s1这块呢。嗯,32767有。嗯。那也没问题啊,来,再来一个。S232768行吗。
14:03
抄没抄呢?来我们看一下,编译一下。好,我们发现也出了这个问题,不兼容的类型从int转换成知可能会有损失啊,这是一样的,所以这个呢就编译报错了啊,这个就编译报错了,但上面这两个都是可以的啊,都是可以的,就这里,哎,还是那个结论啊,当什么呢,整数型字面量啊,没有超出什么呢,Short类型取值范围的时候。啊,该字面量。可以直接复制给。该变量可以直接复制给类型的变量。啊,能够直接没有任何问题。啊,可以。好了,那么这个咱们今天呢,就讲这么多吧,各位啊,咱今天讲这么多,咱们今天这块呢,其实这个东西啊,也不是说特别的多啊,不是特别多,理论这块比较多一些。
我来说两句