1.Java的二进制代码是解释型    
Java解决上述两个问题——安全性和可移植性的关键在于Java编译器的输出并不
是可 
执行的代码,而是字节码(bytecode )。字节码是一套设计用来在Java运行时系
统下执行的 
高度优化的指令集,该Java运行时系统称为Java虚拟机(JavaVirtual Machine,
JVM)。在其标 
准形式下,JVM       就是一个字节码解释器。这可能有点让人吃惊,因为像C++
之类语言的编 
译结果是可执行的代码。事实上,出于对性能的考虑,许多现代语言都被设计为
编译型, 
而不是解释型。然而,正是通过JVM运行Java程序才有助于解决在Internet上下载
程序的主 
要问题。这就是Java输出字节码的原因。

 尽管Java被设计为解释执行的程序,但是在技术上Java并不妨碍动态将字节码编
译为本 
机代码。SUN公司在Java 2发行版中提供了一个字节码编译器——JIT (Just In
Time,即时)。 
JIT是Java虚拟机的一部分,它根据需要、一部分一部分地将字节码实时编译为可
执行代码。 
它不能将整个Java程序一次性全部编译为可执行的代码,因为Java要执行各种检
查,而这些 
检查只有在运行时才执行。记住这一点是很重要的,因为JIT只编译它运行时需要
的代码。 
尽管如此,这种即时编译执行的方法仍然使性能得到较大提高。即使对字节码进
行动态编 
译后,Java程序的可移植性和安全性仍能得到保证,因为运行时系统(该系统执
行编译) 
仍然能够控制Java程序的运行环境。不管Java程序被按照传统方式解释为字节码
,还是被动 
态编译为可执行代码,其功能是相同的。
 
2.面向对象 
    尽管受到其前辈的影响,但Java没被设计成兼容其他语言源代码的程序。这
允许Java 
开发组自由地从零开始。这样做的一个结果是,Java语言可以更直接、更易用、
更实际的 
接近对象。通过对近几十年面向对象软件优点的借鉴,Java设法在纯进化论者的
“任何事 
物都是一个对象”和实用主义者的“不讨论对象不对象”的论点之间找到了平衡
。Java的 
对象模型既简单又容易扩展,对于简单数据类型,例如整数,它保持了高性能,
但不是对 
象。
 
3.面向对象和面向过程的有趣阐述
 两种范型
    我们知道,所有的计算机程序都由两类元素组成:代码和数据。此外,从概
念上讲, 
程序还可以以它的代码或是数据为核心进行组织编写。也就是说,一些程序围绕
“正在发 
生什么”编写,而另一些程序则围绕“谁将被影响”编写。这两种范型决定程序
的构建方 
法。第一种方法被称为面向过程的模型(process-oriented model ),用它编写
的程序都具有 
线性执行的特点。面向过程的模型可认为是代码作用于数据,像C这样的过程式语
言采用 
这个模型是相当成功的。然而,正如在第1章提到的,当程序变得更大并且更复杂
时,就会 
出现问题。
    为了管理不断增加的复杂性,第二种方式,也就是面向对象的编程(object
-oriented 
programming )被构思出来了。面向对象的编程围绕它的数据(即对象)和为这
个数据严格 
定义的接口来组织程序。面向对象的程序实际上是用数据控制对代码的访问。下
面你将看 
到,将控制的实体变换为数据,可使程序在组织结构上从若干方面受益。
 
4.什么样的垃圾被回收
    由于使用new运算符来为对象动态地分配内存,你可能想知道这些对象是如何
撤消的 
以及他们的内存在以后的重新分配时是如何被释放的。在一些语言,例如C++中,
用delete 
运算符来手工地释放动态分配的对象的内存。Java使用一种不同的、自动地处理
重新分配 
内存的办法:垃圾回收( garbage collection)技术,它是这样工作的:当一个对
象的引用不存 
在时,则该对象被认为是不再需要的,它所占用的内存就被释放掉。它不像C++那
样需要 
显式撤消对象。垃圾回收只在你的程序执行过程中偶尔发生。它不会因为一个或
几个存在 
的对象不再被使用而发生。况且,Java不同的运行时刻会产生各种不同的垃圾回
收办法, 
但是对你编写的大多数程序,你不必须考虑垃圾回收问题。
 
5.使用final防止重载    
有时你希望防止一个类被继承。做到这点只需在类声明前加final。声明一个
final类含 
蓄的宣告了它的所有方法也都是final。你可能会想到,声明一个既是abstract的
又是final的 
类是不合法的,因为抽象类本身是不完整的,它依靠它的子类提供完整的实现。
 
6.对错误处理的说法
 为防止和处理一个运行时错误,只需要把你所要监控的代码放进一个try块就可
以了。 
紧跟着try块的,包括一个说明你希望捕获的错误类型的catch子句。
 

7.引发
  10.7  引发(throw )
    到目前为止,你只是获取了被Java运行时系统引发的异常。然而,程序可以
用throw语 
句引发明确的异常。Throw语句的通常形式如下:
    throw ThrowableInstance; 
    这里,ThrowableInstance一定是Throwable类类型或Throwable子类类型的一
个对象。简 
单类型,例如int或char,以及非Throwable类,例如String或Object,不能用作
异常。有两种 
可以获得Throwable对象的方法:在catch子句中使用参数或者用new操作符创建。

    程序执行在throw语句之后立即停止;后面的任何语句不被执行。最紧紧包围
的try块用 
来检查它是否含有一个与异常类型匹配的catch语句。如果发现了匹配的块,控制
转向该语 
句;如果没有发现,次包围的try块来检查,以此类推。如果没有发现匹配的
catch块,默认 
异常处理程序中断程序的执行并且打印堆栈轨迹。   
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐