string s1 = 「abc」;其中s1是乙個類型別變數,「abc」是乙個物件。
字串最大的特點:一旦被初始化就不可以被改變。
如果在接下來的語句中寫出s1= 「kk」;只能說明s1的位址變了,指向了「kk」物件,而在記憶體中,「abc」物件並沒有變,所以成為一旦初始化就不可以改變。
字串也可以這樣初始化:
string s2 = new string("abc");
例題:判斷下列輸出結果
為什麼出現這樣的結果呢?
原因在於string類複寫了object類中的equals方法,該方法用於判斷字串是否相同。
問題二:s1和s2有什麼區別:
答:s1在記憶體中有乙個物件,s2在記憶體中有兩個物件
問題三:如果出現下列**,結果如何?
解釋:在記憶體中有乙個叫做常量池的位置,字串就會放在裡面,當建立s2時,系統發現在常量池中已經存在「abc」物件,所以系統就不再建立新物件,可以節約記憶體,所以s1和s2指向了同一片記憶體位址。
java畢向東聽課筆記18(字串2)
string類適用於描述字串事物。那麼它就提供了多個方法對字串進行操作。常見的操作有哪些?1.獲取。1.1 字串中的包含的字元數,也就是字串的長度。int length 獲取長度 1.2 根據位置獲取位置上某個字元。char charat int index 1.3 根據字元獲取該字元在字串中的位置...
java畢向東聽課筆記10(異常)
異常 一般情況下,函式內出現異常,函式上需要宣告。發現列印的結果中只有異常的名稱,卻沒有異常的資訊。因為自定義的異常並未定義資訊。如何定義異常資訊呢?因為父類中已經把異常資訊的操作都完成了。所以子類只要在構造時,將異常資訊傳遞給父類通過super語句。那麼就可以直接通過getmessage方法獲取自...
java畢向東聽課筆記14(執行緒3)
死鎖 為什麼出現 同步中巢狀同步,而鎖卻不同。在開發中,應該盡量避免死鎖。執行緒間的通訊 其實就是多個執行緒在操作同一資源,但是操作的動作不同。等待喚醒機制 wait notify notifyall 都使用在同步中,因為要對持有監視器 鎖 的執行緒操作。所以要使用在同步中,因為只有同步才有鎖。為什...