Java的那些坑(一)

2021-07-26 16:03:37 字數 1700 閱讀 3378

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...