我們都知道
string s1 = "abc";
string s2 = "abc";
string s3 = new string("abc");
s1==s2!=s3
但是好多人都不知道(s1+s2)!="abcabc"
看一看下面奇特的**
view plaincopy to clipboardprint?
public class test
public static void main(string args)
} public class test
public static void main(string args)
大家可以自行執行一下,看看結果再自己想一想,再看下面的分析,如果覺得不對,請指正
字串物件可以存放在兩個地方,字串池(pool)和堆
編譯期確定如何給乙個引用變數賦值
1)string s="abc";這種形式決定將從pool中尋找內容相同的字串並返回位址給s,pool中沒有就會在pool中新建並返回位址給s
2)string s = new string("abc");這種形式決定執行期將在堆上新建字串物件並返回給s,但這個物件不會加入到pool中
3)string s=s1+s2;s1和s2都是變數,這種形式決定將在堆上建立s1和s2(即便s1和s2指向的物件在池中已經存在,也會將值拷貝到物件建立新物件),然後建立s1+s2並賦給s
4)string s = "ab"+"cd";同1),都是來自於池
5)string s = "ab"+s1;類似3)
6)string s = s1+s2;s1和s2是常量,常量只能賦值一次,s1,s2如果在宣告的地方就賦值,那麼這個值在編譯期就是確定的,後面無法更改,s1+s2在執行前可確定s1/s2已經在池中存在,當然在池中進行,所以s指向pool;但是若s1,s2如果是例項常量在構造器中賦值,或是類常量在靜態塊中賦值,s1+s2無法確定二者皆來自於池,於是在堆上進行
所以會有以上的結果
字串物件python int 字串 字串物件
最近研究字串物件,稍微總結一下,以後繼續補充 如果我們須要把python的字串物件轉換為數整物件,我們須要用到int方法。比如 ainfo 222 print int ainfo 輸出的結果是222。然後我們檢視下ainfo在現的型別,通過type方法檢視下,發現是 而如果ainfo fefew22...
字串留用與字串池
1 關於字串操作對應用程式效能的影響 字串相等性檢查是應用程式常見的操作,於此同時,這也是一種嚴重損害效能的操作.執行序號 字串的二進位制 相等行檢查時,clr會進行以下操作 1 判斷字串的長度是否相等,不相等,比較結果直接返回false,如果相等,繼續下一步操作 2 比較字串的長度相等,clr會比...
ORACLE in 字串,字串,字串
因為傳進來的引數是 字串,字串,字串,要實現in 字串,字串,字串 select from htl price p where p.hotel id 30073328 and p.able sale date between to date 2009 03 27 yyyy mm dd and to ...