三种字符串类:String,StringBuilder,StringBuffer

String类

1. 常用构造器

构造器  
public String(char value[])  
public String(char value[],int offset,int count)  

2. 常用方法

方法 功能
public char charAt(int index) a.charAt[i]类似于C中a[i]
public char[] toCharArray()  
public String subString(int begin,int end)  
public boolean equals(Object o)  
public int length()  
public String trim() 将前导和后继空格或缩进(不可见字符)去掉

3. String对象的不可变性

存在代码如下

String a="abab";
String b= "ab"+"ab";
System.out.println(a==b);
b="ab";
String c=b+"ab";
System.out.println(a==c);

结果为true false,原因是Java中每一个String对象都是不可变的。JVM在堆内存中为String对象开辟了一个空间叫做字符串常量池,每个已创建的String对象都会放在这个内存空间中,很显然String c指向的字符串常量和String a指向的字符串常量的地址是不同的,因此输出false。那么 之前比较String a和String b为什么又输出true了呢?,因为Java为了节省内存空间,在两个字符串常量进行连接时会检查池中是否已经存在该目标字符串,如果存在,就直接返回该串的指针。

4. String对象不好的地方

前面说过,String对象是不变的,因此一旦存在大量的String拼接等变化时,String的效率将会变得很低

StringBuilder类

1. 常用构造器

构造器  
public StringBuilder(String str)  
public StringBuilder(int capacity) 指定容量为capacity个字符
public StringBuilder() 默认容量为16个字符

2. 常用方法

方法 功能
public StringBuilder append(String str) 可以不设返回,简写可为a.append(b) ,也可写成a=a+b,同时,StringBuilder只能与String拼接
public StringBuilder insert(int offset,String str)  
public StringBuilder delete(int start,int end)  
public StringBuilder reverse()  
public String toString  

3. StringBuilder的优缺点

相对于String对象,在于增删查改方面,StringBuilder效率好多了,但StringBuilder并没有对增删查改方法进行同步,因此StringBuilder类并不是线程安全的,在多线程操作时会出现问题。

StringBuffer类

相对于StringBuilder,StringBuffer增加了线程安全机制,方法实现了同步。不过构造器和方法跟StringBuilder基本一样,这里就不再记录~

不过相较于StringBuilder类,StringBuffer由于实现了同步,可能效率上要比StringBuilder要低一点,不过也很有限。

对于同一个程序,两者跑完58组数据的时间相差也就100ms左右

Java 字符串总结的更多相关文章

  1. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  2. (转)Java字符串

    转自:http://blog.sina.com.cn/s/blog_899678b90101brz0.html 创建字符串有两种方式:两种内存区域(字符串池,堆)1," " 引号创 ...

  3. Java字符串split函数的注意事项

    Java字符串的split方法可以分割字符串,但和其他语言不太一样,split方法的参数不是单个字符,而是正则表达式,如果输入了竖线(|)这样的字符作为分割字符串,会出现意想不到的结果, 如, Str ...

  4. 关于java字符串编译优化问题

    情景一:不好的字符串拼接习惯    起因是这样的:一个大牛在写了一篇关于java字符串优化问题的讲解,他提到:不要使用strObj+otherValue的方法将otherValue转换为字符串形式,因 ...

  5. Java字符串排列算法

    Java字符串排列算法 题目:现有ABCDE 5个球 构成的排列组合 可重复抽取 最多取到16个 共有多少种组合方式? 比如:取1个球可以构成的组合有 A B C D E 共5种,取2个球可以构成的组 ...

  6. Java字符串转换

    public class StringConvertToInt{ public static void main(String[] args) { String a ="12a34bW()5 ...

  7. Java字符串null相加

    Java字符串null相加 最近和同事讨论了下面的一段代码: String a = null; a += a; System.out.println(a); 运行结果: nullnull 本着学习的态 ...

  8. JAVA字符串格式化String.format()的使用

    JAVA字符串格式化-String.format()的使用常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprin ...

  9. Java字符串的10大热点问题,你都懂吗?

    转自 威哥干JAVA http://www.codingke.com 下面我为大家总结了10条Java开发者经常会提的关于Java字符串的问题,如果你也是Java初学者,仔细看看吧: 1.如何比较字符 ...

  10. java 字符串为空问题

    java 字符串为空问题 String testStr = null; System.out.println(testStr); if (testStr == null) { System.out.p ...

随机推荐

  1. shell脚本执行错误:#!/bin/bash: No such file or directory

    执行.sh脚本时控制台报错 : #!/bin/bash: No such file or directory 解决办法: cat -A 文件路径 会发现第一行有问题 M-oM-;M-?#!/bin/b ...

  2. [App Store Connect帮助]六、测试 Beta 版本(3.3)管理测试员:查看测试员信息

    如果您使用“TestFlight Beta 版测试”,您可以查看关于测试员的信息,并衡量测试员的参与度. 必要职能:“帐户持有人”职能.“管理”职能.“App 管理”职能.“开发者”职能或“营销”职能 ...

  3. (DP)51NOD 1085 背包问题

    在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2……Wn(Wi为整数),与之相对应的价值为P1,P2……Pn(Pi为整数).求背包能够容纳的最大价值. Input 第1行,2个整数 ...

  4. Java中的APT的工作过程

    Java中的APT的工作过程 APT即Annotatino Processing Tool, 他的作用是处理代码中的注解, 用来生成代码, 换句话说, 这是用代码生成代码的工具, 减少boilerpl ...

  5. 51nod1381 硬币游戏

    1381 硬币游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 有一个简单但是很有趣的游戏.在这个游戏中有一个硬币还有一张桌子,这张桌子上有很多平 ...

  6. 从实际案例聊聊Java应用的GC优化--转

    https://tech.meituan.com/jvm_optimize.html 当Java程序性能达不到既定目标,且其他优化手段都已经穷尽时,通常需要调整垃圾回收器来进一步提高性能,称为GC优化 ...

  7. duilib属性

    原文转载自:http://blog.csdn.net/lixiang987654321/article/details/45008441 这里我想讲解一下duilib中的一些属性的理解,当然这是一篇永 ...

  8. C# 客户端读取共享目录文件

    控制台应用程序 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  9. JAVA环境变量配置后未变动配置失效处理

    环境: Windows 7 x64 配置方案来源于教程: http://www.mamicode.com/info-detail-563355.html 配置方案出现的问题: 正确配置JAVA环境变量 ...

  10. 3星|林毅夫《战胜命运》:事实证明华盛顿共识是错误的,GIFF是穷国发展正道。

    本书是林毅夫与喀麦隆一位经济学家合著.基本的观点是:事实证明华盛顿共识是错误的,GIFF是穷国发展正道.GIFF的主要思想是政府找到对标国家,强力推行产业政策. 作为一个经济学外行,读后感觉关于华盛顿 ...