Convert Long into Integer
To convert a Long
object to an Integer
, use the intValue()
method:
This is safe only when the Long
value is inside Integer
's limits (-2,147,483,648 to 2,147,483,647). If the value exceeds this range, you'll encounter overflow.
Handling nulls and overflow
Here, you might face two main issues: null
value and possible overflow. To handle null
values, a ternary operator can be used:
For arresting overflow, Math.toIntExact()
comes to the rescue:
Diverse conversion methods
Sometimes, simple intValue doesn't cut the mustard. Let's explore some more conversion strategies:
-
Integer.valueOf(long)
can be utilized for an explicit conversion: -
Ints.checkedCast()
from Google's Guava library safely checks for an overflow while casting:
Performance quirks
Here are few points to ponder about performance:
-
Unpacking the
Long
and casting it seems simple, but it adds an unnecessary operation. -
Using
Math.toIntExact()
has overflow checks built-in but it slows things down due to exception handling. -
A ternary operator with null checks is light, but it adds a conditional statement.
Always weigh the performance cost against the convenience they offer.
Being range conscious
An important point to remember during conversion is the 32-bit range limit of Integer. Going outside this range while converting will result in unexpected outcomes or precision loss.
The magic of auto-unboxing
In some situations, the compiler does this conversion magic called auto-unboxing:
Be aware though, this illusion crashes if your Long
value is null
.
Choose according to your scenario
Depending on the scenario, your conversion approach may differ:
- For painless safety checks, stick with
Math.toIntExact()
unless performance is crucial. - When dealing with possible
null
values, use a ternary operator to provide a default value. - Need to handle overflow and already using Guava in your project?
Ints.checkedCast()
is your go-to function. - For a simple and direct conversion within safe bounds, you can't go wrong with
intValue()
.
Was this article helpful?