摘 要:Ja作为目前最流行的程序设计语言,其庞大的知识体系让很多初学者感到迷惑,本文从常规知识、微观知识和宏观知识三个层次对Ja内容进行介绍和分析.
关 键 词:Ja虚拟机;设计模式;内存分配
Ja作为一门面向对象的语言,在过去十年中取得了其它语言所无法比拟的成绩,Ja以其简单、面向对象、可移植性、安全性等特点,成为了现在最主流的开发语言之一.
1常规知识
Ja常规知识指的是:Ja基本语法、类和对象的概念及特征、接口、抽象类与包的运用、JaAPI等等.
(1)基本语法.包括变量定义、操作符运用、数组、控制流等,其中大部分的内容与其它语言类似,比如学习C语言时涉及到的控制流.
(2)类和对象.Ja的最核心概念,包括面向对象的三个基本特征:封装、继承、多态,以及this、super、static、final等关键字的运用.
(3)JaAPI.JaAPI是运行库的集合,它提供了一套访问主机系统资源的标准方法,运行Ja程序时,虚拟机装载程序的class文件所使用的JaAPIclass文件,所有被装载的class文件和所有已经装载的动态库共同组成了在Ja虚拟机上运行的整个程序.
2Ja微观知识
Ja微观知识指的是:Ja的工作原理、Ja虚拟机的运行方式、程序在内存中的存储等内容.
(1)Ja虚拟机.是运行所有Ja程序的抽象计算机,是Ja语言的运行环境,是Ja语言底层实现的基础,对于Ja虚拟机的了解,有助于理解Ja语言的一些性质,也有助于使用Ja语言.
Ja虚拟机的主要任务是装在class文件并且执行其中的字节码.Ja虚拟机包含一个类装载器,它可以从程序和API中装载class文件,JaAPI中只有程序执行时需要的那些类才会被装载,字节码由执行引擎来执行.不同的Ja虚拟机中,执行引擎可能实现得非常不同,在由软件实现的虚拟机中,最简单的执行引擎就是一次性解释字节码.
(2)Ja在内存分配时涉及到的区域.寄存器:寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径,可用来暂存指令、数据和位址,程序人员无法控制.
栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中.在函数中定义的一些基本类型的变量数据和对象的引用变量都在函数的栈内存中分配.栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享.但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性.
堆:存放用new关键字所产生的对象.Ja的堆是一个运行时数据区,对象被存储在堆中.这些对象通过new等指令建立,它们不需要程序代码来显式的释放.堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Ja的垃圾收集器会自动收走这些不再使用的数据.
静态域:存放在对象中用static定义的静态成员.
常量池:存放常量,指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据.除了包含代码中所定义的各种基本类型(如int、long等等)和对象型(如String)的常量值.
(3)Jaclass文件.Jaclass文件主要在平台无关性和网络移动性方面使Ja更适合网络,它在平台无关性方面的任务是:为Ja程序提供独立于底层主机平台的二进制形式的服务,这种途径途径打破了C或者C++等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然后被连接成单独的、专门支持特定硬件平台和操作系统的二进制文件.
3Ja宏观知识
Ja的宏观知识指的是:Ja的设计模式和设计原则.设计原则和设计模式就是在大量的实践中总结和理论化之后优选的代码结构、编程风格及解决问题的思考方式.模式有助于提高思考层次,改变学习思维定式,成为更加高效的程序人员.
Ja的设计模式过多,在这里只介绍一些常用模式:适配器模式、工厂模式、模式.
(1)适配器模式.适配器模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作.适配类可以根据参数返还一个合适的实例给客户端.
(2)工厂模式.客户类和工厂类分开.消费者任何时候需要某种产品,只需向工厂请求即可.消费者无须修改就可以接纳新产品.缺点是当产品修改时,工厂类也要做相应的修改.
(3)模式.模式给某一个对象提供一个对象,并由对象控制对源对象的引用.就是一个人或一个机构代表另一个人或者一个机构采取行动.某些情况下,客户不想或者不能够直接引用一个对象,对象可以在客户和目标对象直接起到的作用.客户端分辨不出主题对象与真实主题对象.模式可以并不知道真正的被对象,而仅仅持有一个被对象的接口,这时候对象不能够创建被对象,被对象必须有系统的其他角色代为创建并传入.
[参考文献]
[1]袁绍欣.面向对象程序设计[M].北京:清华大学出版社,2007.
[2]叶锋,连进.Ja程序设计教学研究[J].湖北经济学院学报(人文社会科学版),2010,7(9):207-208.
[3]刘克成.Ja程序设计简明教程[M].北京:中国电力出版社,2009.
[4]叶核亚.Ja程序设计实用教程[M].3版.北京:电子工业出版社,2010.