int和NSInteger區(qū)別

查到c語言中,int和long的字節(jié)數(shù)是和操作系統(tǒng)指針所占位數(shù)相等。

但c語言中說,long的長度永遠大于或等于int

objective-c里,蘋果的官方文檔中總是推薦用NSInteger

它和int有什么區(qū)別呢,stackoverflow這幫大神給了答案。

原來在蘋果的api實現(xiàn)中,NSInteger是一個封裝,它會識別當前操作系統(tǒng)的位數(shù),自動返回最大的類型。

定義的代碼類似于下:

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64

typedef long NSInteger;

typedef unsigned long NSUInteger;

#else

typedef int NSInteger;

typedef unsigned int NSUInteger;

#endif

總結(jié):NSInteger與int的區(qū)別是NSInteger會根據(jù)系統(tǒng)的位數(shù)(32or64)自動選擇int的最大數(shù)值(int or long)。

1、Integer默認值是null,而int默認值是0;

2、聲明為Integer的變量需要實例化,而聲明為int的變量不需要實例化;
3、Integer是對象,用一個引用指向這個對象;而int是基本類型,直接存儲數(shù)值。
Java兩種數(shù)據(jù)類型分類:

原始數(shù)據(jù)類型,分為boolean、byte、in、char、long、short、double、float 。
引用數(shù)據(jù)類型 ,分為數(shù)組類、接口。

為了編程的方便還是引入了基本數(shù)據(jù)類型,但是為了能夠?qū)⑦@些基本數(shù)據(jù)類型當成對象操作,Java為每 一個基本數(shù)據(jù)類型都引入了對應(yīng)的包裝類型,int的包裝類就是Integer,從Java 5開始引入了自動裝箱/拆箱機制,使得二者可以相互轉(zhuǎn)換。

Int是將一個數(shù)值向下取整為最接近的整數(shù)的函數(shù)。INT是數(shù)據(jù)庫中常用函數(shù)中的取整函數(shù),常用來判別一個數(shù)能否被另一個數(shù)整除。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容