REW

How To Find The Min Of Two Numbers In Java?

Published Aug 29, 2025 4 min read
On this page

In Java, the most direct and efficient way to find the minimum of two numbers is by using the static Math.min() method. This built-in function is overloaded to handle all primitive numeric types, including int, long, float, and double.

Method 1: Using Math.min()

The Math.min() method is the standard approach for finding the smaller of two values. It is part of the java.lang.Math class and is available without any special imports.

Syntax

Math.min(arg1, arg2)

Parameters

  • arg1: The first number to compare.
  • arg2: The second number to compare.

Return Value

The method returns the smaller of the two numbers. The return type is the same as the input types. For example, comparing two int values returns an int, while comparing two double values returns a double. If you compare a double and an int, the method returns a double.

Examples

Integers

int a = 10;
int b = 5;
int minInt = Math.min(a, b);
System.out.println("The minimum integer is: " + minInt); // Output: The minimum integer is: 5

Use code with caution.

Floating-Point Numbers

double x = 3.14;
double y = 2.71;
double minDouble = Math.min(x, y);
System.out.println("The minimum double is: " + minDouble); // Output: The minimum double is: 2.71

Use code with caution.

Mixed Types

long p = 1000000000L;
int q = 500000000;
long minResult = Math.min(p, q);
System.out.println("The minimum value is: " + minResult); // Output: The minimum value is: 500000000

Use code with caution.

Method 2: Using the Conditional (Ternary) Operator

For a more compact, single-line solution, you can use the conditional operator (? :) to compare two values. This approach is often used as a direct alternative to a simple if-else statement.

Syntax

result = (condition) ? value_if_true : value_if_false;

Example

int num1 = 20;
int num2 = 15;
int minTernary = (num1 < num2) ? num1 : num2;
System.out.println("The minimum value is: " + minTernary); // Output: The minimum value is: 15

Use code with caution.

Method 3: Using an if-else statement

For beginners or situations requiring more complex logic, a traditional if-else statement is a clear and readable option.

Example

int val1 = 50;
int val2 = 75;
int minIfElse;
if (val1 < val2) {
    minIfElse = val1;
} else {
    minIfElse = val2;
}
System.out.println("The minimum value is: " + minIfElse); // Output: The minimum value is: 50

Use code with caution.

Method 4: Bitwise Manipulation (Advanced)

For integer types, it is possible to find the minimum value using bitwise operators. This is a highly optimized technique used in low-level programming where branching (from an if-else statement) needs to be avoided. This method is generally not recommended for regular application development due to its complexity and lower readability.

How it works

The expression y + ((x - y) & ((x - y) >> 31)) can be used to find the minimum of two integers x and y assuming 32-bit integers.

  • The expression (x - y) >> 31 performs an arithmetic right shift. For positive numbers (x > y), this results in 0. For negative numbers (x < y), it results in -1 (or ...11111).
  • The & operator then either masks (x-y) to 0 or leaves it as (x-y), effectively adding 0 or (x-y) to y.

Example

int x = 10;
int y = 5;
// For x=10, y=5: x-y = 5. (5 >> 31) = 0. (5 & 0) = 0. 5+0 = 5. Correct.
// For x=5, y=10: x-y = -5. (-5 >> 31) = -1. (-5 & -1) = -5. 10 + (-5) = 5. Correct.
int minBitwise = y + ((x - y) & ((x - y) >> 31));
System.out.println("The minimum value is: " + minBitwise); // Output: The minimum value is: 5

Use code with caution.

Comparison of Methods

Aspect Math.min() Ternary Operator if-else Statement Bitwise Manipulation
Readability High (clearly states intent) Moderate (compact, but can be less readable) High (clear, easy for beginners) Low (complex, hard to understand)
Performance Excellent (highly optimized native code) Excellent (compiler can optimize to the same machine code as if-else) Excellent (direct comparison, most performant) Potentially faster in specific contexts (no branching)
Data Types Handles all primitive numeric types (int, long, float, double) Works for all types that can be compared Works for all types that can be compared Only for integer types (int, long)
Best For General-purpose use, clearest code Simple assignments where compactness is desired Complex logic or educational purposes Highly specific, low-level performance-critical scenarios

Conclusion

For virtually all applications, Math.min() is the recommended method for finding the minimum of two numbers in Java. It is part of the standard library, is highly readable, and is guaranteed to be performant across all JVM implementations. The ternary operator and if-else statements are also excellent choices depending on your coding style and the complexity of the operation. Avoid bitwise manipulation unless you have a deep understanding of its intricacies and a critical performance requirement.

Enjoyed this article? Share it with a friend.