String,StringBuilber,StringBuffer 区别


String,StringBuilber,StringBuffer 区别
 
String和StringBuilder的效率对比
StringBullder和StringBuffer的效率对比
 
String和StringBuilder的本质区别
        -- String是一个不可改变的字符序列
public class StringDemo {
    public static void main(String[] args) {
        //字符串不可改变字符序列
        //String类比较特殊,直接写一个双引号,实际上创建了一个字符串对象,
        // 如何校验,s打点调方法,证明它是一个对象
        String s = "ABC";
        //s又等于了一次双引号,实际记录一个新的地址值,
        s = "BCD";
    }
}
        --StringBuilder是一个可以改变的字符序列,字符串缓冲区            
public class StringBullderDemo {
    public static void main(String[] args) {
        //创建了一个StringBuilder对象,存入了一串字符序列
        StringBuilder sb = new StringBuilder("aaabbbccc");
        // sb.delete()删除索引位置上的元素
        sb.delete(1,3);
        System.out.println(sb);
        //abbbccc
    }
}

  

字符串拼接使用谁?
String = 23958毫秒
StringBuilder = 24毫秒
使用StringBuilder效率比String高
public class stringVSStringBuilder {
    public static void main(String[] args) {
       /*
        第一次结果:24毫秒
       long start = System.currentTimeMillis();
        StringBuilder sb = new StringBuilder("");
        for (int i = 0; i <100000 ; i++) {
            sb.append(i);
        }
        long end = System.currentTimeMillis();
        System.out.println(sb);
        System.out.println(end-start);*/
        
       //第二次结果23958
        long start = System.currentTimeMillis();
        String s = "";
        for (int i = 0; i < 100000; i++) {
            s += i;
        }
        long end = System.currentTimeMillis();
        System.out.println(s);
        System.out.println(end - start);
    }
}

  

String在堆内存中的解析图
 
StringBullder和StringBuffer的区别
相同点:两者方法基本一致,
不同点:
            StringBuffer是JDK1.0出现的,多线程安全,效率低,但同步
            StringBuilder是JDK1.5出现的,线程不安全,效率快,不同步的(推荐Dao层的sql语句拼接,因为Dao数据访问层一般都是单线程执行)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM