三种字符串类: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. 如何截取iframe的内容,修改他的CSS

    function   setv(){        $("#innerContent").contents().find(".listTable-01").cs ...

  2. E20170611-hm

    ascending   adj. 上升的,向上的; ascend   vt. 攀登; 继承; 占领;   vi. 上升; 爬坡; 追溯; descending  n. 递减;  descend   v ...

  3. Ubuntu服务器WDCP可视化界面搭建注意

    title: Ubuntu服务器WDCP可视化界面搭建注意 前两天心血来潮,研究了下服务器搭建与部署. 领了个免费体验3天的vps服务器进行了实操. 在安装WDCP的时候遇到了些问题,网上大部分对问题 ...

  4. hdu6198 number number number(递推公式黑科技)

    number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  5. Codeforces 1131 (div 2)

    链接:http://codeforces.com/contest/1131 A Sea Battle 利用良心出题人给出的图,不难看出答案为\(2*(h1+h2)+2*max(w1,w2)+4\)由于 ...

  6. 二分图最大匹配(匈牙利算法) POJ 3020 Antenna Placement

    题目传送门 /* 题意:*的点占据后能顺带占据四个方向的一个*,问最少要占据多少个 匈牙利算法:按坐标奇偶性把*分为两个集合,那么除了匹配的其中一方是顺带占据外,其他都要占据 */ #include ...

  7. 数学 FZU 2074 Number of methods

    题目传送门 /* 数学:假设取了第i个,有C(n-1)(i-1)种取法 则ans = sum (C(n-1)(i-1)) (1<i<=n) 即2^(n-1) */ #include < ...

  8. Python 模拟postman上传文件

    最近工作需求:写的程序要用到python模拟postman操作,基于flask框架 代码很简单 但是百度一半天: import requests files = {'skFile': open(r&q ...

  9. Http协议对格式、请求头、方法

    ######### #概览 ######### 超文本传输协议(Http: Hyper Text Transfer Protocol) :用于发送WWW方式的数据.采用TCP/IP协议,是一个无状态协 ...

  10. 377 Combination Sum IV 组合之和 IV

    Given an integer array with all positive numbers and no duplicates, find the number of possible comb ...