前言
今天在复习java的时候,碰到了一个问题,就是关于数据类型int和long以及其他几个可以表示数字的类型(byte short char)之间的转化问题,其实就是整数后面加不加L的问题,以及java代码中出现的整数的默认接收类型(可以推广到double和float)
正文
假设和测试
首先呢,我们打开eclipse(已经很久没用eclipse,但不得不说它依旧是一款很棒的而且免费java IDE)
(新建工程的环节略过)
直接进入正题
在这里暂时还看不出来问题,说是把这个99999999用64位的long进行储存好像也说的过去
再看看下面这个
到了这里的话,如果继续假设上面的说法是正确的,那么long类型显然可以存进去这个99999999999,但是这里却报了错,所以我们可以推断这个99999999999本来是打算用int储存的,但是这个999999999999却超出了int的范围,int无法接收它,所以报错了,
按照正确的做法来话
应该在99999999999后面加上一个L或者l(推荐L,防止和数字1混淆),如下
所以这里出现的L应该是代表把"L"前面的这个99999999999用64位的long进行储存,因为在java中的整数默认都是用32 位的int来储存的
验证
我们可以利用java打印来验证
这里随便打印一个99999999,编译器不报错,控制台正常输出99999999
当准备多输出几个9的时候,我们发现编译器报错了,原因是这里的999999999999用int是存不下了,这也正好说明了一点,java里面的出现整数都是先用int储存的,然后根据前面的基本数据类型再进行转化,比如short sh=10;就是代表把int储存的10强行赋给short,但这里并不会报错,这里的强转是没问题
结尾
反正要记住的是,在java中的整数类型(没有特殊标志)都是用int储存的,类似的可以猜测double和float之间的类似关系,但java中出现的小数默认是用双精度的double来接收的
(第一次写博客,写的不好的话求轻喷在此谢过大家了)