objective-c基礎資料型別 (Elementary Data Type)

來源:互聯網
上載者:User

objective-c基礎資料型別 (Elementary Data Type)

1、Object-c提供基礎資料型別 (Elementary Data Type):int、float 、double 、char    


範例程式碼測位元組數:

//資料類型:        //整形(int、short int、long int、unsigned int、unsigned short、unsigned long)        NSLog(@"整形:");        NSLog(@"%lu",sizeof(int));//整形4個位元組        NSLog(@"%lu",sizeof(short int));//短整形2        NSLog(@"%lu",sizeof(long int));//長整形8        NSLog(@"%lu",sizeof(unsigned int));//無符號整形4        NSLog(@"%lu",sizeof(unsigned short));//無符號短整形2        NSLog(@"%lu",sizeof(unsigned long));//無符號長整形8        //實形(float 、double 、long double)        NSLog(@"實形:");        NSLog(@"%lu",sizeof(float));//浮點形4        NSLog(@"%lu",sizeof(double));//雙精確度形8        NSLog(@"%lu",sizeof(long double));//長精度形16        //字元型和字串形         char a='a';        char b=100;        NSLog(@"%c,%c",a,b);        NSLog(@"%i,%i",a,b);        NSLog(@"我是字串");//字串形:@“我是字串”

運行結果:

2012-03-27 10:36:41.618 HelloWorld[724:707]整形:

2012-03-27 10:36:41.624 HelloWorld[724:707] 4

2012-03-27 10:36:41.625 HelloWorld[724:707] 2

2012-03-27 10:36:41.626 HelloWorld[724:707] 8

2012-03-27 10:36:41.627 HelloWorld[724:707] 4

2012-03-27 10:36:41.628 HelloWorld[724:707] 2

2012-03-27 10:36:41.628 HelloWorld[724:707] 8

2012-03-27 10:36:41.629 HelloWorld[724:707]實形:

2012-03-27 10:36:41.630 HelloWorld[724:707] 4

2012-03-27 10:36:41.630 HelloWorld[724:707] 8

2012-03-27 10:36:41.631 HelloWorld[724:707] 16

2012-03-27 10:36:41.632 HelloWorld[724:707] a,d

2012-03-27 10:36:41.633 HelloWorld[724:707] 97,100

2012-03-27 10:36:41.633 HelloWorld[724:707]我是字串

輸出格式符:

int:%i,%d,%o,%x

float:%f,%e,%g

double:%f,%e,%g

char:%c

限定符:

(long)

long int:%li

long double:%lf

(long long)

long long int:%lli

(short)

short int:%hi

2、其它類型:

(一)id類型

id類型是一個獨特的資料類型,在概念上,類似java的Object類,可以轉換為任何資料類型。換句話說,id類型變數可以存放任何資料類型的對象。在內部處理上,這種類型被定義為指向對象的指標,實際上是一個指向這種對象的執行個體變數的指標。需要注意的是id是一個指標,所以在使用id的時候不需要加星號;

比如說:id foo=nil;

該語句定義了一個nil指標,這個指標指向NSObject的任意一個子類。而“id *foo=nil"則定義了一個指標,這個指標指向另一個指標,被指向這個指標指向NSObject的一個子類;

下面是一個樣本:兩個不同的類(一個是學生類Student,一個是會員類Member),這兩個類擁有不同的成員變數和方法。

Student.h

#import <Foundation/Foundation.h>@interface Student : NSObject{    int sid;    NSString *name;}@property int sid;@property (nonatomic,retain)NSString *name;-(void)print;-(void)setSid:(int)sid andName:(NSString*)name;@end

Student.m

#import "Student.h"@implementation Student@synthesize sid,name;-(void)print{    NSLog(@"我的學號是:%i,我的名字是:%@",sid,name);}-(void)setSid:(int) sid1 andName:(NSString *)name1{    self.sid=sid1;    self.name=name1;}@end

Member.h

#import <Foundation/Foundation.h>@interface Member : NSObject{    NSString *name;    int age;}@property (nonatomic,retain)NSString *name;@property int age;-(void)print;-(void)setName:(NSString*)name1 andAge:(int)age1;@end

Member.m

#import "Member.h"@implementation Member@synthesize name,age;-(void)print{    NSLog(@"我的名字是:%@,我的年齡是%i",name,age); }-(void)setName:(NSString *)name1 andAge:(int)age1{    self.name=name1;    self.age=age1;}@end

主函數main.m裡:

id fo;        NSLog(@"%lu",sizeof(fo));        Member *member1=[[Member alloc]init];        [member1 setName:@"Sam" andAge:36];        id data;        data=member1;//由於id類型的通用性質,我們可以將建立好的對象賦值給data;        [data print];                Student *student1=[[Student alloc]init];        [student1 setSid:1122334455 andName:@"Lee"];        data=student1;        [data print];

運行結果:

2012-03-27 14:41:01.768 HelloWorld[440:707] 8

2012-03-27 14:41:01.769 HelloWorld[440:707] 我的名字是:Sam,我的年齡是36

2012-03-27 14:41:01.769 HelloWorld[440:707] 我的學號是:1122334455,我的名字是:Lee

注:id 類型可以通過類型轉化符可以將一般的id 類型的對象轉換成特定的對象。
看上面程式中有@property和@synthesize修飾;

@property和@synthesize,在介面檔案中使用@property來識別屬性(一般是執行個體變數),在實現檔案中使用@synthesize標識所聲明的屬性,讓系統自動產生設定方法和擷取方法.

格式:@property (屬性列表)執行個體變數,


(二)列舉資料型別、typedef 文法以及資料類型的轉換和C
是一樣。    

(三)BOOL布爾值:

布爾值為YES/NO,或1/0.假是0;這個沒什麼好說的

(四)sel選取器

選取器就是指向方法的一個指標,可以簡單理解為程式運行到這裡就會執行指定的方法;

(五)nil和Nil

nil和C語言的NULL相同。nil表示一個Objctive-C對象,這個對象的指標指向空(沒有東西就是空)。

而Nil首字母大寫的Nil和nil有一點不一樣,Nil定義一個指向空的類(是Class,而不是對象)。

(六)IMP

IMP是一個指向函數的指標,這個被指向的函數包括id(“self”指標),調用的SEL(方法名),再加上一些其他參數。

說白了IMP就是實現方法。

(六)class

與java類似,你可以使用class類來獲得一個對象所屬的類

(七)Method

Method(我們常說的方法)表示一種類型,這種類型與selector和實現(implementation)相關。

ok!


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.