String型別詳解

2021-06-28 04:31:04 字數 1135 閱讀 7080

字串是乙個特殊的物件,從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類的建構函式和析構函式如...