首頁  >  文章  >  Java  >  深入解析C++和JAVA的字串

深入解析C++和JAVA的字串

高洛峰
高洛峰原創
2017-01-19 15:04:591102瀏覽

所有的字串類別都起源於C語言的字串,而C語言字串則是字元的陣列。 C語言中是沒有字串的,只有字元陣列。
談一下C++的字串:C++提供兩種字串的表示:C風格的字串和標準C++引入的string類型。一般建議用string類型,但是實際情況中還是要使用老式C風格的字串。
1.C風格的字串:C風格字串起源於C,並在C++中擴展。字串儲存在一個字元陣列中,例如:
       const char *str = “zhangdan”;(不要忘記最後的

因為例子中的str3和str4中的"zhangpeng"都是字串常數,它們在編譯期就被確定了,所以str3==str4為true;而"zhang"和"peng"也都是字串常數,當一個字串由多個字串常數連接而成時,它自己肯定也是字串常數,所以str2也同樣在編譯期就被解析為一個字串常數,所以str2也是常數池中"zhangpeng"的一個引用。

JAVA 中String 和StringBuffer的區別:

String:
是物件不是原始類型.
為不可變物件,一旦被創建,就不能修改它的值.
對於已經存在的String物件的修改都是重新建立一個新的物件,然後把新的值保存進去.
String 是final類別,即不能被繼承.
StringBuffer:
是一個可變物件,當對他進行修改的時候不會像String那樣重新建立物件
它只能透過建構函式來建立,
StringBuffer sb = new StringBuffer();
不能透過付值符號對他進行付值. 
sb = "xxxxx";
物件被建立以後,在記憶體中就會建立以後,在記憶體中就會分配記憶體空間,並初始保存一個null.向StringBuffer
中付值的時候可以透過它的append方法.
sb.append("hello");
字串連接操作中StringBuffer的效率要比String高:
String str = new String("xxx");
str += "xx";
的處理步驟其實是透過建立一個StringBuffer,然後呼叫append(),最後
再將StringBuffer toSting();
這樣的話String的連線操作就比StringBuffer多出了一些附加操作,所以就慢了

問一個問題:為什麼StringBuffer效率這麼高,那我們還要String呢?
不會的查一下吧,方向是常數池。

Python 字串:
Python是一種強大的腳本語言,它定義字串的時候不用定義類型。 python字串通常有單引號('...')、雙引號("...")、三引號("""...""")或('''...''')包圍,三引號所包含的字串可由多行組成,一般可表示大段的敘述性字串。在使用時基本上沒有差別,但雙引號和三引號("""..."""")中可以包含單引號,三引號('''...''')可以包含雙引號,而不需要轉義。當需要特殊轉義的時候可以用 ''
python 也有很多字串操作的函數。具體可以dir一把,跟C++和java都是大同小異的。

以上就是本文的全部內容,希望對大家的學習有所幫助。

更多深入解析C++和JAVA的字串相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn