1. Objc是一门编译型语言,JAVA是解析型语言

编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。 编译型语言,执行速度快、效率高;依赖编译器、跨平台性差些。

解析型语言:解释性语言在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。解释型语言,执行速度慢、效率低;依赖解释器、跨平台性好。

Objc是动态语言,就是在运行时可以改变代码结构,Java则是静态语言。Objc中的KVC与KVO充分说明了这个特点。

2. 内存管理与消息传递方面:

Objc是引用计数,发生在编译期。Java是垃圾回收,发生在运行时。后来Objc出现了ARC,不用程序员去写管理内存的东西,但其本质是编译期基于引用计数的内存管理。

最大的区别在于Objc是使用消息传递的,本质是字符串,所以其在运行时可以修改类、对象、方法。Java的方法是与class静态绑定的,虽然在运行时通过反射来获取,但是性能会下降一个数量级。所以说Objc更加动态。

所以android手机为什么体验有点差,因为Java的垃圾回收机制。

3. 代码方面:

1)Java有命名空间package,Ojbc没有。

2)实现多继承的方法不同,java通过不可以继承多个父类,可以通过实现多个interface接口的方式来实现多继承。Objc通过Categories和Protocols实现多继承。

IOS 其它语言比较-Objc与JAVA的比较的更多相关文章

  1. iOS开发-Xcode入门ObjC程序

    元旦三天假跟妹子冷战一天半,剩下的半天觉得无聊,可以写点东西,折腾了下xCode 6.1,虽然iPhone6比较丑,但是不影响IOS在高端机上面的地位,ObjC是扩充C的面向对象编程语言.主要使用于M ...

  2. iOS多语言备选机制

    近期伊书突然接到一些外国用户的投诉,说伊书界面变成了中文,但他们系统语言不是中文,是法文俄文日文等,伊书只支持中文跟英文,在不支持系统所用语言的时候,理应会自动选用英文,不知为什么会选成了中文,经过艰 ...

  3. 20165312 C语言基础调查和JAVA学习展望

    C语言基础调查和JAVA学习展望 一.有关学习技能的经历 掌握一项技能,我认为最重要的是练习和认真程度. 我在上幼儿园的时候学过电子琴,上台表演过多次,但是三四年之后就半途而废了,后来小学毕业之后对钢 ...

  4. 20165315 C语言学习情况与Java学习目标

    20165315 C语言学习情况与Java学习目标 一.出色技能的获取经验 我从小便是一个中规中矩的人,在很多方面都是让成绩尽量保持在前百分之二十到三十这个范围内,比如我比较擅长的唱歌和乒乓球,但也不 ...

  5. Java语言的特点以及Java与C/C++的异同

    Java语言的特点 1. Java为纯面向对象的语言,能够直接反应现实生活中的对象,容易理解,编程更容易. 2.跨平台,java是解释性语言,编译器会把java代码变成中间代码,然后在JVM上解释执行 ...

  6. iOS OC语言原生开发的IM模块--RChat

    iOS OC语言原生开发的IM模块,用于项目中需要原生开发IM的情况,具备发送文字.表情.语音.图片.视频等完整功能,包含图片预览视频播放等功能,此项目将会长期更新如有问题可以提出,我的邮箱:fshm ...

  7. iOS多语言设置

    最近公司做的项目需要向国外推广,因此app需要添加相应的语言设置,为此整理记录下多语言设置的过程.如有不对的地方,欢迎各位大神指正.下面就详细介绍下设置的过程: 1.基本设置 第一步:首先在 项目工程 ...

  8. Atitit.跨语言异常转换机制 java c# php到js的异常转换

    Atitit.跨语言异常转换机制 java c# php到js的异常转换 1. bizEx   直接抓取,然后js catchEX1 2. Chkec runtimeEx1 3. Other异常..J ...

  9. 《快乐编程大本营》java语言训练班 2课:java的变量

    <快乐编程大本营>java语言训练班 2课:java的变量 1变量介绍 2变量分类,数值变量 3变量分类-字符串变量 4变量分类-布尔变量 5变量分类-对象 http://code6g.c ...

随机推荐

  1. 编译 wxWidgets-3.0.2 on Mac OS X Yosemite 出错?!的解决方法

    tar -zxf wxWidgets-3.0.2.tar.bz2   //解压 //三部走 ./configure ./make 提示webKit出错 原因:有人偷懒,没试编译就发布了. 解决:找到. ...

  2. Unity加载模块深度解析(纹理篇)

    在游戏和VR项目的研发过程中,加载模块所带来的效率开销和内存占用(即“加载效率”.“场景切换速度”等)经常是开发团队非常头疼的问题,它不仅包括资源的加载耗时,同时也包含场景物件的实例化和资源卸载等.在 ...

  3. 慕课网Java高并发秒杀学习

    课程地址:http://www.imooc.com/learn/587 一个很好:spring,springMVC,mybatis,bootstrap,jQuery,mysql,Restful学习案例 ...

  4. DEV GridControl双击行事件

    首先,需要将gridview1.OptionsBehavior.Editable设为false //双击行弹出nodeDetail信息 private void gridView1_MouseDown ...

  5. 利用onNewIntent避免Activity之间的跳转传值多次实体化

    onNewIntent 需要注意的是: 1.通过Intent启到一个Activity的时候,就算已经存在一个相同的正在运行的Activity,系统也会创建一个新的Activity实例.为了不让Acti ...

  6. 使用jailkit chroot更改ssh用户根目录

    安装jailkit cd /tmp    wget http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz    tar xzf jailkit-2 ...

  7. 网页的Width ,Height

    Jquery中可直接用接口$().height(); 获取浏览器窗口高$(window).height() 获取内部文档高$("body").height() 原生JS 网页可见区 ...

  8. H5 canvas填充文字自动换行

    canvas是H5中非常重要,非常常用,也是非常强大的一个新标签,美中不足的事,canvas中没没有自动换行的属性,我的第一反应是,字符串截取,然后计算每行的距离来实现自动换行.. 然后百度了一下,已 ...

  9. #include <stdarg.h>

    名称描述相容  // 作用描述 va_start使va_list指向起始的参数 va_arg检索参数C89 va_end释放va_list va_copy拷贝va_list的内容 实例解析: #inc ...

  10. java 多线程--- Thread Runnable Executors

    java 实现多线程的整理: Thread实现多线程的两种方式: (1)继承 Thread类,同时重载 run 方法: class PrimeThread extends Thread { long ...