1、核心内容标识符关键字OC基本数据类型运算符表达式和语句分支和循环变量的作用域标识符合法标识符非法标识符ZhangSanifDogGirl*#_998sad90$as_34d34_sdfl OC语言中,对各种变量、方法和类等要素命名时使用的字符序列称为标志符。标识符由字母、下划线“_”、美元符“$”和数字组成 标识符必须以字母、下划线、美元符号开头 标识符大小写敏感,长度无限制l oc标识符有如下命名规则:l 约定俗成:oc标识符选取要“见名之意”,并且不能与oc中保留字重名。关键字intenumfloatgotodoubleregistershortsizeofstructtypedefuns
2、ignedvolatilebreakcharcontinuedolongexternforwhileautoreturnsignedstaticswitchunionvoidifcaseconstdefaultelsel OC中一些具有特定含义的,系统专门使用的字符串称为“保留字”,或者叫“关键字”(keyword)。l OC中的关键字全部都是小写。OC常量 如整型常量:3456 实型常量:3.1415926 字符常量:a 逻辑常量:true、false 字符串常量:“hello iphone”l OC中的常量值用字符串表示,区分不同的数据类型 区分字符常量和字符串常量l 注意:OC变量l O
3、C变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。l OC程序中每一个变量都属于特定的数据类型,在使用前必须对其声明,声明格式为:type varName=value;l 例如:int i=580;float f=12.12f;double d=0.798;NSString*s=hello iphone;l 从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须要先申请(声明),然后必须进行复制(填充内容),才能使用。程序的执行过程硬盘程序1.Load代码到内存区代码操作系统代码alloc出来的局部变量静态变量和字符静态变量和字符串变量
4、串变量存放代码内存2.从main函数开始执行堆栈数据区代码区2.执行过程中的内存管理OC变量的分类 局部变量:方法或语句块内部定义的变量 实例变量:方法外部、类的内部定义的变量l 按被声明的位置划分:基本数据类型变量 指针数据类型变量l 按所属的数据类型划分:OC局部变量与成员变量l 方法体内部声明的变量(包括形参)称为局部变量:方法体内部是指与方法对应的大括号内部l 在方法体外,类体内声明的变量称为“实例变量”或者“成员变量”-(void)getName int a;int b=a+5;/编译警告,变量a还未被初始化float c=2.8;OC数据类型数据类型基本数据类型指针数据类型数值型字
5、符型(char)布尔型空类型(void)类(class)id整数类型int浮点型float,doubleC和OC的基本数据类型int:声明整形变量double:声明双精度变量float:声明浮点型变量char:声明字符型变量id:通用的指针类型enum:声明枚举类型long:声明长整形变量或函数short:声明短整型变量或函数signed:声明有符号类型变量union:声明共用体(联合)数据类型unsigned:声明无符号类型变量void:声明函数无返回值或无参数数据类型格式化说明符数据类型OC关键字格式说明引导符整型int%d、%i短整型short int%hd、%hi长整形long int
6、%ld、%li无符号短整型unsigned int%u无短整型unsigned short%hu无符号长整形unsigned long%lu类型名OC关键字格式引导说明符浮点型float%f双精度型double%f长双精度long double%lf字符型char%c整数类型l OC中整数类型用int来表示,格式化符号用%i或d%来表示l 比如:int a=100;l OC语言的整型常量默认为int型,声明long型常量可以后加l或L,如:int b=600;/正确 long c=888888888888L;浮点类型类型占用存储空间至于范围float4字节-3.403E38double8字节-
7、1.798E3.8-1.798El 浮点类型的变量可以存储包括小数的值l OC中浮点型常量默认为double型,如果要声明一个常量为float,在数字的后面加f或F。l double m=3.14159;/正确 float f=3.14f;l 下面列出OC的各种浮点类型 float有效数字为67位,格式化说明符号用%f表示 double有效数字为1516位 格式化说明符号用%f,%e或%g表示l OC中有两种浮点类型字符charl Char型数据用来表示通常意义上的“字符”,格式化说明符用%c表示l 字符常量为用单引号括起来的单个字符,例如:l char achar=a;char b=0;ch
8、ar cChar=苹;值域范围:-128127l n,OC编译器把这个当作单个字符l unsigned char 值域范围:0 255l OC字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示,例如:char c1=u0061;注:Unicode是全球语言统一编码char類型(ASCII碼)逻辑型Booleanl Boolean类型指的是用于存储真值和假值的变量,一般用于程序流程控制。l Boolean类型数据允许取值true或false,也可以是0或非0的整数替代true和false,这点和java语言不通。java里面boolean是基本数据类型,Boolean是
9、它的封装类,和其他类一样,有属性有方法,可以new.实例:Boolean flag=true;if(flag)NSLog(Hello iPhone);限定词l long int:声明变量xx为long的整形变量。格式化符为%li,如:long int a;l long long int:声明变量xx为long long的整形变量,格式化符%lli,如:long long int b;l long double:跟int基本相同l unsigned int:声明无符号的整型变量。如:unsigned int c;l signed int:声明有符号的整型变量。如:signed int d;voi
10、d类型l 告诉编译器没有任何范围类型的值l 不能像其他数据类型一样来声明变量l 例如:void i=10;/错误l void通常与方法一起搭配使用,比如:-(void)test /code id类型 id类型是oc中独有的数据类型。在概念上,类似Java的Object类,可以转换为任何数据类型,可以存储任何类型的对象,从某种意义上说,它就是一般的对象模型。在内部处理上,这种类型被定义为指向对象的指针,l 将number声明为id类型的变量。如:id number;l 格式化说明符:%p基本数据类型转换l OC中可以从任意基本数据类型转型到另外的基本类型l 转换分为默认转换和强制转换l 整型,字
11、符型,浮点型的数据在混合运算中相互转换,转换时需遵循以下原则:容量小的类型默认转换为容量大的数据类型;数据类型按容量大小排序为:Byte,short,char-int-long-float-double Byte,short,char之间不会相互转换,他们三者在计算时首先会转换成int类型。容量大的数据类型转换成容量小的数据类型,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。实数常量(如:2.9)默认为double,整数常量(如:123)默认为int运算符OC语言支持如下运算符:l 算数运算符:+,-,*,/,%,+,-l 关系运算符:,=,l 赋值运算符:=l 扩展赋值运算符
12、:+=,-=,*=,/=自加和自减运算符-(void)getNumberint i1=10,i2=12;int i=i2+;NSLog(i=%d,i);NSLog(i2=%d,i2);i=+i2;NSLog(i=%d,i);NSLog(i2=%d,i2);i=-i1;NSLog(i=%d,i);NSLog(i1=%d,i1);i=i1-;NSLog(i=%d,i);NSLog(i1=%d,i1);输出:i=12i2 =13i=14i2 =14i=9i1=9i=9i1=8注意:+(-)在前时先运算再取值在后时先取值再运算逻辑运算符 逻辑运算符:!:逻辑非&:逻辑与|:逻辑或:逻辑异或&:短路与|
13、:短路或-(void)testBoolean a,b,c;a=true;b=false;c=a&b;NSLog(c,c);c=a|b;NSLog(c,c);c=ab;NSLog(c,c);c=!a;NSLog(c,c);c=a&b;NSLog(c,c);c=a|b;NSLog(c,c);-(void)testint i=3,j=4;Boolean flag3=(i3)&(i+j)5);/第二个操作数不再计算Boolean flag4 =(i2)|(i+j)6)赋值运算符与扩展运算符赋值运算符(=)l 当“=”两侧数据类型不一致时,可以适用默认类型转换或适用强制类型转换原则进行处理long l=
14、100;int i=(int)l;l 注意:可以将整型常量直接赋值给Byte,short,char等类型变量,而不需要进行强制类型转换,只要不超过其数据范围Byte b=11;char c=456;运算符用法举例等效的表达式+=a+=ba=a+b-=a-=ba=a-b*=a*=bfa=a*b/=a/=ba=a/b%=a%=bfa=a%b表达式表达式是符合一定语法规则的运算符和操作数的序列a1.0+a(a-b)*c-1i10&i%10!=0表达式的类型和值对表达式中操作数进行运算得到的结果称为表达式的值。表达式值的数据类型即为表达式的类型。表达式的运算顺序应按照运算符的优先级从高到底的顺序进行。
15、优先级相同的运算符按照事先约定的结合方向进行。三目运算符三目条件运算符,语法格式:x?y:z其中x为Boolean类型表达式,先计算x的值,若为true,则整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。比如:int score=80;int x=-100;NSString*type=score 0?1:(x=0?0:-1);NSLog(type=+type);NSLog(flag=+flag);语句 if if.else if.else if if.else if.else if.else switchl 条件语句-根据不同条件,执行不同语句 for while do.wh
16、ilel 循环语句-重复执行某些动作if语句lif(表达式)/语句比如:if(天不下雨)我就.lif.else.lif.else if.lif.else if.else if.lif.else if.else if.elsel只有一句需要执行的语句时,可以省略,为了是代码可读性更好,但是不推荐省略for循环语句 for语句为如下形式:for(表达式1;循环条件;表达式2)/语句;.;执行过程:先求表达式1的值,再求循环条件的值,如果条件不满足(即表达式为false),循环立即终止。然后执行在循环之后的程序语句。如果条件满足,继续执行循环条件的值,如果条件满足,执行表达式2,如此重复执行,直到条
17、件不满足,退出循环。while和do whilewhile语句为格式:while(逻辑表达式)语句:.;执行过程先判断逻辑表达式的值。若为true,则执行其后面的语句,然后再次判断条件并反复执行,直到条件不成。while语句为格式:do 语句;while(逻辑表达式);执行过程先执行语句,再判断逻辑表达式。break和continuebreak语句用于终止某个语句块的执行。用在循环语句体重,可以强行退出循环;-(void)testint j=3;for(int i=1;i=10;i+)/当i等于j时,退出循环if(i=j)break;NSLog(i=%d,i);continue语句用在循环语句
18、体中,用于终止某次循环过程,跳过循环体中continue语句下面未执行的循环,开始下一次循环过程;例如:-(void)testint flag=3;for(int i=1;i=5;i+)/当i等于flag时,跳过当次循环if(i=flag)continue;NSLog(i=%d,i);while、break和continue实例/输出10-100内前5个可以被4整除的数-(void)test int num=0,i=10;while(i=100)if(i%4=0)NSLog(%d,i);num+;if(num=5)break;i+;/输出1-100内的质数-(void)test for(int i=1;i100;i+=2)Boolean flag=true;for(int j=2;ji;j+)if(i%j=0)flag=false;break;if(!flag)continue;NSLog(%d,i);switch(条件语句)switch()case xx:.;case xx:.;default:.;小心case穿透,推荐使用break语句与之搭配使用多个case可以合并到一起default可以省略,但不推荐省略switch的值必须是int类型