创建成功的字符串对象,其长度是固定的,内容不能被改变和编译,虽然使用”+”号可以达到附加新字符或字符串的目的,但是”+”号会产生一个新的String实例,会在内存中产生创建新的字符串对象,如果重复的对字符串进行修改,将极大的增加系统的开销。而J2SE5.0新增了可变字符序列String-Builder类,大大提高的频繁增加字符串的效率。
实例
public static void main(String[] args) {
String str="";
//定义对字符串执行操作的起始时间
long starTime=System.currentTimeMillis();
for(int i=0;i<100000000;i++){
str+=i;
}
long endTime=System.currentTimeMillis();
long time=endTime-starTime;
System.out.println("消耗的时间:"+time);
//创建字符串生成器
StringBuilder builder=new StringBuilder();
starTime=System.currentTimeMillis();
for (int j = 0; j < 100000000; j++) {
builder.append(j);
}
endTime=System.currentTimeMillis();
long time1=endTime-starTime;
System.out.println("StringBuilder消耗的时间是:"+time1);
}
执行结果:
利用StringBuilder类中的方法可动态执行添加,删除和插入等字符串的编辑操作。该类的常用方法如下:
(1)append()方法该方法用于向字符串生成器中追加类容。通过该方法的多个重载形式,可实现接受任何类型的数据 ,如int 、boolean、char、String、double 或者另一个字符串生成器。
语法如下:
append(content) 其中content表示要追加到字符串生成器中的类容。
(2)insert(int offset,arg)方法
该方法用于向字符串生成器中的指定位置插入数据类容
语法如下:
insert(int offset,arg) 其中offset:插入字符串生成器的位置,该参数必须大于等于0,且小于等于此序列的长度。arg:将插入至字符串生成器的内容。
(3)delete(int satrt,int end)方法
移除此序列的子字符串中的字符。该子字符串从指定的start处开始,一直到索引end-1处的字符,如果不存在这种字符,则一直到序列尾部,如果start等于end,则不发生任何改变。
字母大小写转换
1、toLowerCase()方法 该方法将String类型的字符全部转换为小写
2、toUpperCase()方法 该方法将String类型的字符全部转换为大写
字符串分割
使用split()方法可以使字符串按指定的分割字符或字符串对内容进行分割,并将分割后的结果存放在字符串数组中。
(1)spilt(String sign) 该方法可根据给定的分割符对字符串进行拆分。
sign为分割字符串的分割符,也可以使用正则表达式。
(2)split(String sign,int limit) 该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数。
范例
public static void main(String[] args) {
String str = new String("abc,def,ghi,gkl");
String[] str1 = str.split(",");
System.out.println("第一次拆分结果:");
for (int i = 0; i < str1.length; i++) {
System.out.println(str1[i]);
}
String[] str2 = str.split(",", 2);
System.out.println("第二次拆分结果:");
for (int i = 0; i < str2.length; i++) {
System.out.println(str2[i]);
}
}
执行结果是: