String的基本方法
package SHUZU.String;
/*
可变字符序列的常用方法
*/
public class method {
public static void main(String[] args){
StringBuilder sb = new StringBuilder();
for(int i = 0;i<26;i++){
sb.append((char)('a'+i));
}
System.out.println(sb);
sb.reverse(); //逆置
System.out.println(sb);
sb.setCharAt(3,'王'); //修改
System.out.println(sb);
sb.insert(4,'一').insert(5,'博');
//链式调用。 核心就是: 该方法调用了return this 把自己返回了
sb.delete(20,23);
System.out.println(sb);
}
}
String和StringBuffer的比较(时间和空间方面)
package SHUZU.String;
/*
测试可变字符序列和不可变序列使用的陷阱
*/
public class trap {
public static void main(String[] args){
/*使用String进行字符串的拼接*/
String str1 = new String();
long num1 = Runtime.getRuntime().freeMemory();//获取系统剩余内存空间
long time1 = System.currentTimeMillis();
for(int i = 0;i < 5000; i++){
str1 = str1 + i; //相当于产生了10000个对象 太耗时耗空间了
// 因为str1是一个字符串,i也要转成一个字符串进行字符串拼接,再生成一个新的字符串
}
long num2 = Runtime.getRuntime().freeMemory();
long time2 = System.currentTimeMillis();
System.out.println("String 占用内存: " +(num1 - num2));
System.out.println("String 占用时间: "+(time2-time2));
//使用StringBuffer拼接,省时,每次添加在原字符串后面,没有产生新对象
long num3 = Runtime.getRuntime().freeMemory();//获取系统剩余内存空间
long time3 = System.currentTimeMillis();
StringBuffer str2 = new StringBuffer();
for(int i = 0;i<5000;i++){
str2.append(i);
}
long num4 = Runtime.getRuntime().freeMemory();
long time4 = System.currentTimeMillis();
System.out.println("StringBuffer 占用内存: " +(num3 - num4));
System.out.println("StringBuffer 占用时间: "+(time4-time3));
}
}
运行效果