📜  反转Java中的字符串String

📅  最后修改于: 2020-03-27 10:48:39             🧑  作者: Mango

本文通过示例讨论了5种不同的Java反向字符串方法。
例子:

先决条件:Java中的String vs StringBuilder vs StringBuffer
以下是有关String和StringBuffer类的一些有趣事实:
1. String对象是不可变的。
2. Java中的字符串类没有reverse()方法,但是StringBuilder类已经内置了reverse()方法。
3. StringBuilder类没有toCharArray()方法,而String类有toCharArray()方法。

  1. 将字符串转换为字节: getBytes()方法用于将输入字符串转换为bytes []。
    方法:
    1.创建一个长度相等的临时字节[]到输入字符串的长度。
    2.存储字节(我们通过使用getBytes()方法)以相反的顺序进入临时字节[]。
    3.使用byte []创建一个新的String abject存储结果。
    // Java展示使用ByteArray反转字符串
    import java.lang.*;
    import java.io.*;
    import java.util.*;
    // ReverseString类
    class ReverseString
    {
        public static void main(String[] args)
        {
            String input = "GeeksforGeeks";
            // getBytes()把string
            // 转换成bytes[].
            byte [] strAsByteArray = input.getBytes();
            byte [] result =
                       new byte [strAsByteArray.length];
            // 把结果储蓄在byte[]
            for (int i = 0; i
    输出:
    skeeGrofskeeG

     

  2. 使用StringBuilder类的内建的reverse()方法: String类没有reverse()方法,我们需要将输入字符串转换为StringBuilder,这是通过使用StringBuilder的append方法实现的。之后,通过从第一个索引到最后一个索引进行扫描,打印出反向的字符串。
    // Java使用StringBuilder反转字符串
    import java.lang.*;
    import java.io.*;
    import java.util.*;
    // ReverseString类
    class ReverseString
    {
        public static void main(String[] args)
        {
            String input = "Geeks for Geeks";
            StringBuilder input1 = new StringBuilder();
            // 把StringBuilder增加到input1
            input1.append(input);
            // 反转StringBuilder的input1
            input1 = input1.reverse();
            // 打印反转的String
            System.out.println(input1);
        }
    }

    输出:

    skeeG rof skeeG
  3. 将字符串转换为字符数组:用户输入要反转的字符串。
    方法:
    1.首先,将String转换为字符数组,使用内置的Java String类toCharArray()方法。
    2.然后,从头到尾扫描字符串,并一一打印字符。
    // Java展示反转字符串
    import java.lang.*;
    import java.io.*;
    import java.util.*;
    // ReverseString类
    class ReverseString
    {
        public static void main(String[] args)
        {
            String input = "GeeksForGeeks";
            // 使用toCharArray,把字符串转换成array
            char[] try1 = input.toCharArray();
            for (int i = try1.length-1; i>=0; i--)
                System.out.print(try1[i]);
        }
    }
    输出:
    skeeGrofskeeG
  4. 使用toCharArray()将输入字符串转换为字符数组:通过使用toCharArray(),字符串类的内置方法将输入字符串转换为字符数组。然后,从两侧(即从起始索引(左)和最后索引(右))同时扫描字符数组。
    1.设置左索引等于0,右索引index等于字符串-1的长度。
    2.逐一交换起始索引的字符。之后,增加左侧索引(左++)并减小右索引(右–),两侧分别移至下一个字符数组中的字符。
    3.继续直到左边小于或等于正确的。
    // Java 展示反转字符串
    import java.lang.*;
    import java.io.*;
    import java.util.*;
    //  ReverseString类
    class ReverseString
    {
        public static void main(String[] args)
        {
            String input = "Geeks For Geeks";
            char[] temparray = input.toCharArray();
            int left, right=0;
            right = temparray.length-1;
            for (left=0; left < right ; left++ ,right--)
            {
                // 交换左右两个值
                char temp = temparray[left];
                temparray[left] = temparray[right];
                temparray[right]=temp;
            }
            for (char c : temparray)
                System.out.print(c);
            System.out.println();
        }
    }
    输出:
    skeeG roF skeeG
  5. 使用ArrayList对象:使用内置方法toCharArray()将输入字符串转换为字符数组。然后,将数组的字符添加到ArrayList对象中。Java还为Collections类内置了reverse()方法。由于Collections类的reverse()方法采用一个列表对象,因此要反转该列表,我们将传递ArrayList对象,它是一种字符列表。
    1.我们将String内容复制到一个ArrayList对象。我们使用创建一个ListIterator对象ArrayList上的listIterator()方法。
    2. ListIterator对象用于迭代。
    3. ListIterator对象可帮助我们在反向列表上并打印逐个输出到屏幕。
    // Java使用ListIterator反转字符串
    import java.lang.*;
    import java.io.*;
    import java.util.*;
    // ReverseString类
    class ReverseString
    {
        public static void main(String[] args)
        {
            String input = "Geeks For Geeks";
            char[] hello = input.toCharArray();
            List trial1 = new ArrayList<>();
            for (char c: hello)
                trial1.add(c);
            Collections.reverse(trial1);
            ListIterator li = trial1.listIterator();
            while (li.hasNext())
                System.out.print(li.next());
        }
    }
    输出:
    skeeG roF skeeG