三种字符串类: String、StringBuilder和StringBuffer
字符串类
1 .常用结构器
建构子
公共字符串(char value [ ) ]
公共字符串(char value [ ],int offset,int count ) )。
2 .一般方法
方法
功能
公共字符(intindex ) )。
a.charAt[i]类似于c的a[i]
public char[] toCharArray (
公共字符串子字符串(int begin,int end ) )。
公用物件品质(objecto ) )。
公共int length (
公共字符串(
删除前导和尾随空格或缩进(不可见字符)
3 .字符串对象偏差
存在代码如下
字符串a=' abab ';
字符串b=' ab ' ' ab ';
system.out.println(a==b );
b='ab ';
String c=b 'ab ';
system.out.println(a==c );
结果为真假。 这是因为Java中的所有字符串对象都是不变的。 JVM会在堆内存中为String对象打开字符串常量池,每个创建的String对象都位于此内存空间中。 String c指的字符串常数和String a指的字符串常数的地址显然不同,因此输出false。 那么,明明比较了String a和String b,为什么又输出了true呢? 中选择所需的族。 为了节省内存空间,Java会在连接两个字符串常量时检查池中是否已存在目标字符串,如果存在,则直接返回指向该字符串的指针。
4 .字符串对象的坏处
如上所述,由于String对象不变,如果String的拼接等变化大量存在,则String的效率会变差
StringBuilder类
1 .常用结构器
建构子
公共字符串生成器(字符串生成器)。
公共字符串生成器(int capacity )。
指定容量为capacity字符
公共字符串生成器(
默认容量为16个字符
2 .一般方法
方法
功能
publicstringbuilderappend (stringstr )。
不设返回也可以。 a .可以简写为a.append(b ),也可以简写为a=a b。 另外,StringBuilder只能和String拼接在一起
publicstringbuilderinsert (int offset,String str )。
publicstringbuilderdelete (intstart,int end ) )。
公共stringbuilder reverse (
公共字符串
3. StringBuilder的优缺点
对于String对象,StringBuilder在执行其他删除更改方面很有效率,但由于StringBuilder不同步其他删除更改方法,因此StringBuilder类不是线程安全的,而是多线程操作
字符串缓冲类
对于StringBuilder,StringBuffer添加了线程安全机制,方法实现了同步。 但是构造函数和方法与StringBuilder基本相同,所以在这里不记录~
但是,与StringBuilder类相比,StringBuffer实现了同步,所以在效率上可能比StringBuilder稍低,但很有限。
对于同一程序,两者跑完58组数据的时间之差也在100ms左右