查到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ù)整除。