字串是乙個特殊的物件,從api文件的對string宣告:public final class{} 中可以看出該類不可以被繼承。
以上是對字串的描述,接下來通過例項展現string的型別的一些用法:
很多人碰到這個問題:string s = "123"; 這裡有幾個物件。在這裡,s為類型別變數,「123」為乙個物件。
變數可以指向物件,所有像「123」字串都是乙個物件,同時s也指向了這個物件。
字串還有乙個特點:就是初始化後就不會被改變。但是很多人會誤解這個意思。先看個例子:
在乙個類中執行以下**:
string s ="123";
s = "789";
system.out.println(s); 請問列印出來的是什麼?是123還是789。很多人以為既然字串不會被改變,所以
列印出來的應該是123。
錯!列印出來的是789,為什麼呢?
這個我們上面說的string s = "123"中的物件有關係。首先,「123」這個物件確實不會改變,它一直會在記憶體中,
s剛開始指向了「123「這個物件,而後來s指向了」789「這個物件,所以才列印出來789.
還有乙個關於string的常見問題:
string s1 = "123";
string s2 = new string("123");
s1==s2 這個會顯示true還是false
s1.equals(s2)顯示true還是false
答案是第乙個為false,第二個為true
第乙個是判斷2個物件是否相等,答案肯定是不相等。應為s2 new了乙個新的物件。
第二個相等是因為equals是判斷2個字串內容是否相同,所以相等。
最後乙個可能會讓你模糊的問題:
string s1 = "123";
string s2 = "123";
請問s1==s2會顯示true還是false
答案是true。首先,」123「是乙個在記憶體中的物件,它不會被改變。當string s2 = "123"的時候,
由於已經有」123「物件了且不會改變。系統就不會再為」123「在開闢乙個空間,而是讓s2指向 string s1 = "123"
中的」123「。既然s1 s2都指向了相同的物件,所以相等。
String型別詳解
第一篇 你真的了解.net中的string 注 來自於網路 string在任何語言中,都有它的特殊性,在.net中也是如此。它屬於基本資料型別,也是基本資料型別中唯一的引用型別。字串可以宣告為常量,但是它卻放在了堆中。希望通過本文能夠使大家對.net中的string有乙個深入的了解。一 不可改變物件...
C 之string型別詳解
from 之所以拋棄char 的字串而選用c 標準程式庫中的string類,是因為他和前者比較起來,不必擔心記憶體是否足夠 字串長度等等,而且作為乙個泛型類出現,他整合的操作函式足以完成我們大多數情況下 甚至是100 的需要。我們可以用 進行賦值操作,進行比較,做串聯 是不是很簡單?我們盡可以把它看...
String用法詳解
include 注意這裡不是string.h,string.h是c字串標頭檔案這樣我們就宣告了乙個字串變數,但既然是乙個類,就有建構函式和析構函式。上面的宣告沒有傳入引數,所以就直接使用了string的預設的建構函式,這個函式所作的就是把str初始化為乙個空字串。string類的建構函式和析構函式如...