[JAVA] String 拼接效率

344. Reverse String

Write a function that takes a string as input and returns the string reversed.

Example:
Given s = "hello", return "olleh".

一开始写了一个代码

class Solution {
    public String reverseString(String s) {
        int len = s.length();
        String ans="";
        for(int i=len-1;i>=0;i--)
            ans+=s.charAt(i);
        return ans;
    }
}

上面的代码最后一个case没有通过,查了下发现最后一个case大概42300多个字符

因为本人初学java,对于很多细节不是很了解,便查了些资料,另外做了些测试,发现相较于StringBuilder

在50000个字符级别的拼接时速度相差1600多倍。这里就提醒大家String使用时如果需要大量的拼接,尽量换成StringBuilder

原文地址:https://www.cnblogs.com/lvcoding/p/9136324.html

时间: 2024-11-05 13:32:59

[JAVA] String 拼接效率的相关文章

java String拼接的方法选择及性能分析

String 拼接的方法选择 在拼接静态字符串时,尽量用 +,因为通常编译器会对此做优化,如: String test = "this " + "is " + "a " + "test " + "string" 编译器会把它视为: String test = "this is a test string" 在拼接动态字符串时,尽量用 StringBuffer 或 StringBuilde

java String拼接时候的一个小问题

刚才发现了一个小问题,比如我们设置一个字符串对象test并初始化为null,然后执行test+="abc";,此时test的值不是abc,而是nullabc.这是因为我们实际上是让test="abc"+null;,此时null会被强制转为String类型,其值就是"null".例如下面的例子: String test=null+"abc"; System.out.println(test); 输出就是nullabc 所以我们在

[Java]String中“+”的实现原理及效率

在Java中String的操作很多时候都与连接符"+"有关,比如我们可以用String = int + "" 将一个int整数或是其他基本类型转为String类型,也可以用String = String + String 连接两个字符串.那么这些连接符具体是如何实现的呢?他们的效率又如何呢? 首先我们可以在API文档上查阅到: Java 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持.字符串串联是通过 StringBuil

Java中string拼接,StringBuilder,StringBuffer和+

Java中string拼接,StringBuilder,StringBuffer和+,到底哪个更合适? StringBuilder线程不安全,效率较线程安全的StringBuffer高.jdk1.5之前,+操作会产生大量String对象,影响GC的效率,但是jdk1.5之后做了优化,使用+操作符不一定会产生大量String对象,而是自动优化为StringBuilder方式.如果是在一个for循环中进行String拼接,还是不建议使用+操作,因为会大量产生new StringBuilder()对象

java String部分源码解析

String类型的成员变量 /** String的属性值 */ private final char value[]; /** The offset is the first index of the storage that is used. */ /**数组被使用的开始位置**/ private final int offset; /** The count is the number of characters in the String. */ /**String中元素的个数**/ pr

Java String 综述(下篇)

摘要: Java 中的 String类 是我们日常开发中使用最为频繁的一个类,但要想真正掌握的这个类却不是一件容易的事情.笔者为了还原String类的真实全貌,先分为上.下两篇博文来综述Java中的String类.笔者从Java内存模型展开,结合 JDK 中 String类的源码进行深入分析,特别就 String类与享元模式,String常量池,String不可变性,String对象的创建方式,String与正则表达式,String与克隆,String.StringBuffer 和 String

Java String源码解析

String类概要 所有的字符串字面量都属于String类,String对象创建后不可改变,因此可以缓存共享,StringBuilder,StringBuffer是可变的实现 String类提供了操作字符序列中单个字符的方法,比如有比较字符串,搜索字符串等 Java语言提供了对字符串连接运算符的特别支持(+),该符号也可用于将其他类型转换成字符串. 字符串的连接实际上是通过StringBuffer或者StringBuilder的append()方法来实现的 一般情况下,传递一个空参数在这类构造函

java String、String.concat和StringBuilder性能对比

看到网上有人已经做过对比,并且贴出了代码,然后我运行了之后发现跟我分析的结论差距很大.发现他的代码有个问题,UUID.randomUUID() 首次调用耗时会很高,这个耗时被计算给了String,这对String是不公平的. 原始代码参见:http://www.codes51.com/article/detail_99554.html 修改后的测试代码如下: import java.util.Date; import java.util.UUID; public class StringTest

java字符串拼接的几种方式

1. + 方式 String str1="hello"; String str2="world"; String str=str1+str2; 2. concat方式 当两个量都为String类型且值不为null时,可以用concat方式 String a="a"; String b="b"; String c= a.concat(b); 理论上,此时拼接效率应该最高,因为已经假定两个量都为字符串,做底层优化不需要额外判断或转