java大白入门实例15之《对字符串反转-详解》

本文介绍了Java中四种反转字符串的方法:使用charAt遍历字符、转换为字符数组后反转、借助StringBuffer的reverse方法以及利用Stack的先进后出特性。详细解释了每种方法的实现原理,并给出了代码示例。
摘要由CSDN通过智能技术生成

1、使用charAt获取每个字符串的单个字符,再进行拼接

注意:charAt() 方法返回指定索引处的char值。索引范围是从0到length() - 1

public class java_15 {
    public static void main(String[] args) {
//        调用
        System.out.println(reverse("sjopiu"));
    }
    public static String reverse(String str){
        int len = str.length();
        String res = "";
//        用charAt()传入索引,获取每个字符
        for (int i=len-1;i>=0;i--){
            res = res+str.charAt(i);
        }
        return res;
    }
}

 2、利用toCharArray() 方法将字符串转换为字符数组,通过获取字符数组的字符反转

public class java_15 {
    public static void main(String[] args) {
//        调用
        System.out.println(reverse1("sjopiu"));
    }
//    使用toCharArray
    public static String reverse1(String str){
        char[] chars = str.toCharArray(); //将字符串转为字符串数组
        String res = "";
        for (int i=0;i<chars.length;i++){
            res = chars[i]+res;//此时chars[i]就可以直接像数组这样访问每个元素
        }
        return res;
    }
}

3、利用StringBuffer()自带的reverse方法

StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用【可以改变该序列的长度和内容】。原来StringBuffer是个字符串的缓冲区,即就是它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作  

 StringBuffer的方法使用:

public class java_15 {
    public static void main(String[] args) {
//        调用
        System.out.println(reverse2("sjopiu"));
    }
//    使用StringBuffer
    public static String reverse2(String str){
        String res = new StringBuffer(str).reverse().toString();
        return res;
    }
}

 注意:里面用到了StringBuffer的链式调用new StringBuffer(str).reverse().toString(),这样写是因为调用了StringBuffer方法之后会返回一个对象,因此我们需要在反转之后再把它转为字符串。

 4、使用stack堆栈,先进后出的原理,实现反转

import java.util.Stack;

public class java_15 {
    public static void main(String[] args) {
//        调用
        System.out.println(reverse3("sjopiu"));
    }
//    使用堆栈
    public static String reverse3(String str){
        char[] chars = str.toCharArray();
        Stack<Character> stack = new Stack<Character>();
        String res = "";
//        入栈
        for (int i=0;i<chars.length;i++){
            stack.push(chars[i]);
        }
//        出栈
        for (int i=0;i<chars.length;i++){
            res+=stack.pop();
        }
        return res;
    }
}

 Stack是栈;特点是:先进后出。

它提供了通常的 push 和 pop 操作,以及取栈顶点的 peek 方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并确定到栈顶距离的 search 方法。 

push(E item) 把项压入堆栈顶部。 
pop() 移除堆栈顶部的对象,并作为此函数的值返回该对象。 
peek() 查看堆栈顶部的对象,但不从堆栈中移除它。 
boolean empty() 测试堆栈是否为空。  
int search(Object o) 返回对象在堆栈中的位置,以 1 为基数。

看你喜欢哪种方法就用哪种~
 

上一篇:java14--对整数的反转

下一篇:java16--求整数的阶乘和阶乘原理

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suoh's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值