Convert Long into Integer

How to convert a Long value into an Integer value in Java?

3

14 Answers

Integer i = theLong != null ? theLong.intValue() : null; 

or if you don't need to worry about null:

// auto-unboxing does not go from Long to int directly, so Integer i = (int) (long) theLong; 

And in both situations, you might run into overflows (because a Long can store a wider range than an Integer).

Java 8 has a helper method that checks for overflow (you get an exception in that case):

Integer i = theLong == null ? null : Math.toIntExact(theLong); 
8

Here are three ways to do it:

Long l = 123L; Integer correctButComplicated = Integer.valueOf(l.intValue()); Integer withBoxing = l.intValue(); Integer terrible = (int) (long) l; 

All three versions generate almost identical byte code:

 0 ldc2_w <Long 123> [17] 3 invokestatic java.lang.Long.valueOf(long) : java.lang.Long [19] 6 astore_1 [l] // first 7 aload_1 [l] 8 invokevirtual java.lang.Long.intValue() : int [25] 11 invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [29] 14 astore_2 [correctButComplicated] // second 15 aload_1 [l] 16 invokevirtual java.lang.Long.intValue() : int [25] 19 invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [29] 22 astore_3 [withBoxing] // third 23 aload_1 [l] // here's the difference: 24 invokevirtual java.lang.Long.longValue() : long [34] 27 l2i 28 invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [29] 31 astore 4 [terrible] 
6

For non-null values:

Integer intValue = myLong.intValue(); 
3

If you care to check for overflows and have Guava handy, there is Ints.checkedCast():

int theInt = Ints.checkedCast(theLong); 

The implementation is dead simple, and throws IllegalArgumentException on overflow:

public static int checkedCast(long value) { int result = (int) value; checkArgument(result == value, "Out of range: %s", value); return result; } 

If you are using Java 8 Do it as below

 import static java.lang.Math.toIntExact; public class DateFormatSampleCode { public static void main(String[] args) { long longValue = 1223321L; int longTointValue = toIntExact(longValue); System.out.println(longTointValue); } } 

In Java 8 you can use Math.toIntExact. If you want to handle null values, use:

Integer intVal = longVal == null ? null : Math.toIntExact(longVal); 

Good thing about this method is that it throws an ArithmeticException if the argument (long) overflows an int.

1

You'll need to type cast it.

long i = 100L; int k = (int) i; 

Bear in mind that a long has a bigger range than an int so you might lose data.

If you are talking about the boxed types, then read the documentation.

The best simple way of doing so is:

public static int safeLongToInt( long longNumber ) { if ( longNumber < Integer.MIN_VALUE || longNumber > Integer.MAX_VALUE ) { throw new IllegalArgumentException( longNumber + " cannot be cast to int without changing its value." ); } return (int) longNumber; } 

Assuming not null longVal

Integer intVal = ((Number)longVal).intValue(); 

It works for example y you get an Object that can be an Integer or a Long. I know that is ugly, but it happens...

Using toIntExact(long value) returns the value of the long argument, throwing an exception if the value overflows an int. it will work only API level 24 or above.

int id = Math.toIntExact(longId); 

long visitors =1000;

int convVisitors =(int)visitors;

try this:

Int i = Long.valueOf(L)// L: Long Value

1

In addition to @Thilo's accepted answer, Math.toIntExact works also great in Optional method chaining, despite it accepts only an int as an argument

Long coolLong = null; Integer coolInt = Optional.ofNullable(coolLong).map(Math::toIntExact).orElse(0); //yields 0 

In java ,there is a rigorous way to convert a long to int

not only lnog can convert into int,any type of class extends Number can convert to other Number type in general,here I will show you how to convert a long to int,other type vice versa.

Long l = 1234567L; int i = org.springframework.util.NumberUtils.convertNumberToTargetClass(l, Integer.class); 
1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like