Palindrome Number in Java – Logic, Explanation & Programs

Learn what a palindrome number is and how to check it in Java using loops, strings, recursion, and optimized techniques. This guide includes examples, edge cases, and clean explanations.

Palindrome Number in Java

Last updated: February 8, 2025

Palindrome numbers are commonly asked in Java interviews, coding rounds, and beginner programming assignments. They are simple yet help strengthen your understanding of number manipulation and logic building. In this guide, we will understand what palindrome numbers are and explore multiple Java programs to check them.

What is a Palindrome Number?

A palindrome number is a number that remains the same when its digits are reversed.

Examples of palindrome numbers:

121, 131, 1441, 1221, 9999

Non-palindrome numbers include:

123, 145, 120, 5678

Java Program: Check Palindrome Using Loop

This is the most basic and easiest approach using simple arithmetic.


import java.util.Scanner;

public class PalindromeCheck {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.print("Enter a number: ");
        int n = sc.nextInt();

        int original = n;
        int reversed = 0;

        while (n > 0) {
            int digit = n % 10;
            reversed = reversed * 10 + digit;
            n = n / 10;
        }

        if (original == reversed)
            System.out.println(original + " is a Palindrome Number.");
        else
            System.out.println(original + " is NOT a Palindrome Number.");
    }
}
  

Check Palindrome Using String Conversion

This method is very simple and uses string reversal logic.


public class PalindromeString {

    public static void main(String[] args) {
        int n = 1221;

        String s = Integer.toString(n);
        String reversed = new StringBuilder(s).reverse().toString();

        if (s.equals(reversed))
            System.out.println(n + " is a Palindrome Number.");
        else
            System.out.println(n + " is Not a Palindrome Number.");
    }
}
  

Optimized Palindrome Check

This optimized version avoids reversing the full number and stops early for efficiency.


public class PalindromeOptimized {

    public static boolean isPalindrome(int n) {
        if (n < 0 || (n % 10 == 0 && n != 0)) return false;

        int reversedHalf = 0;

        while (n > reversedHalf) {
            reversedHalf = reversedHalf * 10 + n % 10;
            n = n / 10;
        }

        return (n == reversedHalf) || (n == reversedHalf / 10);
    }

    public static void main(String[] args) {
        int n = 12321;

        if (isPalindrome(n))
            System.out.println(n + " is Palindrome.");
        else
            System.out.println(n + " is Not Palindrome.");
    }
}
  

Palindrome Number Using Recursion

Recursion provides an elegant solution for conceptual understanding.


public class PalindromeRecursion {

    public static int reverse(int n, int rev) {
        if (n == 0)
            return rev;
        return reverse(n / 10, rev * 10 + n % 10);
    }

    public static void main(String[] args) {
        int n = 4554;
        int reversed = reverse(n, 0);

        if (n == reversed)
            System.out.println(n + " is Palindrome.");
        else
            System.out.println(n + " is Not Palindrome.");
    }
}
  

Palindrome Numbers in a Range

This program prints all palindromes between two numbers.


public class PalindromeRange {

    public static boolean isPalindrome(int n) {
        int original = n, reversed = 0;

        while (n > 0) {
            int digit = n % 10;
            reversed = reversed * 10 + digit;
            n /= 10;
        }
        return original == reversed;
    }

    public static void main(String[] args) {
        System.out.println("Palindrome numbers between 1 and 500:");

        for (int i = 1; i <= 500; i++) {
            if (isPalindrome(i))
                System.out.print(i + " ");
        }
    }
}
  

Conclusion

Palindrome numbers are a great way to build your foundational programming skills in Java. You can try different variations such as palindromes in strings, sentences, or ranges to deepen your understanding. The loop method is ideal for beginners, while optimized methods are suitable for performance-heavy situations.