- 替换字符注意事项
替换字符时,用replace() ,而不要用replaceAll();
public class Altercharacter { public static void main(String[] args) { System.out.println( Stringutil.remove3("你我你","你")); System.out.println( Stringutil.remove3("$我$","$")); } static class Stringutil { static String remove(String source,String sub){ return source.replaceAll(sub,""); } static String remove2(String source,String sub){ return Pattern.compile(sub).matcher(source).replaceAll(""); } static String remove3(String source,String sub){ return source.replace(sub,""); } static String remove4(String source,String sub){ return Pattern.compile(sub.toString(), Pattern.LITERAL).matcher(source).replaceAll(Matcher.quoteReplacement("".toString())); } } }
- String、StringBuffer、StringBuilder比较
字符串不常变化用String
字符串频繁变化计算,且运行在多线程环境下,用StringBuffer (StringBuffer是线程安全类)
字符串频繁变化计算的单线程环境下,用StringBuilder - 1+2+“” 的值
public static void main(String[] args) {
String name=1+2+"";
System.out.println(name); //结果等于3
String name1=""+1+2;
System.out.println(name1); // 结果等于12
}在使用加号进行计算的表达式中,只要遇到String字符串,则所有的数据都会转换为String类型进行拼接,如果是原始数据,则直接拼接,如果是对象,则调用toString方法的返回值,然后拼接
- 字符串拼接方法性能比较:
str += str; //先用stringbuffer的append方法 然后toString() , 即str = new StringBuilder(str).append("c").toString(); toString()耗费时间 1438ms
str = str.concat(" C"); 703ms
StringBuffer.appern("C"); //最快