Java将long类型转换成int
在Java编程中,类型转换是十分常见的操作。int转long属于向上转换,JVM会自动完成,几乎不需要开发者操心。但反过来——long转int,就需要注意了:这是向下转换,一旦数值超出范围,数据就会溢出。可以想象,一个大箱子硬塞进小抽屉,要么刚刚好,要么直接出错。

好在Java提供了几种常用的转换方法,无论你追求执行效率还是代码可读性,都能找到合适方案。下面直接介绍重点。
一、强制类型转换
最直接、最常用的方式就是强制转换,例如:
long ll = 300000; int ii = (int)ll;
一句话总结:简洁高效,但你需要自己确保ll的值在int范围内(-2^31 ~ 2^31-1)。否则,高位数据会被直接截断,结果可能变成负数或完全不符合预期。
二、调用intValue()方法
如果你更习惯面向对象的写法,可以通过包装类来转换:
long ll = 300000; int ii = new Long(ll).intValue();
这种方式本质上与强制类型转换相同,只是多了一次装箱和拆箱过程。代码上稍显冗余,但语义更清晰:明确表示取Long对象的int值。对初学者来说,更容易理解“long是基本类型,Long是包装类”这一区别。
三、先将long转为字符串String,再转为Integer
这个方法比较“绕”:先把long变成字符串,然后用Integer.parseInt将字符串解析成int。
long ll = 300000; int ii = Integer.parseInt(String.valueOf(ll));
说实话,日常开发中使用较少——绕了一圈,性能不如前两种。但在特定场景下,比如你只有字符串形式的数字,或者需要对数字做格式校验(如先截取、拼接再转换),这种“曲线救国”的方式反而顺手。
三种方法都已列出,简单明了,具体选择取决于你的项目需求和编码习惯。
总结
long转int是典型的窄化转换,核心要点只有一个:确保目标值在int范围内,否则数据会丢失。强制转换速度最快,intValue()最符合面向对象风格,字符串绕路法最灵活但性能最差。实际项目中,推荐优先使用强制类型转换,前提是你已经做好了范围检查。
