eclipse输入基本数据类型long不加L为什么会转换为int型,只能输入10位(超出会out of range)?

今天在做题的时候,遇到这样一个基础题题:

public class Test {

	public static void main(String[] args) {
		long num = 2147483648;
		num += 2L;
		System.out.println(num);
	}
}

问输入的结果是多少?

当时选择的:2147483650,错了,在eclipse中测试,发现编译无法通过,

才发现long型数据后面没有就+L,然后就去查资料,在文章中发现:

《java解惑》中有介绍:

原因在于java不具有‘目标确定类型’的特性(指存储结果的变量的类型会影响到计算所使用的变量类型),就是说java不会主动把你要计算的24606010001000变成你要存入的x变量的long类型,而是先以int类型进行计算,得到的应该是86400000000L,但是java把它当做int,存不下,溢出了,截取得到500654080再保存到int中, 最后int转成long赋值给x,最后的结果就不准确了;
避免这种情况的常用方法是给 第一个因子添加类型L;

加上L后运行通过,基础不扎实,细节不到位,罪过,罪过。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值