在java类库中,java给我们提供了字符串几个特别的操作,分别是String,Stringbuffer,Stringbuilder等。下面就对这几个类做一个简单的介绍。首先,我们先了解一下String,源码中,定义该类型的类是被一个final修饰,这就注定了String永远不可能被继承。那么相对于其他几个,什么时候用String呢?String字符串常量一旦被声明,就不可能被改变,所以String类不适合被频繁修改。对于字符串中常用的操作方法有很多,这里不需要死记硬背,会查会检索,会应用即可。这里对String的方法不做详细介绍,关于String和Stringbuffer之间的转换,这里有必要说一下String转换为Stringbuffer,代码如下:
// 利用构造函数 StringBuffer net = new StringBuffer("www.abc.com"); System.out.println(net); // 利用append方法 net.append(".world"); System.out.println(net);
据以上代码可以看出有两种方式,第一种是利用构造函数,第二种是利用append方法。那么Stringbuffer转换为String是怎么转换的,第一种方式就是利用Stringbuffer中的toString方法,第二种方式就是利用String的构造函数。代码如下:
// 利用StringBuffer中的toString方法 StringBuffer sb = new StringBuffer("www.abc.com"); System.out.println(sb.toString()); // 利用String的构造函数 String s = new String(sb); System.out.println(s);
以上说的是之间的转换,对于Stringbuffer类,常用的操作方法有append,字符串反转reverse,指定位置insert追加内容,删除delete指定指引操作,代码如下:
StringBuffer sb = new StringBuffer("hello"); System.out.println(sb.reverse()); System.out.println(sb.reverse().indexOf("llo")); System.out.println(sb.insert(3, 3)); System.out.println(sb.delete(3, 4));
而Stringbuilder与Stringbuffer一样,功能也相同,在Stringbuffer类中定义的方法都是synchronized进行同步定义,而Stringbuilder没有进行同步定义,是异步方法,线程不安全。对于以上三种字符串操作,这里做个简单的总结:String类一旦声明则不可改变,而其它是可以改变的,Stringbuffer提供的方法时同步方法,属于安全线程操作。