Java is called a hybrid-programming language or not a truly object-oriented language as it supports primitives. Working with primitives may not be easy as it may seem as incorrect type conversions can create havoc!
In Java, when we convert a larger data type such as a double, long to a smaller one such as an int, short, byte, char this process is called "narrowing primitive conversion" which this can result in loss of precision.
Let us take a look at a few ways to convert a Java int type to a primitive long.
Example 1: By Type-casting to int (not recommended)
Code: public static void main(String[] args) {
long myLong = 20L;
int myInt = (int) myLong; //typecasting
System.out.println(myInt);
}
Output: 20
This may look good, but there is a serious problem that can arise here. int in Java are of 4-bytes and it can hold values between the range -2147483648 to 2147483647, whereas long have a size of 8-bytes so they can hold a signed value of range -9223372036854775808 to 9223372036854775807
So let's try the above code with a value of long as 922337203685.
public static void main(String[] args) {
long myLong = 922337203685L;
int myInt = (int) myLong;
System.out.println(myInt);
}
Output:
-1080764955
Example 2: Using toIntExact() method from java.lang.Math package.
toIntExact() method was introduced in Java 8, this is the proper way of typecasting a long to long to int.
Code:import static java.lang.Math.toIntExact;
public class Main {
public static void main(String[] args) {
long myLong = 922337203685L;
int myInt = toIntExact(myLong);
System.out.println(myInt);
}
}
Output:
Exception in thread "main" java.lang.ArithmeticException: integer overflow
at java.base/java.lang.Math.toIntExact(Math.java:1371)
at Main.main(Main.java:7)

Have Questions? Post them here!
- Create a Zip file using Java Code programmatically
- Eclipse : A java Runtime Environment (JRE) or Java Development kit (JDK) must be available
- How to Sort a LinkedList in Java
- Loading class com.mysql.jdbc.Driver. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver
- How to declare and initialize Array in Java Programming
- [Fix] java: integer number too large compilation error
- Java JDBC Connection with MySQL Driver in VS Code + Troubleshooting
- Reading .xls and .xlsx Excel file using Apache POI Java Library
- IntelliJ: Error: Could not find or load main class, java.lang.ClassNotFoundException
- How to get Client IP address using Java Code Example
- Truncate table using Java JDBC Example
- Struts 2 : There is no Action mapped for namespace [/] and action name [form] associated with context path [/proj]
- How to get file path in Idea IntelliJ IDE
- Java Generics explained with simple definition and examples
- Java SE 8 Update 301 available with various bug fixes and security improvements
- Java: Collect Stream as ArrayList or LinkedList
- Java JDBC Connection with PostgreSQL Driver Example
- How to check if Java main thread is alive
- How to fix Java nio NoSuchFileException wile reading a file
- Java 8+ get Day of the Week Examples with LocalDateTime, DateTime, ZonalDateTime and Instant classes
- Ways to Convert Integer or int to Long in Java
- [Java] How to throws Exception using Functional Interface and Lambda code
- [Fix] Spring Boot: mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
- Java: The value of the local variable string is not used
- Java JDBC: Insert Java 8 LocalDate and Time using PreparedStatement
- Mac - Steam Needs to Be Online to Update. Please confirm your network connection and try again error - News
- Notepad++ is about to exit prompt message - NotepadPlusPlus
- How to create a circular Image using pure CSS Code - CSS
- Remove all stopped containers in Docker using prune command - Docker
- How to change default macOS Terminal Window size - MacOS
- JSON Text to JavaScript Object using eval() Example: JSON Tutorial - Json-Tutorial
- Change the default Line Encoding Notepad++ (CR LF) - NotepadPlusPlus
- [Fix] Access Denied - GoDaddy Website Firewall - IP Blocked - HowTos