# Java 字符串回文 – Java 数字回文示例

> 原文： [https://howtodoinjava.com/puzzles/java-string-palindrome-number-palindrome/](https://howtodoinjava.com/puzzles/java-string-palindrome-number-palindrome/)

[**回文**](https://en.wikipedia.org/wiki/Palindrome "Palindrome") 是一个单词，词组，数字或其他单元序列，可以在任一方向上以相同的方式读取，通常如果使用逗号，分隔符或其他单词分隔符 。 [*不是必需的*]

类似地，回文数是指如果所有数字都颠倒了就代表相同数字的那些数字（下划线可以忽略较大的数字，例如 1_00_00_001）。 *数字文字中的下划线是 [**Java 7 功能**](//howtodoinjava.com/java-7/improved-formatted-numbers-in-java-7/ "formatted-numbers-in-java-7")* 中的新增内容。

## 1\. Java 回文字符串示例

要检查**回文字符串**，请反转[字符串](https://howtodoinjava.com/java-string/)字符。 现在使用 **String.equals()**方法来验证给定的字符串是否是回文。

#### 1.1 使用 Apache Commons StringUtils 检查字符串回文

**Java 中用于字符串**的简单回文程序。 它也是 Java 中使用**反向方法**的回文程序。

```java
public class Main 
{
    public static void main(String[] args) 
    {
        System.out.println( isPalindromeString("howtodoinjava") );		//false
        System.out.println( isPalindromeString("abcba") );				//true
    }

    public static boolean isPalindromeString(String originalString) 
    {
        String reverse = StringUtils.reverse(originalString);
        return originalString.equals(reverse);
    }
}

```

#### 1.2 使用 StringBuilder 检查字符串回文

同样的逻辑也可以应用于 **StringBuffer** 类。

```java
public class Main 
{
    public static void main(String[] args) 
    {
        System.out.println( isPalindromeString("howtodoinjava") );
        System.out.println( isPalindromeString("abcba") );
    }

    public static boolean isPalindromeString(String originalString) 
    {
        String reverse = new StringBuilder(originalString).reverse().toString();
        return originalString.equals(reverse);
    }
}

```

#### 1.3 用 for 循环检查字符串回文

将[用于循环](https://howtodoinjava.com/java/basics/for-loop-in-java/)，以使用 [charAt()](https://howtodoinjava.com/java/string/string-charat-method-example/)方法遍历最后一个索引的字符串字符来获取**反向字符串**，并创建新字符串。

仅当您在 Java 中检查**字符串回文而不使用反向方法**时，才使用此方法。

```java
public class Main 
{
    public static void main(String[] args) 
    {
        System.out.println( isPalindromeString("howtodoinjava") );
        System.out.println( isPalindromeString("abcba") );
    }

    public static boolean isPalindromeString(String originalString) 
    {
        String reverse = "";

        int length = originalString.length();

        for ( int i = length - 1; i >= 0; i-- )
            reverse = reverse + originalString.charAt(i);

        return originalString.equals(reverse);
    }
}

```

## 2\. Java 回文数示例

为了验证给定数字是否为**回文数**是否为真，我们需要反转数字位数，如果两者相等或不相等，则与原始数字进行比较。

```java
package com.howtodoinjava.puzzle;

public class PalindromeTest
{
    /**
     * Test the actual code if it works correctly
     * */
    public static void main(String[] args)
    {
        System.out.println(checkIntegerPalindrome( 100 )); 		//false
        System.out.println(checkIntegerPalindrome( 101 )); 		//true
        System.out.println(checkIntegerPalindrome( 500045 )); 	//false
        System.out.println(checkIntegerPalindrome( 50005 )); 	//true
    }

    /**
     * This function will test the equality if a number and its reverse.
     * @return true if number is palindrome else false
     * */
    public static boolean checkIntegerPalindrome(int number)
    {
        boolean isPalindrome = false;
        if(number == reverse(number))
        {
            isPalindrome = true;
        }
        return isPalindrome;
    }

    /**
     * This function will reverse a given number.
     * @return reverse number
     * */
    public static int reverse(int number)
    {
        int reverse = 0;
        int remainder = 0;
        do {
            remainder = number % 10;
            reverse = reverse * 10 + remainder;
            number = number / 10;

        } while (number > 0);
        return reverse;
    }
}

程序输出：

false
true
false
true

```

学习愉快！