object-c和Java的简单比较
2015-12-10 17:35
609 查看
之前一直都是写Java的,最近业务发展需要,打算着手做iOS开发了,在网上查找了很多资源,作为一个Java开发者,简单对比语言之间的差异还是很有必要的。这样更容易熟悉新的东西。
object-c的一些点
object-c通常写作objective-c或者obj-c,是根据C语言所衍生出来的语言,继承了C语言的特性,是扩充C的面向对象编程语言。java的一些点
Java是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。Java分为三个体系Java SE(J2SE,Java2 Platform Standard Edition,标准版),JavaEE(J2EE,Java 2 Platform, Enterprise Edition,企业版),Java ME(J2ME,Java 2 Platform Micro Edition,微型版)。
Java通过JDBC为多种关系数据库提供统一访问,JDBC是一种用于执行SQL语句的Java API,它由一组用Java语言编写的类和接口组成。
一些相同点
在与c++对比上,他们有相同的地方,没有c++的指针、运算符重载、类的多继承。java 和object-c 都区分大小写,并且都是采用驼峰命名法。
java和object-c都有异常处理
一些对比点
java没有指针,object-c中所有对象都是指针的形式。java含有构造方法和析构方法finalize ,对比object-c相当于init方法和dealloc方法。
java是通过set和get方法来访问成员变量,java的成员变量是在类体的变量部分中定义的变量,也称为属性。成员变量又称全局变量,定义在类中,和类的方法处于同一个层次。 object-c的属性也是类似概念,它通过@property与@synthesize配对使用来实现属性概念,并且默认实现setter和 getter方法。
java中包是类和接口的集合,这相当于object-c中的framework。
java通过输入流和输出流来读写文件,object-c则通过更简单的NSData来实现。
java是通过jvm来进行垃圾回收的,objective-c则通过ARC的机制进行自动内存管理。
java和object-c是如何实现多继承的?
java中不可以继承多个父类,但是可以实现多个接口,这样就实现了多继承概念。object-c则通过Categories和protocols来提供多继承。java是解释型语言,object-c编译型语言
解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。解释型语言,执行速度慢、效率低;依赖解释器、跨平台性好。如Java、Basic。编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。 编译型语言,执行速度快、效率高;依赖编译器、跨平台性差些。如C、C++、object-c、Delphi、Pascal,Fortran。
jvm和gcc
java是一种解释型语言,它的编译器不是直接变异成机器指令,而只需生成在Java虚拟机(jvm)上运行的目标代码(二进制字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。gcc全称GNU编译器套件(GNU Compiler Collection),它把object-c编译成机器指令。
相关文章推荐
- Objective-c语言_设置器和访问器
- Objective-C中.h、.m、.mm的区别
- OC内存管理
- Objective-C 之KVC详解
- Xcode 导入头文件自动补齐
- Objective-C关键字__Nullable和__Nonnull
- IOS开发之NSObject协议类方法说明
- c# dynamic,maybe I should say it is just some shortcut for "Object", box and unbox, without the cast
- JAVA的API: Object类
- DLR之 ExpandoObject和DynamicObject的使用示例
- Java中的Object的Wait() 和notify()方法使用时应注意的地方
- Arcgis sde 10.1您不能创建在安装后的空间库,提示User has privileges required to create database objects.
- 初始化NSDate为指定时间(Initialize a NSDate object with a specific time)
- Objective-C的运行时编程(Runtime Programming)
- Objective-c之Associative
- iOS 中 objectForKey与valueForKey 的区别
- sysfs - 用于导出内核对象(kobject)的文件系统
- ObjectAnimator动画使用
- kobject和uevent的一点想法--待续
- OC学习篇之---Foundation框架中的NSObject对象