当前位置: > 华清远见教育科技集团 > 嵌入式学习 > 讲师博文 > 关于java基础的总结
关于java基础的总结
时间:2016-12-13作者:华清远见

Java语言特性

1. 简洁性
         Java是一个简洁的语言,java的语法类似与C\C++,但是java没有指针,头文件、宏定义等让人比较头疼的语法,代码简洁,清晰易懂。

2. 面向对象编程
         Java是一种纯粹的面向对象的语言,初设计时就是为了讲面向对象的艺术深深的刻在java的核心中的。c++也是一种面对对象的语言,但是它不纯粹,它要兼容C中的一部分内容,算是一半是面向过程,一半是面向对象的。Java比C++更为纯粹,更加简洁。C++本身是设计出来填C的各种坑,但是带来的效果是又出现了更多的坑,java就是设计出来填C++的坑的。

3. 健壮性
         Java编译器能够检测出许多其他语言中仅在运行时刻才能够检测出来的问题,而且它不需要程序员关心内存分配和释放的问题,这些事情都有java来帮你解决。

4. 可移植性
         Java的一个非常重要的特性就是可移植性。大家知道,C语言的int类型的数据,可能是16位的,也可能是32位的,或者是编译器提供商所规定的其他大小。但是在java中,它永远都是32位的。所谓的一次编译,处处运行,就是说,java源码你只需要编译一次,然后就可以放在各种电脑上运行,windows,linux,Mac上等。或者手机上,或者平板上。

5. 解释型的语言
         大家都知道,C语言是一种编译型的语言,所谓编译型的语言,说白了,就是把人类读的懂的源码翻译成机器读的懂的机器码,扔给机器去执行。Java呢,则把我们的源码翻译成为一种中间文件,字节码。然后扔给java解释器运行。Java解释器解释一小部分字节码,把几行字节码翻译成机器码,让机器运行。边解释边运行。那我们就想,它为什么要把源码先编译成字节码,增加这个中间步骤的意义是什么呢?就是为了可移植性。

Java的版本

目前,Java2平台有3个版本,它们是适用于小型设备和智能卡的Java2平台Micro版(Java2 Platform Micro Edition,JavaME)、适用于桌面系统的Java 2平台标准版(Java2 Platform Standard Edition,Java SE)、适用于创建服务器应用程序和服务的Java 2平台企业版(Java2 Platform Enterprise Edition,Java EE)。

Java运行时

运行JVM字节码的工作是由解释器来完成的。解释执行过程分三部进行:代码的装入、代码的校验和代码的执行。装入代码的工作由"类装载器"(class loader)完成。类装载器负责装入运行一个程序需要的所有代码,这也包括程序代码中的类所继承的类和被其调用的类。当类装载器装入一个类时,该类被放 在自己的名字空间中。除了通过符号引用自己名字空间以外的类,类之间没有其他办法可以影响其他类。在本台计算机上的所有类都在同一地址空间内,而所有从外 部引进的类,都有一个自己独立的名字空间。这使得本地类通过共享相同的名字空间获得较高的运行效率,同时又保证它们与从外部引进的类不会相互影响。当装入 了运行程序需要的所有类后,解释器便可确定整个可执行程序的内存布局。解释器为符号引用同特定的地址空间建立对应关系及查询表。通过在这一阶段确定代码的 内存布局,Java很好地解决了由超类改变而使子类崩溃的问题,同时也防止了代码对地址的非法访问。

随后,被装入的代码由字节码校验器进行检查。校验器可发现操作数栈溢出,非法数据类型转化等多种错误。通过校验后,代码便开始执行了。

Java字节码的执行有两种方式:
         1.即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。
         2.解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码程 序的所有操作。

通常采用的是第二种方法。由于JVM规格描述具有足够的灵活性,这使得将字节码翻译为机器代码的工作

具有较高的效率。对于那些对运行速度要求较高的应用程序,解释器可将Java字节码即时编译为机器码,从而很好地保证了Java代码的可移植性和高性能。

Java的GC机制

GC是垃圾收集的意思(Garbage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。所以,Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放. 对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的".当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。

引用计数,主要摘要是: 一般来说,堆中的每个对象对应一个引用计数器。当每一次创建一个对象并赋给一个变量时,引用计数器置为1。当对象被赋给任意变量时,引用计数器每次加1。当对象出了作用域后(该对象丢弃不再使用),引用计数器减1,一旦引用计数器为0,对象就满足了垃圾收集的条件。基于引用计数器的垃圾收集器运行较快,不会长时间中断程序执行,适宜必须实时运行的程序。但引用计数器增加了程序执行的开销,因为每次对象赋给新的变量,计数器加1,而每次现有对象出了作用域,计数器减1。

发表评论
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)