OC程序结构
1.预处理命令(类似java的导入类库)
|
|
2.接口(类似java的接口)
|
|
差异:
1.java中使用interface来定义接口,接口是抽象的,并且里面的方法没有方法体,oc使用@interface来定义接口,但是oc的接口结尾要添加@end来结束
2.java中的继承使用extend,而oc中使用:表示继承(特定下)
3.java中使用implement去实现接口,而oc中使用@implementation实现接口
4.方法
5.语句和表达式
6.注释
OC基本语法
1.标识符
都是由字母,数字,下划线,组成,不允许@,%标点符号,但是java能用$,而oc不能。都以字母或下划线开头。
2.关键字
oc和java一样都不能作为常量或变量,或任何其他标识符名称。
OC数据类型
1.基本类型(整数类型,浮点型)
2.枚举类型(定义变量只能被分配在整个程序中的若干离散的整数值)
3.void类型(类型说明符void表示没有可用的值)
4.派生类型(包括指针类型,数组类型,结构类型,联合类型及函数类型)
差异:oc和java的数据类型差异还是蛮大的,java基本数据类型分为8种(int,float,double,char,short,long,byte,boolean),其余的是引用数据类型(类,接口,数组)
OC变量
oc中使用extern关键字来申明一个变量,java中申明变量只需要加数据类型就好
|
|
OC常量
在oc中有两种简单的方法来定义常量
1.使用#define预处理
2.使用const关键字
|
|
在java中一般使用
|
|
来定义一个常量
OC运算符
1.算术运算符(+,-,*,/,%,++,–)
2.关系运算符(==,!=,>,<,>=,<=)
3.逻辑运算符(&&,||,!)
4.位运算符(&,|,^,~)
5.赋值运算符(=,+=,-=,…)
6.其他运算符
类似,没什么好说的
OC循环
1.while循环
2.for循环
3.do…while循环
4.内嵌循环
5.break
6.continue
7.if,if…else,switch
类似,没什么好说的
函数
1.定义一个方法
|
|
·返回类型:方法可以返回一个值。 return_type是函数返回值的数据类型。有些方法执行所需的操作,不返回值。在这种情况下,return_type关键字是void。
返回类型: 方法可以返回一个值。 return_type是函数返回值的数据类型。有些方法执行所需的操作,不返回值。在这种情况下,return_type关键字是void。
·方法名称: 这是实际的方法名。方法名和参数表共同构成的方法签名。
·参数: 一个参数像一个占位符。当函数被调用时,你传递一个值的参数。这个值被称为实际参数或参数。参数列表是指的类型,顺序和数量的参数的方法。参数是可选的,方法可能不包含任何参数。
·连接参数: 连接的参数,使其更易于阅读和同时调用明确。
·方法体: 该方法的主体包含语句定义的方法用于做什么的集合。
在java中定义一个方法,例
|
|
2.按值传递参数(例:两数交换)
3.按引用方法调用参数传递(例,指针类型交换)
OC 块
1.简单声明块语法
|
|
调用块
|
|
OC Numbers/数字
1.(NSNumber *)numberWithBool:(Bool)value(将bool转成NSNumber)
2.(NSNumber *)numberWithChar:(char)value(将char转NSNumber)
3.(NSNumber *)numberWithDouble:(double)value(将double转NSNumber)
4.(NSNumber *)numberWithFloat:(float)value(将float转NSNumber)
5. (NSNumber *)numberWithInt:(int)value(将int转NSNumber)
6. (NSNumber *)numberWithInteger:(NSInteger)value(将NSInteger转NSNumber)
7. (BOOL)boolValue(将NSNumber转bool)
8. (char)charValue(将NSNumber转char)
9. (double)doubleValue(将NSNumber转double)
10. (float)floatValue(将NSNumber转float)
11. (NSInteger)integerValue(将NSNumber转NSInteger)
12. (int)intValue(将NSNumber转int)
13. (NSString *)stringValue(将NSNumber转NSString)
14. 而在java中也是类似
|
|
例
|
|
OC Arrays/数组
1.申明数组
|
|
2.初始化数组
|
|
如上java类似,但是写法还是有点不同
|
|
3.多维数组
|
|
4.从函数返回数组
注:在OC中不提倡地址返回一个局部变量在函数之外,所以必须将局部变量定义为静态变量,这和java很不同,java是允许直接将局部变量返回的。
|
|
5.指针的数组
数组名是一个常量指针数组的第一个元素
|
|
使用数组名作为常量指针,使用*(balance+4)是一种合法的方式访问数据balance[4]。
OC指针
指针是一个变量,其值是另一个变量,即直接地址的内存位置的地址。
使用时:
1.定义一个指针变量
int *ip;
2.分配一个指针变量的地址
ip = &var;
3.访问提供的地址指针变量的值
例:
|
|
栗子中ip指向的是var的地址值,所以它们值相等都是地址值,而*ip则指向的var的值,所以它们值相等是20
指针运算
OC的指针是一个地址,它也是一个数值,因此可以在数值上的指针执行算术运算。(++,-,+,–)
|
|
|
|
数组的指针
|
|
指向指针的指针
|
|
C语音的指针还是很强大的,虽然之前学过,但是感觉忘的都差不多了,再次重温,收获颇多。