在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。

原创文章,作者:RBYI,如若转载,请注明出处:https://www.506064.com/n/135112.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
RBYIRBYI
上一篇 2024-10-04 00:10
下一篇 2024-10-04 00:10

相关推荐

  • Python字符串宽度不限制怎么打代码

    本文将为大家详细介绍Python字符串宽度不限制时如何打代码的几个方面。 一、保持代码风格的统一 在Python字符串宽度不限制的情况下,我们可以写出很长很长的一行代码。但是,为了…

    编程 2025-04-29
  • Python栈操作用法介绍

    如果你是一位Python开发工程师,那么你必须掌握Python中的栈操作。在Python中,栈是一个容器,提供后进先出(LIFO)的原则。这篇文章将通过多个方面详细地阐述Pytho…

    编程 2025-04-29
  • Python中将字符串转化为浮点数

    本文将介绍在Python中将字符串转化为浮点数的常用方法。在介绍方法之前,我们先来思考一下这个问题应该如何解决。 一、eval函数 在Python中,最简单、最常用的将字符串转化为…

    编程 2025-04-29
  • Python 常用数据库有哪些?

    在Python编程中,数据库是不可或缺的一部分。随着互联网应用的不断扩大,处理海量数据已成为一种趋势。Python有许多成熟的数据库管理系统,接下来我们将从多个方面介绍Python…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • Python学习笔记:去除字符串最后一个字符的方法

    本文将从多个方面详细阐述如何通过Python去除字符串最后一个字符,包括使用切片、pop()、删除、替换等方法来实现。 一、字符串切片 在Python中,可以通过字符串切片的方式来…

    编程 2025-04-29
  • Python操作数组

    本文将从多个方面详细介绍如何使用Python操作5个数组成的列表。 一、数组的定义 数组是一种用于存储相同类型数据的数据结构。Python中的数组是通过列表来实现的,列表中可以存放…

    编程 2025-04-29
  • Python操作MySQL

    本文将从以下几个方面对Python操作MySQL进行详细阐述: 一、连接MySQL数据库 在使用Python操作MySQL之前,我们需要先连接MySQL数据库。在Python中,我…

    编程 2025-04-29
  • Python磁盘操作全方位解析

    本篇文章将从多个方面对Python磁盘操作进行详细阐述,包括文件读写、文件夹创建、删除、文件搜索与遍历、文件重命名、移动、复制、文件权限修改等常用操作。 一、文件读写操作 文件读写…

    编程 2025-04-29
  • Python代码实现回文数最少操作次数

    本文将介绍如何使用Python解决一道经典的回文数问题:给定一个数n,按照一定规则对它进行若干次操作,使得n成为回文数,求最少的操作次数。 一、问题分析 首先,我们需要了解回文数的…

    编程 2025-04-29

发表回复

登录后才能评论