1,== 和equals
基本資料型別,儲存在棧中,用==進行數值判斷。
而引用資料型別比如object,物件實體儲存在堆中,物件引用位址儲存在棧中,則==用來比較位址是否相等,而equals通過看底層原始碼發現
* compares this string
tothe specified object. the result
is if
and only if
the argument is
not and
is a object that represents the same sequence of
characters
as this
* object.
** @param anobject
* the object to compare this against
** @return if
thegiven object represents a
* equivalent to this string, otherwise
** @see #compareto(string)
* @see #equalsignorecase(string)
*/public boolean
equals(object anobject)
if (anobject instanceof string)
return
true;}}
return
false;
}預設也是比較物件的位址是否相等,string型別的可以比較對物件的內容是否相等,equals和hashcode是子類可以重寫的方法,子類可以根據自己的具體業務重寫達到業務的需求。string型別的資料會涉及到jvm編譯時優化問題比如下列
package com.sparkhuu.base;
public
class stringtest
}
結果為
true
true
true
true
false
true
false
false
true
2,基本資料型別的封裝類
int –> integer
char –> character
double –>double等
這裡會涉及到裝包和拆包
如下測試
package com.sparkhuu.base;
public
class basenumbertest
}
結果為
true
true
false
true
主要原因是基本資料型別轉化為封裝類的時候會呼叫封裝類的init,而封裝類的部分**進行了cache,
integer,short,long的cache範圍是-128到127,其中integer可以通過配置修改範圍,而short和long則不行。
boolean 的cache範圍是true, false,
characher全部快取
double,float沒有快取。
UITextView的那些坑
坑1 ios7及以上的版本上,uitextview出現這樣的問題 彈出鍵盤時,沒輸入任何文字,但是游標位置不是在最上方。解決方案 ios7以後新增了乙個屬性automaticallyadjustsscrollviewinsets,將其置為no即可。別忘了加版本判斷。if ios7 and later...
string的那些坑
坑一 typedef struct st st st test st malloc sizeof st st m1 hello 除錯這段 你會發現最後一句報段錯誤。為什麼呢?string本質是個類,而malloc不知道要呼叫string的建構函式去例項化m1,結果導致m1這個物件實際不存在,去用它當...
Flask SQLALCHEMY 的那些坑!!!
if request.method get 接收前段傳遞過來的使用者id uid request.args id 根據id將對應的使用者資訊讀取出來 user db.session.query users filter by id uid first print user user user1 db...