在java中,我们可以使用StringBuilder或者StringBuffer类的reverse()方法来实现对字符串的反转。
在讲述实现方法之前,首先我们先来介绍一下StringBuilder和StringBuffer是什么?在实际开发中,会有大量的字符串的拼接,但java中的字符串是不可变的,每一次拼接都会产生新字符串,这样会占用大量的方法区内存,造成内存空间的浪费。
而JDK中自带的StringBuffer类和StringBuilder类表示的是字符串变量(可以理解为字符串缓冲区),也就是说字符串对象被创建后,可以改变自身的内容而不用重新创造字符串对象 , 可以对字符串的内容进行增删,更适合于字符串的频繁拼接操作。
查看StringBuilder和StringBuffer源码
,如下所示:
1:StringBuffer/StringBuilder实现了Serializable接口 , 即可实现序列化操作
2:虽然他们有相同的方法,但StringBuilder在多线程的环境下,并不是运行安全的,而StringBuffer的无论单线程还是多线程下都是安全的,如下的源码所示,StringBuffer的每一个方法都有synchronized修饰
,因此,在单线程环境下,我们推荐使用StringBuilder,因为它的速度更快一些,而多线程环境下,我们推荐使用StringBuffer,因为它的线程是安全的
StringBuffer:
StringBuilder:
使用StringBuilder和StringBuffer对字符串进行反转的方式代码演示如下所示:
public class Test1 {
public static void main(String[] args) {
//方法1:使用StringBuilder类
String str="hello";
StringBuilder stringBuilder=new StringBuilder(str);
String ret=stringBuilder.reverse().toString();
System.out.println(ret);
//使用StringBuffer类
String str1="orange";
StringBuffer stringBuffer=new StringBuffer(str1);
String ret1=stringBuffer.reverse().toString();
System.out.println(ret1);
}
}
输出如下:
olleh
egnaro