Java特性
在知道了OOP的共性之后,再来看看Java自身所独有的那些特性。
跨平台
这一点相信程序员们都知道。
“编解”同框
所谓编解
同框,说的是Java既是一门编译型编程语言
,也是一门解释型编程语言
:
说它是编译型语言,是因为它需要将源代码
编译
为.class文件
,而不能直接执行。说它是解释型语言,是因为
.class
文件也需要被JVM解释
为二进制机器码才能最终执行。
至于编译型
和解释型
编程语言,没有好坏优劣之分,只有各自的适用场景之别。
动态内存分配
C++认为效率第一,所以它将对象的生命周期交给程序员来管理,由程序员来决定将代码中的变量存放在哪里。
但Java不这么认为,它认为对象通常是比较复杂的,完全人为管理一定会捅娄子。所以它实现了对象的会自动创建与回收(JVM GC),完全不需要人为干预,唯一需要的就是知晓JVM GC的尿性。
这一举措给程序员带来了极大的便利。
虽然Java也会出现诸如OOM(Out of Memory,内存溢出)之类的问题,但相对于C++而言,已经简单和方便了太多。
单继承结构
所谓单继承结构
,是指任何类或对象只有唯一一个父类,而C++的多继承结构
可以有多个父类。
单继承结构相对来说更简单,也更好理解,这也是Java相较之于C++的根本改进之一。
多线程
Java可以同时执行多个任务,但这种能力是和操作系统的支持分不开的。
目前所有主流操作系统都支持多线程的工作模式,只不过这里面还有一点小小的区别。
对于单
CPU
的计算机而言,即使操作系统支持多线程,但在微观范畴,Java的各个子线程依然是在串行
地执行任务,只不过从宏观上看起来像是在同时执行罢了。对于有多个
CPU
的计算机而言,只要操作系统底层能够实现分配不同的任务到不同的CPU
上执行,那么不管是宏观还是微观,Java的多线程都是真正地在同时
执行着多个任务。
异常处理
在Java诞生之前,多数编程语言对于错误处理的主要方式是:依赖程序员的约定俗成而不是语言本身的限制。也就是说,如果程序员没想起来,这些错误就很容易被忘记。
而Java的异常处理机制是将程序错误直接通过编程语言甚至是操作系统来展现。异常(Exception)
是一个从出错点抛出(thrown)
后能被特定类型的异常处理程序捕获(catch)
的一个对象。
它不会干扰程序的正常运行,仅当程序出错的时候才被执行。这让开发更简单:不用再反复检查错误了。
另外,异常是绝不会被忘记
或忽略的,它终究会在某一时刻被处理。而且,异常处理机制也提供了一种可靠地从错误状况中恢复的方法:只要处理好抛出的异常就能够立即恢复程序的运行,无需退出。
感谢支持
更多内容,请移步《超级个体》。