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!
Rakesh (He/Him) has over 14+ years of experience in Web and Application development. He is the author of insightful How-To articles for Code2care.
Follow him on: X
You can also reach out to him via e-mail: rakesh@code2care.org
- Get the current timestamp in Java
- Java Stream with Multiple Filters Example
- Java SE JDBC with Prepared Statement Parameterized Select Example
- Fix: UnsupportedClassVersionError: Unsupported major.minor version 63.0
- [Fix] Java Exception with Lambda - Cannot invoke because object is null
- 7 deadly java.lang.OutOfMemoryError in Java Programming
- How to Calculate the SHA Hash Value of a File in Java
- Java JDBC Connection with Database using SSL (https) URL
- How to Add/Subtract Days to the Current Date in Java
- Create Nested Directories using Java Code
- Spring Boot: JDBCTemplate BatchUpdate Update Query Example
- What is CA FE BA BE 00 00 00 3D in Java Class Bytecode
- Save Java Object as JSON file using Jackson Library
- Adding Custom ASCII Text Banner in Spring Boot Application
- [Fix] Java: Type argument cannot be of primitive type generics
- List of New Features in Java 11 (JEPs)
- Java: How to Add two Maps with example
- Java JDBC Transition Management using PreparedStatement Examples
- Understanding and Handling NullPointerException in Java: Tips and Tricks for Effective Debugging
- Steps of working with Stored Procedures using JDBCTemplate Spring Boot
- Java 8 java.util.Function and BiFunction Examples
- The Motivation Behind Generics in Java Programming
- Get Current Local Date and Time using Java 8 DateTime API
- Java: Convert Char to ASCII
- Deep Dive: Why avoid java.util.Date and Calendar Classes
- How to install Roblox Game on Mac [Intel/M1/M2] - MacOS
- [Fix] zsh: command not found: nvm - MacOS
- GitHub: How to Search Code - Git
- Compare two text files in Notepad++ - NotepadPlusPlus
- How to extract Java Jar/War/Ear files in Linux - Java
- Convert String to LocalDate in Java - Java
- 7 Python Arithmetic Operators with Examples [Tutorial] - Python
- Fix - Project JDK is misconfigured in IntelliJ - Java