【IOS 开发学习总结-OC-2】objective-c 数据类型

数据类型

objective-c 语言是一种面向对象的强类型语言。强类型就要求:所有的变量必须先声明后使用;指定的类型变量只能接受同样类型的值。强类型语言可以在编译的过程中发现源码的错误,保证了代码的健壮。

注释

几乎所有的编程语言都提供了注释的方法。代码是源代码的重要组成部分,对一份规范的程序源代码而言,注释应该占到源代码的1/3左右。

一般的编程语言都提供了单行注释和多行注释功能:

单行注释,就是在程序中只注释一行代码,OC 语言中注释符号是双斜线//,放到一行内容的最前面就可以注释掉这行内容。

多行注释,可以一次性注释掉多行内容。OC 中的注释符号是/* */,两个*中间的部分就是注释掉的内容。注意,多行注释不可嵌套。所以,我个人比较喜欢用单行注释。

注释的原则:

1.可读性第一,效率第二;

2.代码即文档,代码要规范。注释必不可少。

3.不要高估自己的记忆力和理解力。注释要能帮助第一次接触所注释代码的人理解。

小贴士:

&添加注释也是调试程序的一个重要方法。通过注释可能有问题的代码,缩写错误所在的范围进行排错。

&大部分IDE 工具都提供了快捷注释的快捷键,快捷注释可以在选中的代码前都添加单行注释符//,整体注释掉这段代码。OC 中的快捷注释的快捷键是:command+/。

分隔符,标识(zhi) 符和变量

分隔符

分隔符:具有分割功能的符号。 OC 里的分割符有分号(;),花括号({ }),方括号([ ]),圆括号(()),空格,圆点(.)。

分号(;)

OC 里语句的分割是通过分号来完成的。一个语句可以跨多行,每个语句末尾都必须以分号结尾。注意,语句可以跨多行,字符串和变量名不可以跨行书写。虽然 OC 语法上允许一行有多个语句,但为了可读性更好,避免一行写多个语句。

花括号({ }):

花括号的作用就是定义一个代码块,括号里的内容在逻辑上就是一个整体。花括号成对出现。

方括号([ ])

方括号主要作用用于访问数组元素,方括号紧跟在数组变量名后。比如 a[10]=10;OC 在调用方法时也用方括号括起来。

圆括号(())

功能丰富。定义函数时,用它包含形参声明,调用函数时,用它传入实参值;提升表达式中某一部分的运算优先级;强制类型转换的运算符。

空格

主要用于分割一条语句的不同部分。

圆点(.):

调用某个类或者实例的制定成员。

标识符

标识符,就是给程序中变量,类,方法命名的符号。OC 的标识符由字母,下划线,美元符($)和数字组成,但标识符不能以数字开头,不可以包含空格,也不能使用objective-c 的关键字(可以包含关键字),长度没有限制,标识符是区分大小写的,abc 和Abc 是2个不同的标识符。

Objective-c关键字:

OC 语言中有一些特殊用途的单词,被称为关键字(keyword)。标识符不能与关键字相同。Objective-c 中常见的关键字有:

【IOS 开发学习总结-OC-2】objective-c 数据类型_第1张图片

数据类型

强类型语言要求变量必须先声明后使用,OC 也是这样。OC 是 C 语言的超集,支持的数据类型与 C 相似。分类如下图:

【IOS 开发学习总结-OC-2】objective-c 数据类型_第2张图片


指针类型既是 C 语言也是 OC语言最重要的类型,本质上来说所有的系统类,自定义类的本质都是指针类型。

整型:

整型包括如下4种类型:

short int ( 简称 short):通常在内存中占16位。取值范围:-215到215-1。

Int:通常在内存中占32位。取值范围:-231到231-1。

long int( 简称 long):通常在内存中占64位。取值范围:-263到263-1。

long long:通常在内存中占64位。取值范围:-263到263-1。

 

Objective-c 还允许在上面4种整型前添加 unsigned 关键字,变成无符号整型,由于无符号整型最高位不是符号位,所以它不能表示负数,但能表示的最大数值比对应的普通整型的最大值大一倍。

 

【特别说明】:objective-c 并未硬性规定各种类型在内存中所占的空间。通常来说,OC 要求 long long 类型所占用的内存空间不小于 long 型所占用的内存空间,long 型所占用的内存空间不小于 int型所占的内存空间,int 型所占的内存空间应该不小于 short 类型所占用的内存空间。#可以用 sizeof()即可判断变量所占用的内存空间。#

 

如果给出的数值大于定义的整型变量的取值范围时,编译器将给出警告,数据也会丢失。所以,要避免数据与数据类型不匹配的情况出现。

 

Objective-c中整数常量(有3种表示方式)的进制:

十进制:我们日常所用,不做说明;

八进制:常以0开头;

十六进制:以 0x 或者0X 开头,其中10-15分别以 a-f 来表示(这里a-f 不区分大小写)。

NSLog()输出函数及格式字符

NSLog()输出函数的参数应该是一个字符串常量,该字符串中可以使用%格式的占位符,该占位符由后面对应的变量填充。

那NSLog()输出函数支持的格式字符都有哪些呢?

【IOS 开发学习总结-OC-2】objective-c 数据类型_第3张图片

【IOS 开发学习总结-OC-2】objective-c 数据类型_第4张图片

这里说明一下附加字符 m 和.n。如下面的代码:

double d1=4.3;

NSLog(@”===%8.3f”,d1);//输出以小数的形式输出至少占用8位,小数点共3位的浮点数

 

字符型:

字符型通常用于表示单个的字符,字符常量必须用单引号括起来,objective-c 的每个字符只占一个字节,所以单个的 oc 字符不支持中文字符(中文字符每个字符占2个字节)。

字符常量有两种形式:

1.直接指定单个字符,如‘B’,’1’等。

2. 通过转义字符表示特殊字符常量,如‘\n’,‘\t’。

objective-c 中常用的转义字符有:

 【IOS 开发学习总结-OC-2】objective-c 数据类型_第5张图片

其实 char 类型可以和范围在0-255范围内的 int 相互转换。如果按照刚才的约定将 int 整数赋给 char 变量,系统会自动把这个int 整数当做 char 类型来处理。

注意:char 类型是单引号括起来的,而 C 字符串是双引号括起来的。Objective-c 中单引号,双引号和反斜线都有特殊的用途,如果要使用他们应该使用转义字符的表示方式。

 

Objective-c 提供了 NSString 类来表示字符串(由多个字符组成),字符串用双引号括起来,并在前面添加@与 C 字符串以作区分。

 

浮点型:

有三种:float,double,long double。 一般来说,它们所占用的字节依次是4字节,8字节和16字节。

 

浮点数的两种表示形式:

十进制形式:如4.34,3.1502等。

科学计数法形式:如3.14e2(或者3.14E2)表示3.14*102 。只有浮点类型高的值才可以用科学计数的形式表示。

 

Objective-c 的浮点型数值不区分 float 和 double,既可以赋值给 float 变量,也可以赋值给double 变量。

另外 OC 还提供了3个特殊的浮点型数值:正无穷大(例如:用一个正浮点数除以0.0),负无穷大(例如:用一个负浮点数除以0.0)和非数(例如:0.0除以0.0或者对一个负数开方)。特别指出的是:所有的正无穷大数值都相等,所有的负无穷大都相等;而非数不与任何数值相等,甚至和非数自己都不相等。只有浮点数除以0.0才可以得到正无穷大和负无穷大,如果使用整型值除以0.0,将会得到整数值取值范围的边界值,如 int 型正数除以0.0,会得到2147483647。  

 

枚举型:

如果一个变量只有几个可能的值,这种变量就可以定义为枚举变量。

定义枚举变量有2种方式:一,定义枚举类型名;二,定义匿名枚举类型。

 

            // 定义枚举类型(第一种方式),枚举值本质上是无符号整数

            enum season {spring =4, summer =1,fall , winter};

            // 定义两个枚举变量

            enum season myLove , yourLove;

            //为两个枚举变量赋值

            myLove= winter;

            yourLove= fall;

            //把枚举值当成无符号整数执行输出,枚举元素默认的值,按它们的定义顺序依次是0,1,2,3以此类推

            NSLog(@"winter的值:%u" , myLove);

            NSLog(@"fall的值:%u" , fall);      

            if(spring > winter)//枚举元素可以比较大小

            {

                  NSLog(@"春天大于冬天吗");

            }

            //定义匿名枚举类型,并定义两个枚举变量(第二种方式)

            enum {male , female} me , you;

            //为两个变量赋值

            me= male;

            //直接赋整数值给枚举变量

            you= 1;

            NSLog(@"you的值:%u" , you);

            //直接把枚举值当成整数使用

            int iVal = you *2 +12 + me;

            NSLog(@"%d" , iVal);

 

BOOL  类型

Objective-cl类型有 YES 和 NO 两个值,分别代表真和假。其实,OC 的底层是使用 signed char 来代表 BOOL。  而YES和 NO两个值的底层其实就是1和0。这可以在系统头文件中可以找到定义。

Bool 的实际类型是 signed char, 当赋值给 bool 型变量的是1-255(一个字节)之间的数值时,objective-c 都会当成 YES 处理。当用一个较大的非0整数赋值给 BOOL 类型的变量时,如果此时碰巧该数的最低八位(其实范围比这个窄)都是0,那么系统就会把它当做NO处理。

所以,一定要注意:不是将非零整数赋给 BOOL 类型的变量一定就可以得到 YES!

(参考)  signed unsigned 区别:

所有的整型类型都有两种变体:signed 和unsigned。 有时候,要求整型变量能够存储负数,有时候则不要求。
没有使用关键字unsigned生命的整型变量都被视为无符号的,这种变量可以为正,也可以为负;而unsigned整型变量只能为正

signed 和unsigned 整型变量占用的内存空间大小相同,而signed整型变量的部分存储空间被用于存储指出该变量是为正还是为负的信息,
因此unsigned整型变量能存储的最大值为signed整型变量能够存储的最大正数的两倍

例如,如果short变量占用2字节,则unsigned short变量的取值范围是0 - 65535,而signedshort变量的取值范围内一般为正数,即最大正数为32767,然后,signed short变量也能存储负数,因此其取值范围为-32768 - 32767




你可能感兴趣的:(ios开发,objective-c,语言学习总结)