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)
Facing issues? Have Questions? Post them here! I am happy to answer!
- Deep Dive into Java 8 Predicate Interface
- Read and Parse XML file using Java DOM Parser [Java Tutorial]
- Java 8 Predicate Functional Interface isEqual() Method Example
- Convert Multidimensional Array toString In Java
- How to read int value using Scanner Class Java
- Spring Boot AI + LLM + Java Code Example
- Write to a File using Java Stream API
- Implementing Bubble Sort Algorithm using Java Program
- How to Fix XmlBeanDefinitionStoreException in Java SpringBoot ApplicationConfig.xml
- YAML Parser using Java Jackson Library Example
- [Fix] java: integer number too large compilation error
- Convert JSON String to Java GSON Object Example
- Read a file using Java 8 Stream
- Java Spring Boot 3 Web Hello World with Gradle in IntelliJ
- Ways Compare Dates in Java Programming with Examples
- Pretty Print JSON String in Java Console Output
- Java JDBC with Join Queries Example
- How to Check For Updates on Windows 11 (Step-by-Step)
- [Fix] java.net.MalformedURLException: unknown protocol
- How to display date and time in GMT Timezone in Java
- Error: LinkageError occurred while loading main class UnsupportedClassVersionError [Eclipse Java]
- How to convert a String to Java 8 Stream of Char?
- RabbitMQ Queue Listener Java Spring Boot Code Example
- 5+ Fibonacci number Series Java Program Examples [ 0 1 1 2 3 ..]
- Handling NullPointerException with Java Predicate
- Read JSON File in Python Program - Python
- Android Studio SDK Build-tools 23 rc2 not getting installed - Android-Studio
- How to install Classic Notepad App on Windows 11 - Windows-11
- Mac OS X Error: Could not create the Java Virtual Machine - Mac-OS-X
- Date Calculator: Add/Subtract - Days/Months/Years - Tools
- How to disable Wallpaper Tinting on macOS Sonoma 14 - MacOS
- Android Development: Spinners with Example - Android
- ADT Installation Error: requires plug-in org.eclipse.wst.sse.ui - Android