Convert Long into Integer

Java

Java Problem Overview


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

Java Solutions


Solution 1 - Java

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);

Solution 2 - Java

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]

Solution 3 - Java

For non-null values:

Integer intValue = myLong.intValue();

Solution 4 - Java

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;
}

Solution 5 - Java

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);
    		
    	}
}

Solution 6 - Java

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.

Solution 7 - Java

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.

Solution 8 - Java

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;
    }

Solution 9 - Java

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...

Solution 10 - Java

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);

Solution 11 - Java

long visitors =1000;

int convVisitors =(int)visitors;

Solution 12 - Java

try this:

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

Solution 13 - Java

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

Solution 14 - Java

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);

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSrinivasanView Question on Stackoverflow
Solution 1 - JavaThiloView Answer on Stackoverflow
Solution 2 - JavaSean Patrick FloydView Answer on Stackoverflow
Solution 3 - JavaamukhachovView Answer on Stackoverflow
Solution 4 - JavaJacob MarbleView Answer on Stackoverflow
Solution 5 - JavaDushyant SapraView Answer on Stackoverflow
Solution 6 - JavaJasper de VriesView Answer on Stackoverflow
Solution 7 - JavaJeff FosterView Answer on Stackoverflow
Solution 8 - JavaAdiView Answer on Stackoverflow
Solution 9 - JavaEdwin MiguelView Answer on Stackoverflow
Solution 10 - JavaAnjal SaneenView Answer on Stackoverflow
Solution 11 - JavaBalaView Answer on Stackoverflow
Solution 12 - JavaShameem BashaView Answer on Stackoverflow
Solution 13 - Javausr-local-ΕΨΗΕΛΩΝView Answer on Stackoverflow
Solution 14 - JavatsaoweView Answer on Stackoverflow