《改善java代码》第四章:改善关于字符串的代码

  1. 替换字符注意事项
    替换字符时,用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()));
            }
        }
    }
  2. String、StringBuffer、StringBuilder比较
    字符串不常变化用String
    字符串频繁变化计算,且运行在多线程环境下,用StringBuffer (StringBuffer是线程安全类)
    字符串频繁变化计算的单线程环境下,用StringBuilder

  3. 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方法的返回值,然后拼接

  4. 字符串拼接方法性能比较:

    str += str; //先用stringbuffer的append方法 然后toString()  ,  即str = new StringBuilder(str).append("c").toString();      toString()耗费时间      1438ms
    str = str.concat(" C");      703ms
    StringBuffer.appern("C");     //最快

原文地址:https://www.cnblogs.com/yaohuiqin/p/9336178.html