objective-c for Java程序員 第一部分2

objective-c for Java程序員 第一部分

對象和基本類型

Java包含了原始的,或一小部分的內在類型。這些值是不是對象是Java和Smalltalk之間最大的語義上的區別之一。在Smalltalk中,原始類型被視爲對象,並通過編譯器或虛擬機的透明盒裝。在Java和Objective-C,它們是明確的。

Java只有一個原始類型的一小部分;四種符號整數,兩種(簽字)浮點值,布爾,字符。Objective-C的所有C支持的原始類型。核心組是相似的,但有一些重要的差異。首先是C只定義了一種類型的最小範圍。短Java中始終是16位。短在C通常是16位。Java中的一個 int, 始終是32位。一個 int, 在C是16,32或64位的平臺上,今天存在,可能在未來的128位,但通常是32位的平臺上,在那裏你可以使用Objective-C的。

Objective-C中繼承的typedef從C關鍵字和一個標準的定義很多。stdint.h頭,例如,定義uint32_tint32_t類型的,總是無符號的或簽署的每一個平臺上,你可以使用32位整數。

一個的typedef “,Objective-C的標準提供了D型是BOOL,這應該只有YESNO。這實在是一個 char (在大多數平臺上的八位位組),並有各種不同的方法,它可能會得到一個值是既不YESNO

Java和Objective-C中的份額爲原始類型相同的初始化規則。如果他們在聲明一個實例變量中的對象(什麼是Java調用一個字段),那麼他們將被初始化爲0時被實例化的對象。如果他們是局部變量,那麼他們將被初始化爲一個未定義的值。

從技術上講,Objective-C中沒有定義如何實例化對象。不像Java,Objective-C中沒有定義所有的內存模型,它繼承了它是從C對象,按照慣例,分配的東西,包裝的Ç calloc()函數的庫函數。OS X上,這個包裹是相當複雜的,但最終的結果是,你創建的每個對象將未初始化的值設置爲0。

一個重要的區別是,Objective-C中繼承所有C.在Java中的非結構性對象類型,一切都是一個對象或一個原始。Objective-C中,你也有結構,原始陣列,和工會。

Cocoa在一些地方使用的一些結構,這些包括類似的事情的NSPoint,這代表了二維空間中的點。不同的對象,它們總是通過引用傳遞,結構通常是按值傳遞。他們比真實的對象還要容易創建。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章