[objective-c基础]基本数据类型、对象与指针
变量 (variable) 为程序语言中自行定义的标识符 (identifier) , Objective-C 的变量不是储存基本数据型态 (basic data type) 的数值 (value) 就是指针 (pointer)

Objective-C 的资本数据型态如下列表
| 数据类型 | 关键字 | 范围 |
|---|---|---|
| 字符(整数) | char | ASCII 字符 |
| 整数 | short int | -32768~32767 |
| 整数 | unsigned short int | 0~65535 |
| 整数 | int | -2147483648~2147483647 |
| 整数 | unsigned int | 0~4294967295 |
| 整数 | long int | -2147483648~2147483647 |
| 整数 | unsigned long int | 0~4294967295 |
| 整数 | long long int | -9223372036854775808 ~ 9223372036854775807 |
| 整数 | unsigned long long int | 0~18446744073709551615 |
| 浮点数 | float | 依据 IEEE 754 标准 |
| 浮点数 | double | 依据 IEEE 754 标准 |
| 浮点数 | long double | 依据 IEEE 754 标准 |
| 布林值(整数) | BOOL | YES, NO, signed char |
| 通用型态 | id | 任何型态的对象或常数 |
基本数据类型分为整数与浮点数两大类,字符、布林值实际上属于整数,通用类型 id 比较特别,它可以是任何类型的对象或常数。
使用变量前须先声明所属类型,然后可以运用指派运算符将常数 (constant) 指派给变量,常数也就是程序中直接写出来的数值,以下表示布林值 (Boolean value) 、字符 (character) 、整数 (integer) 与浮点数 (floating-point number) 的字面常数
- BOOL a = YES;
- char b = '2';
- int c = 2;
- double d = 2.0;
提示:整数 0 或常数 NO 为布林真假值中的‘假’,或称之 false ,其他非 0 的值或常数 YES 都会被当成布林真假值中的‘真’,或称之 true 。
使用变量前,都得先声明 (declare) 要使用的识别字,声明形如上例,写完型态名称后接空格,然后接识别字名称
- TypeNname identifier;
通常基本数据型态所需要用到的内存空间有限,因此编译器 (compiler) 会直接分配基本数据型态的内存空间,变量直接指向该内存空间。如果变量指向的是对象 (object) ,由于对象需要的内存空间相当庞大(相较基本资型态来讲),因此对象变量就得声明成指针,例如 demo.m 中
- // 建立自动释放池对象, alloc 为配置内存区域, init 为初始化对象
- NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
pool 为指向 NSAutoreleasePool 型态对象的指针。另外 s1 、 s2 、 s3 分别是指向不同 NSString 型态的字符串对象
- // 建立三个 NSString 字符串对象
- NSString *s1 = @"\n\n这是 Objective-C 的第一个程序...\n";
- NSString *s2 = @"使用 Foundation.h 中的 NSLog() 来输出...\n";
- NSString *s3 = @"程序执行结束...\n\n";
声明变量时使用 * 于识别字左侧表示该变量为指针,有没有空格或插入多个空格都没关系。声明指针变量的形式如下
- TypeNname *pointer;
建立对象需要先分配内存空间,然后将对象初始化。由于 Objective-C 的所有对象都已继承 (inherit) 或须自行设置继承自 NSObject , NSObject 为 Objective-C 所有对象之母,因此可使用 NSObject 的 alloc 方法分配内存空间,接着利用 NSObject 的 init 初始化对象,或自行设计初始化方法。
继承 (inheritance) 是面向对象程序语言 (object-oriented progamming language) 中的一项重要特性,使对象的模板,也就是类别 (class) 可以衍生自其他类别,子类别 (subclass) 可以拥有父类别 (superclass) 的特性。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
