StringBuffer,StringBuilder相關面試題

1.StringBufferStringBuilder的區別?
共同點:

都是可變的字符序列

不同點:

StringBuffer:是一個線程安全的類, 同步的,線程角度來說,執行效率低
StringBuilder:是一個線程不安全的類,不同步的,線程角度來說,執行效率高
在單線程程序中,StringBuilder用來替代StringBuffer

2.StringBuffer數組都屬於容器,有什麼區別?
StringBuffer:

構造的是一個字符串緩衝區,裏面存儲的內容都字符串內容,可變的字符序列,它的長度可以變化的!

數組:

存儲元素必須是同一種數據類型 int[] arr = {int類型的元素...} ; 數組的長度是固定的,不支持可變的!

3.StringBufferString類型作爲形式參數有什麼區別?

String:

是一種特殊的引用類型,它作爲形式參數和基本數據類型作爲形式參數是一樣的!

StringBuffer:

它作爲形式參數,和引用類型一樣,形式參數的改變直接影響實際參數

    //StringBuffer作爲形參
    public static void main(String[] args) {
        StringBuffer sb1 = new StringBuffer("hello") ;
        StringBuffer sb2 = new StringBuffer("world") ;
        System.out.println("sb1:"+sb1); //hello
        System.out.println("sb2:"+sb2);//world
        change(sb1,sb2) ;
        System.out.println("sb1:"+sb1);//hello
        System.out.println("sb2:"+sb2);//worldworld
    }

    public static void change(StringBuffer sb1, StringBuffer sb2) {
        sb1 = sb2 ; // sb1= sb2 = "world"   :直接賦值的形式,形參傳遞不出去的!
        sb2.append(sb1) ;  //方法調用,形式參數 "worldworld" 是直接可以傳遞出去的
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章