python入門教程(非常詳細(xì)) 字符串常量池到底存放的是字符串引用還是字符串對象?
字符串常量池到底存放的是字符串引用還是字符串對象?如果你看字符串的源代碼,你會(huì)發(fā)現(xiàn)它是一個(gè)對象!s=“123”寫這句話時(shí),您將首先找出常量池中是否有字符串對象123。如果沒有字符串對象123,他將開始
字符串常量池到底存放的是字符串引用還是字符串對象?
如果你看字符串的源代碼,你會(huì)發(fā)現(xiàn)它是一個(gè)對象
!s=“123”
寫這句話時(shí),您將首先找出常量池中是否有字符串對象123。如果沒有字符串對象123,他將開始提取,1,2,3
然后將其拼接成一個(gè)對象,即“123”
如果還有另一個(gè)對象也需要這個(gè)對象,例如S1=“123”
此時(shí),操作S1時(shí)應(yīng)先到常量池中查找是否有這個(gè)對象,如果有,取直接尋址,因?yàn)槌A砍財(cái)?shù)據(jù)是共享的,
如果此時(shí)S1=“1234”則常量池不存在,它將被再次提取,1、2、3、4,然后重新組裝成常量池中的新對象
!字符串源代碼有一個(gè)私有變量,字符類型數(shù)組,用于提取這些單個(gè)字符,然后將其拼接到字符串對象中
在C 編程中,領(lǐng)導(dǎo)堅(jiān)持用char而不用string,string有那么可怕嗎?
在C中優(yōu)先使用字符串是一個(gè)好習(xí)慣。除非C的頑固習(xí)慣,否則應(yīng)該使用字符串而不是字符。
Char用于處理任何8位數(shù)據(jù)類型,如邏輯值、整數(shù)、字符ASCII碼等。要處理字符串,需要使用Char[]數(shù)組,這很麻煩,也很難控制。
String是一個(gè)模板類,專門用于處理字符串,并封裝了許多成員函數(shù)來處理字符串。它是C標(biāo)準(zhǔn)庫的一部分,所有C實(shí)現(xiàn)都支持它,并由C創(chuàng)始人推薦。
選擇使用哪一種并不困難。