我知道隐式转换是由编译器和虚拟机自动完成的,当 Java 不确定结果是否有效时,需要显式转换来转换数据类型。转换应该在基元之间或对象之间进行。
我的问题是:如果我的应用程序同时使用整数和长整数 - 我应该同时使用long
这两种类型吗?还是垂头丧气long
?或铸造int
?
两种类型都使用 long 会导致一些问题吗?
我认为您应该使用涵盖所有值的数据类型,所以我会使用long
所有内容,因为它简化了代码并避免了潜在的风险转换。
long
toint
会使您丢失数据,因为 along
大于 an int
(因此数据在转换中被截断)。int
tolong
几乎(参见下面Colin Morelli 对此的评论)与long
从头开始使用相同,并且避免使用 2 种类型。此外,这种强制转换没有任何意义,因为您实际上是在毫无意义地占用内存(除非您使用int
and 方法明确需要 along
作为参数,那么您显然别无选择,只能强制转换)。我看到使用的缺点long
是:
long
将所需的内存加倍而不是int
(仍然考虑到 Colin Morelli 在下面的评论)。long
可能会产生较慢的性能(如上所述,但我不确定)这取决于您的日期范围。如果您知道您的数字将介于Integer.MIN_VALUE和Integer.MAX_VALUE之间,请查看The Java Tutorials: Primitive Data types。否则,选择或BigInteger。long
你真的需要更清楚你正在处理的数字范围。那么对于给定的输入,最好的选择是使用long
. 但是如果你真的需要让它通用并且内存不是一个限制,那么你可以使用BigInteger
.