00:00
来,那么接下来咱们继续再往下看啊,再往下。那么再往下呢,我给大家出一个题目啊,出一个题目,这个题目是请看是这样的一个题目啊,就是说呀,我浪类型的D等于什么呢?21474836。四七。行。可以吗?存在类型转换吗?各位告诉我,2147483647是谁的最大值?是谁的最大值?这个是int最大值对吧。是不是,哎,那么这个默认。被当做什么呀,Int来处理吧,是不是?哎,这个默认被当做int来处理D呢?D变量是long类型。
01:00
啊,小容量可以自动赋值给大容量。啊,自动类型转换,所以这个是没有任何问题的啊,没有任何问题的来D。那么接下来我们编译一下去运行,我们发现这程序很正常,2147483647对吧,好,那么接下来我们。把这个题啊。变成这样,2147483647后边加一个八。2147483648好,请问同学们这个程序能不能编译通过?各位。Long类型能不能放得下这个数据?你就告诉我浪类型能不能放得下这个数据可以吧。浪放这点数据是不是小菜一碟呀?哎,但是我们的这个能不能编译通过。就是这个编译器会报错吗?为什么会报错?编译器会报错吗?
02:03
为什么?Long e等于2147483648。这个报错吗?浪是可以存得下它的呀,那为什么会报错呀?啊,因为这条规则。各位,在加码中有一条非常重要的规则必须记住。啊。在任何情况下这个数字啊。他都会默认被当做什么呀来处理。啊。之前我曾经说过,等号这个运算符,它的运算效果是什么?运算效果是等号,右边先执行对吗?将执行完的结果赋值给左边的变量,对不对?之前是不是这么讲过呀啊等号右边先运算运算结果复制给左边的变量。这个呢,其实就是我们之前讲的这个赋值运算符。
03:00
那么这个2147483648呢,它上来啊,就会被当做什么呀,Int类型来看待,注意啊。在Java中。整数型字面量,字面量一上来啊编呃,一上来编译器就会将。将它看作int类型啊,在加入中整数性自变量一上来,编译器就会把它,就会将它看作什么int类型。R2147483648已经超出了int的范围。啊,所以在。在啊。没有赋值之前就出错了。记住啊。不是E放不下2147483648。一是浪类型完全可以容纳谁。
04:03
2147。483648,只不过只不过啊,2147483648本身已经超出了in的范围。这就是一个比较矛盾的地方,在Java语言当中,它这个只要是带这个数字的上来,你看就像刚才那个同学问了一个问题,啥问题来着。啊说BATB等于26等号,后面这26上来,实际上它就会怎么着啊,就会被当做int类型来处理的啊,就会被当做int类型来处理的啊,你这个数字后边加上L,那就不一样了,它上来就是类型了,就不是int类型了,你像你这种情况的是你这种情况也是in。对吧,所以说这个呢,编译器会报错的啊,不是说这个放不下啊,是说等号右边这个值上来被当做int类型,Int类型来处理,而它本身已经超出了int类型范围,是因为这个啊,所以叫过大的整数,大家看这个报错原因啊。
05:01
这个呢叫整数太大,它不是它放不下啊,是整数太大,这个编译报错的原因是整数太大。那么怎么解决这个问题呢?非常之简单啊,只要在后边让他不看成是int类型,让它看成long类型,后边加一个L呗,对吧,这样的话我们是不是就可以了呀?哎,这个问题就解决了啊,加一个L就解决了。来我们再来编译,我们再来运行int test02走运行一下2147483648啊这样是这样去解决的啊,这样去解决的大写的LL。
我来说两句