您的位置:

在java中高效操作大型字符串,java字符串操作常用方法有哪些

本文目录一览:

JAVA编程对字符串操作

package myPrac;

public class StringTest {

    public static void main(String[] args){

        String str = "aaabbdddfffcccdf"; //初始字符串

        StringBuilder temp = new StringBuilder();    //存放连续相同字符

        StringBuilder result = new StringBuilder(); //存放转化后的字符串

        char ch = '#'; //用来存放当前比较的字符

        for(int i = 0; i str.length();i++){

            if(ch == '#'){

                //第一次循环,第一个字符与#不同

                ch = str.charAt(i);

                temp.append(str.charAt(i));

            }else{

                //如果相同 继续添加

                if(ch == str.charAt(i)){

                    temp.append(str.charAt(i));

                }else{

                    //不同进行处理

                    result.append(temp.length());    //相同字符数量

                    result.append(temp.charAt(0));    //字符

                    temp.delete(0, temp.length());    //temp重置

                    temp.append(str.charAt(i));        //当前字符放入ch

                    ch = str.charAt(i);

                }

            }

        }

        System.out.println(result.toString());

    }

}

Java中如何高效的拼接字符串

String类的方法:

①利用运算符"+"

②public String concat(String str)进行字符串的拼接操作

StringBuffer的方法:

①public StringBuffer append(String str)将str添加到当前字符串缓冲区的字符序列的末尾

②public StringBuffer insert(int offset,String str)在当前字符串缓冲区的字符序列的下标

索引offset插入str。如果offset等于旧长度,则str添加在字符串缓冲区的尾部

如图所示

java 如何提高字符串拼接速度

应该使用

StringBuilder

为什么不用

StringBuffer,因为StringBuffer的每一次操作之前都要取得同步锁,每一次操作之后都要释放同步锁。

看下面这个例子:

for(int

i=0;

i10000;

i++)

buffer.append(i).append(",

");

这里获取了10000次锁,释放了10000次锁,那么,它真的实现了同步的目的吗?如果在这个循环运行过程中,有另一个进程对buffer进行了这样的操作:

buffer.append("some

string");

那么这个"some

string"

会被插入到某两个数字之间,如果你想要前面那个for循环不受干扰地完成,还是要在外面加锁:

synchronized(buffer)

{

for(int

i=0;

i10000;

i++)

buffer.append(i).append(",

");

}

所以StringBuffer这个类的设计是有缺陷的,是由于当时受限于人们对API设计理论的理解,类的设计者不明白这样一个道理:一个类不应该自己实现同步,而应该把同步的工作交给用户,因为“用户对于什么时候应该同步,应该怎么同步,通常比类的设计者知道得更清楚,并且在不同的环境下用户可能对如何同步有不同的需求”。

所以在新的代码中应该尽量用

StringBuilder

而不要用

StringBuffer。

同理,应该用

ArrayList

而不要用

Vector。