Java语言程序设计浅述

<h2><span style="color: #ff6600;"><strong>第一部分 java语言概述</strong></span></h2> <div> <ul> <li>java的形成和发展</li> </ul> Java语言是由美国Sun公司创造和发展的一门完全面向对象的程序语言。由于java语言的独特运行机制、对网络编程支持的便利性以及方便的平台可移植能力等优点,使得java语

第一部分 java语言概述

  • java的形成和发展
Java语言是由美国Sun公司创造和发展的一门完全面向对象的程序语言。由于java语言的独特运行机制、对网络编程支持的便利性以及方便的平台可移植能力等优点,使得java语言从诞生开始到现在的短短十几年间,的到了广大程序员的青睐,在各种商业应用中取得了很大的成绩。由统计数据显示,目前全球的java开发人员约为450万,而且未来的几年之中,这个数字还将继续增长。 Java语言的发展历史最早可以追溯到1991年,当时Sun公司启动了绿色项目(GreenProject),着手发展消费电子产品和其他应用软件开发,项目在开发的时候除了采用C和C++语言以外,小组还自行研制了Oak语言,由于商标的冲突,最后改为java语言。

第二部分 java语言的特点

学习任何一种计算机程序设计语言,我们都应该了解为什么学习,以及这个语言的特点,下面我们就来学习java语言的特点。 和C/C++语言相比,java语言给开发人员更为简单的语法。比方说,完全的面向对象使得开发人员从设计开始就必须采用面向对象的软件设计方法,独特的运行机制使得java语言有着天然的可移植性;取消指针虽然损失了一些编程的灵活性,但是带来了质量更高的代码。这些优点使得java迅速被开发人员接受,也慢慢使得java自身的到了发展。 Java语言有以下几个特点:
  • Java语言是简单的。Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载多继承、自动的强制类型转换。特别地,Java语言不使用指针,而是引用。并提供了自动的废料收集,使得程序员不必为内存管理而担忧。
  • Java语言是面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。
  • Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
  • Java语言是健壮的。Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。
  • Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。
  • Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。
  • Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。[9]
  • Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。
  • Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++
  • Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。
  • Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。

第三部分 面向对象的基本概念

面向对象是一种流行的程序设计方法,也是一种新的程序设计规范(paradigm),它的基本思想包含了使用类、对象、继承、封装等基本概念。 1.类和对象 在java语言中,最重要的数据结构就是类。利用类我们可以把对象整个种类的特性定义好,然后再定义对象,即生成类的实例。在面向对象的概念里,任何数据在外界看来都是一个个对象。 2.类的封装(encapsulation)、继承和多态(Polymorphism) 类的封装就是把类(对象)的属性和行为结合成一个独立的相同单位,并尽可能隐蔽类(对象)的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系。封装的特性使得类(对象)以外的部分不能随意存取类(对象)的内部数据(属性),保证了程序和数据不受外部干扰且不被误用。 多态性是指在继承关系中的父类中定义的属性或方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或方法在父类及其各子类类中具有不同的含义。

第四部分 java的开发工具和运行过程

Java语言不但为程序员和最终用户提供了一个免费的java软件开发工具,而且还提供了一个特征丰富的语言和运行环境。 为了使得程序员能够更好的制作并且更好的运行java程序,java语言提供了扩展类库,这些类库代表了面向对象程序设计的核心部分。Java类库是一组预先开发好的程序代码,就像C语言中的预处理头文件(stdio.h math.h),它可以与单独的程序相连接,这样大大缩短了程序开发的周期。 一、java的开发工具简介 J2SE SDK(Software Development Kit)通常简称JDK,是J2SE平台下的软件开发包,是java平台中面向一般应用程序开发的平台。 下面是一些基本的java工具:
  • Javac 编译器
  • Java 解释器
  • Jdb java 语言调试器
  • Javadoc API 文档管理器
  • Javah 头文件生成器
  • appletviewer 小应用程序浏览器
  • Javap 类文件反汇编器
这些工具都包含在/java/bin/的文件目录下,可以在任何目录中运行,前提是在设置运行程序的系统中设置了路径。 1.javac——java语言编译器 Java指令用来将java源代码编译成字节码,这是java语言最重要的JDK工具之一。 用法: Javac [ options ] sourcefiles [ @files ] 其中: options是命令行选项([]表示这个选项可以被选择) Sourcefiles:一个或者多个(用空格符分隔)要编译的源文件,例如Helloworld.java @files:一个或者多个对源文件进行列表的文件。 这几个参数可以任意序列排列。 2.java——java语言解释器 Java指令用来运行javac编译的字节码。 用法: Java [ options ] class [ arguments ] options:命令行选项 Class:要调用的类名(例如:Helloworld) arguments:传给main函数的参数 3.jdb——java语言调试器 用法: Jdb [ options ] class [ arguments ] 其中: options:命令行选项 class:要调试的类的名称 Arguments:传给main函数的参数 4.javadoc——java API 浏览器 Javadoc指令可以生成一组HTML格式的相关文件来说明编写的java程序代码。 用法: Javadoc [ options ] [ packagenames ] sourcefiles [ @files ] 其中: options:命令行选项。 packagenames:一个或者多个(用空格分隔)包的名字,不允许使用通配符,例如(*)。 sourcefiles:一个或者多个(用空格分隔)要编译的源文件。 @files:一个或者多个对源文件进行列表的文件。 5.javah——头文件生成器 Javah程序可以创建C头文件和存根文件,把本地C成员函数包入java类时,这些文件需要被用到。其中,被创建的头文件给出了有关java类的信息,这些信息是C成员函数与java类交换数据所必须的,存根文件将用来创建定义java对象的结构与java对象本身数据联系的C文件。 用法: Javah [ options ] classes 其中: options:命令行选项 classes:要调用的类名 6.appletviewer——javaApplet浏览器 appletviewer提供了一个可以测试小应用程序的Applet的java运行环境,appletviewer读取包含小应用程序的HTML文件,并在一个窗口运行他们。 如果在javac编译java程序代码成为字节码后,再建立一个HTML文件,使用appletviewer执行这个HTML文件,这种程序叫做JavaApplet,前面讲过,javac编译java程序代码成为字节码,然后用java执行字节码类,这种程序成为Java Application。 7.javap——java语言反编译器 Javap命令可以反汇编一个java字节码代码文件,返回有关可变部分和成员函数信息。 用法: Javap [ options ] classes 其中: options:命令行选项 class:要调用的类名 在不同的操作系统下,安装的JDK内容都会略有不同,为了避免混淆,本文所写内容都以在windows平台下的JDK为例进行说明。 二、java运行环境的安装和配置 要进行java的程序设计,那么我们就需要进行java环境的安装和配置。 各位读者可以在http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 网站上下载JDK,在下载的时候一定先要选择accept接受,如图所示。(特别提示,图片截图较早,现在java的版本已经不再是7u25了,请大家注意) psb 选择accept接受后,在下面找到下载,选择合适的版本进行下载,如果电脑是64位操作系统,那么选择X64下载,如果是32位的操作系统,选择X86版本进行下载,如图所示: psb1131 下载完成后进行安装,大家可以跟着安装向导进行安装,安装完后一定要记住自己安装的路径,为下一步配置java环境做准备。 右击【我的电脑】---【属性】-----【高级】---【环境变量】,选择【新建系统变量】--弹出“新建系统变量”对话框,在“变量名”文本框输入“JAVA_HOME”,在“变量值”文本框输入JDK的安装路径(也就是要求大家记住的文件夹路径),单击“确定”按钮,在“系统变量”选项区域中查看PATH变量,如果不存在,则新建变量 PATH,否则选中该变量,单击“编辑”按钮,在“变量值”文本框的起始位置添加“%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;”或者是直接“%JAVA_HOME%\bin;”,单击确定按钮;在“系统变量”选项区域中查看CLASSPATH 变量,如果不存在,则新建变量CLASSPATH,否则选中该变量,单击“编辑”按钮,在“变量值”文本框的起始位置添加“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”。以上所有操作完成后,单机开始,运行,输入cmd进入命令符提示窗口,在DOS命令行窗口输入“JAVAC”,输出帮助信息即为配置正确。如图: psb1132 至此,我们的java环境的搭建已经完成,下面我们就可以开始java的编辑,编译和运行工作了。 三、java的编辑、编译和运行 经过上面我们的设置结束以后,我们就可以直接使用%JAVA_HOME/bin目录下面的JDK相关命令,也就是我们上面所说的那常见的7个命令。 Javac命令,用来编译java程序,其使用格式为: Javac <选项><类><参数> 编译少量程序文件的时候,我们可以直接在命令行中输入相对应的命令就可以了,如果要编译的文件很多,那么我们就需要将需要被编译的文件名写在一个文件中,假设为“exmple.lst”就可以使用“javac@exmple.lst”进行编译了。 此外,javac还可以使用以下几个参数: -classpath    为所需要编译的程序指定额外的类库 -d                指定编译后的文件输出路径 -g                在目标代码中生成所有调试信息 -g:none       不生成任何调试信息 -nowarn      不输出与警告有关的信息 现在我们来尝试动手编译一下java文件。如果在d:/kat目录下有一批需要被编译的程序,分别是“Test1.java”“Test2.java”“Test3.java”,并且我们希望将编译后的结果储存在d:/abc目录下,可以使用如下命令: Javac -d d:/abc d:/kat/Test1.java d:/kat/Test2.java d:/kat/Test3.java 或者是我们创立一个文件“ex.lst”,写入以下内容: d:/kat/Test1.java d:/kat/Test2.java d:/kat/Test3.java 然后我们再使用命令: Javac -d d:/kat @ ex.lst  运行java程序时,需要使用java命令,使用格式为:      Java <选项> <类> <参数> 支持的参数如下: -help                         显示帮助信息 -version                     显示JDK版本信息并退出 -cp 与 -classp             指定运行程序时所需要的类库 -Dproperty=value      为运行的程序指定额外的属性设置 -verbose:class            输出运行程序加载类名 -verbose:gc               输出垃圾回收器的运行信息 -showversion             显示JDK 的版本信息并继续运行程序 例如,我们要运行的程序时d:/kat/cap.class,需要的类在d:/acp目录下,那么在d:/kat目录下我们可以运行: Java -cp d:/acp d:/kat/cap.java 下面我们看一个简单的例子来了解java程序的执行过程。 [例1-1]一个简单的程序 calss HelloWorld {     Public static void main(String args[ ])     {        System.out.println(“Hello World!”);  //打印“HelloWorld!“     } } 程序的运行结果是: 你在命令行提示中输入c:\java\bin>javac HelloWorld.java 按下回车后,继续输入c:\java\bin>java HelloWorld 然后按下回车 屏幕中会出现: Hello World! 由此我们可以看出,由javac命令编译后,java命令运行后,就可以得到我们想要的结果Hello World!
LICENSED UNDER CC BY-NC-SA 4.0
Comment