Java语言程序设计基础教程课件(第1章)_第1页
Java语言程序设计基础教程课件(第1章)_第2页
Java语言程序设计基础教程课件(第1章)_第3页
Java语言程序设计基础教程课件(第1章)_第4页
Java语言程序设计基础教程课件(第1章)_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java的优越性(与c+比较)好学(相对)目前市场需求量大可移植性好安全性高多线程纯的面向对象语言Java与.net相比开源社区开发工具免费(Eclipse)信息与计算科学专业的学生掌握一门“语言”很重要!推荐书籍:Java2核心技术(第七版)Thinking in Java第一章Java 程序设计概述1.1 机器语言、汇编语言和高级语言1.2 Java 语言概述1.3 Java平台和主要应用方向1.4 Java的垃圾回收与代码安全检查机制1.5 典型的Java开发环境1.6 Java编程示例1.7 反编译工具的介绍1.8 Java JDK 6 新功能介绍1.1机器语言、汇编语言和高级语言计算

2、机程序设计语言的种类非常多, 总的可以分成机器语言,汇编语言,高级语言三大类。机器语言是计算机唯一能接受和执行的语言,与硬件紧密相连。机器语言由二进制码组成,每个二进制码是一条指令。一条指令通常由两个部分组成:操作码 + 操作数。操作码规定了计算机要执行的基本操作;操作数规定了操作对象或操作对象的地址。汇编语言(Assembly Language)是面向机器的程序设计语言。用汇编语言编写的程序叫汇编语言源程序,计算机无法执行。必须用汇编程序把它翻译成机器语言目标程序,计算机才能执行。这个翻译过程称为汇编过程。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。汇编语言中,用助记符代替操作

3、码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。因此汇编语言亦称为符号语言。机器语言和汇编语言都是面向机器的,高级语言是面向用户的。由于汇编语言依赖于硬件体系,且助记符量大难记,于是人们又发明了更加易用的所谓高级语言。高级语言中的语法和结构更类似普通英文,且由于远离对硬件的直接操作,使得一般人经过学习之后都可以编程。用高级语言编写的程序叫做高级语言源程序,必须翻译成机器语言目标程序才能被计算机执行。高级语言的翻译有两种方式:编译方式和解释方式。编译方式:先由编译程序把高级语言源程序翻译成目标程序,执行时运行目标程序。现

4、在大多数的编程语言都是编译型的,例如Visual C+、Visual Foxpro、Delphi等。解释方式:在运行高级语言源程序时,由解释程序对源程序边翻译边执行。经典的Basic语言就是以解释方式运行的。1.2 Java 概述Java语言的产生Java语言的发展Java虚拟机及Java的跨平台原理Java语言的关键特点Java 语言的产生Java是1995年6月由Sun公司引进到我们这个世界的革命性的编程语言.1990年Sun公司成立了由James Gosling领导的开发小组,开始致力于开发一种可移植的、跨平台的语言,该语言能生成正确运行于各种操作系统、各种CPU芯片上的代码。他们的精心

5、专研和努力促成了Java语言的诞生。 Java语言是一门很优秀的语言,具有面向对象、与平台无关、安全、稳定和多线程等优良特性,是目前软件设计中极为健壮的编程语言.Java语言的出现是源于对独立于平台语言的需要,即这种语言编写的程序不会因为芯片的变化而发生无法运行或出现运行错误。目前,随着网络的迅速发展,Java语言的优势越显明显,Java已经成为网络时代一门非常重要的语言。Java 语言的发展微软公司总裁比尔.盖茨先生认为,“Java语言是长时间以来最卓越的程序设计语言”。Java语言已经成为目前最流行的网络编程语言到2005年,我国对Java技术人员的需求量将高达20万余人,许多大学纷纷开设

6、Java课程,Java正逐步成为世界上程序员最多的编程语言。Java虚拟机及Java的跨平台原理Java虚拟机(Java Virtual Machine) 简称JVM,Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。Java语言的关键特点简单性平台无关性面向对象性安全性分布式多线程动态性1.3 Java平台和主要应用方向某种意义上来说,Java不仅是编程语言,还是一个开发平台。Java技术给程序员提

7、供了许多工具编译器、解释器、文档生成器和文件打包工具等同时Java还是一个程序发布平台。两种主要的“发布环境”首先是Java运行时环境(java runtime environment,简称JRE)包含了完整的类文件包;其次,许多主要的浏览器都提供了Java解释器和运行时环境。Java技术的平台架构包括以下三个方面J2SE(Java 2 Standard Edition):标准版主要目的是为台式机和工作站提供一个开发和运行的平台。包括标准的Java 2 SDK、工具、运行时环境和API,用Java程序设计语言编写、部署和运行Applet和应用程序的开发人员,是桌面开发和低端商务应用的解决方案。

8、J2EE(Java 2 Enterprise Edition):企业版主要目的是为企业计算提供一个应用服务器的运行和开发平台。J2EE本身是一个开放的标准,任何软件厂商都可以推出自己的符合J2EE标准的产品,通过基于标准化模块组件和一整套的相关服务能够自动处理应用程序行为的许多细节,从而大大简化了多层企业应用程序的构造和部署。IBM、Oracle、BEA、HP等29家已经推出了自己的产品,其中尤以BEA公司的WebLogic产品和IBM公司的WebSphare最为著名。J2ME(Java 2 Micro Edition):小型版主要是面向消费电子产品,为消费电子产品提供一个Java的运行平台,

9、使得Java程序能够在手机、机顶盒、PDA等产品上运行包含高度优化的Java运行时环境,致力于电子消费产品和嵌入式设备的解决方案。1.4 Java的垃圾回收与代码安全检查机制在Java程序的执行过程中,部分内存在使用过后就处于废弃状态,如果不及时进行无用内存的回收,内存会越占越多,导致内存泄漏,进而导致系统崩溃。在C语言中是由程序员人为进行内存回收的,程序员需要在编写程序的时候把不再使用的对象内存释放掉;但是这种人为的管理内存释放的方法却往往由于程序员的疏忽而致使内存无法回收,同时也增加了程序员的工作量。在Java运行环境中,始终存在着一个系统级的线程,专门跟踪内存的使用情况,定期检测出不再使

10、用的内存,并进行自动回收,避免了内存的泄露,也减轻了程序员的工作量。字节码的执行需要经过三个步骤1)首先由类装载器(class loader)负责把类文件(.class文件)加载到Java虚拟机中,在此过程需要检验该类文件是否符合类文件规范;2)其次字节码校验器(byte code verifier)检查该类文件的代码中是否存在着某些非法操作,例如Applet程序中写本机文件系统的操作;3)如果字节码校验器检验通过,由Java解释器负责把该类文件解释成为机器码进行执行。Java虚拟机采用的是“沙箱”运行模式,即把Java程序的代码和数据都限制在一定内存空间里执行,不允许程序访问该内存空间外的内

11、存,如果是Applet程序,还不允许访问客户端机器的文件系统。Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自已操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这些功能特征大大提高了开发Java应用程序的周期。Java提供: Null指针检测、 数组边界检测、 异常出口、 Byte code校验。1.5典型的Java开发环境Sun公司为全世界使用Java进行开发的人员提供了一套免费的开发工具集,取名为JDK(Java Developers Kits),它不仅是Java的开发平台,也是Java的运行平台。学习Java必

12、须从J2SE开始目前Sun公司已发布了SDK的1.5测试版本(beta版),可以登录到Sun公司的网站:http:/,免费下载SDK1.5(例如:jdk-1_5_0-beta2-windows-i586.exe) 下载、安装和了解JDK1)下载安装JDK的第一步是下载安装文件,这里要下载的是Sun公司的J2SE 5.0 Development Kits,下载的网址是:/j2se/1.5.0/download.jsp 2)安装JDK下载后的JDK安装文件名称是jdk-1_5_0_06- windows-i586-p.exe,双击这个文件可以开始程序的安装。开始的第一步是同意使用条款,接着则开始安

13、装JDK。 (3)了解JDK默认情况下, JDK与公用JRE各安装至C:Program FilesJavajdk1.5.0_06及C:Program FilesJavajre1.5.0_06。公用JRE主要是为开发好的Java程序提供执行的平台。其实JDK本身也有自己的JRE,这个JRE位于JDK安装目录的jre目录下。以上面的安装为例,就是在C:Program FilesJavajdk1.5.0_06jre中,JDK本身所附的JRE主要是开发Java程序时做测试之用。与公用JRE的主要差别在于JDK本身所附的JRE比公用JRE多了个server的VM(Virtual Machine)执行选项

14、。JDK的安装目录下有如下内容: bin目录:提供的是JDK的工具程序,包括javac、java、javadoc、appletviewer等程序。demo目录:一些使用Java编写好的范例程序。jre目录:JDK自己附带的JRE。lib目录:工具程序实际上会使用的Java工具类(例如,javac工具程序实际上会去使用tools.jar中的com/sun/tools/javac/Main类)。src.zip:Java提供的API类的源代码压缩文件。如果需要查看API的某些功能是如何实现的,可以查看这个文件中的源代码内容。JDK安装目录下的bin目录非常重要。因为编写完Java程序之后,无论是编译

15、或执行程序,都会使用到bin目录下所提供的工具程序。 系统环境ClassPath 值的设置 SDK的安装目录的jre文件夹中包含着Java应用程序运行时所需要的Java类库,这些类库被包含在jrelib目录下的压缩文件rt.jar中 系统环境变量Path 值的设置 SDK平台提供的Java编译器(javac.exe)和Java解释器(java.exe)位于Java安装目录的bin文件夹中,为了能在任何目录中使用编译器和解释器,应在系统特性中设置Path。对于Windows2000、Windows2003、Windows XP,用鼠标右键点击“我的电脑”,弹出菜单,然后选择属性,弹出“系统特性”

16、对话框,再单击该对话框中的高级选项,然后点击按钮“环境变量”,添加如下的系统环境变量测试环境变量写一个简单的Java程序,测试一下环境设置是否正确【例1-1】一个简单的Java程序。public class HelloWorld public static void main(String argv )System.out.println(你好!我的第一个Java程序!); 注意:1Java的源文件必须以扩展名.java结束;2Java主文件名与类名称必须一致,区分大小写;3 Java程序的类名称是指class关键词后的名称。就这个例子而言,也就是HelloWorld,该名称必须与HelloW

17、orld.java的主文件名(HelloWorld)一致。4注意每个字母的大小写,Java程序中会区分字母的大小写,System与system对Java程序来说是不一样的名称。C:cd java_work1接着使用javac工具程序来编译.java文件,命令如下:C:java_work1javac HelloWorld.java如果编译顺利成功,则在HelloWorld.java所在的目录,会出现一个HelloWorld.class文件,这是已经编译完成的Java字节码文件。使用java工具程序来执行它,执行方式如下:C:java_work1java HelloWorldJava工具程序会根据

18、指定的类名称,实际加载.class的文件,以上例来说,就是载入HelloWorld.class并执行。Eclipse和MyEclipse 1Eclipse 是什么? Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Tools,JDT)。虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse还包括插件开发环境(Plug-in Develo

19、pment Environment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。 2MyEclipse 是什么?简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。最新版本是7.0,主要增加Matisse4 MyEclipse Gui Biulder的整合,Ajax/Web 2.0 开发工具。 1.

20、6 Java编程示例Java程序分为Java Application(Java 应用程序)和Java Applet(Java小应用程序)两种类型。1.6.1 第一个Java Application【例1-2】第一个Java Application程序MyApplication.java。import java.util.*;/* * 下面我们用到了Date和Properties这两个类,是属于Java.util这个包的。 * 而System和Runtime这两个类,是属于Java.lang这个包的。 */public class MyApplication public static void

21、 main(String args) System.out.println(new Date();/ 在命令行下面打印出日期Properties p = System.getProperties();/ 获得系统的Properties对象pp.list(System.out);/ 在命令行下打印出p中的各个系统变量的值System.out.println(- Memory Usage:);/ 打印一行字符串-Memory UsageRuntime rt = Runtime.getRuntime();/ 获得系统的Runtime对象rtSystem.out.println(Total Memor

22、y= + rt.totalMemory()+ Free Memory = + rt.freeMemory();/ 打印总内存大小、打印空闲内存大小System.out.println(new Date(); 打印语句的参数是一个日期对象Date,而创建Date对象的目的就是把它的值发给println()语句。一旦这个语句执行完毕,Date对象就没用了,而后Java的垃圾回收机制会将其收回。 第二行中调用了System.getProperties()方法。getProperties()是System类的一个静态方法(static方法,关于类的静态方法含义,我们会在第三章中介绍),由于它是“静态”

23、的,所以不必创建任何对象就可以通过类名直接调用该方法。在第三行中,Properties对象有一个名为list()的方法,它将自己的全部内容都发给一个PrintStream对象,该对象作为list()方法的参数。 第四行和第六行是典型的打印语句,其中第六行通过运算符“”的重载来连接多个字符串对象,在Java中只有当“”运算符作用于字符串时才能够进行重载。仔细观察下述语句: System.out.println(Total Memory= + rt.totalMemory()+ Free Memory = + rt.freeMemory();其中,totalMemory()和freeMemory(

24、)返回的是数值,并非String对象。第五行通过调用Runtime的getRuntime()方法创建了一个Runtime对象,该对象中包含了内存等信息。 1.6.2 Java程序的编辑 Java程序的编辑可以使用任何一种文本编辑器,例如UltraEdit、Notepad、Wordpad甚至word,然后只要把编辑好的文件存成后缀为.java的文件。当然也可以用一些集成开发环境,例如Borland公司的JBuilder,IBM公司的Visualage for Java,Sun公司的NetBean,此外还有cafe、kawa等其它集成开发环境。 1.6.3运行Java Application应用程

25、序 要编译上述Java文件MyApplication.java,可以在“命令提示符”下进行编译,在命令行中敲入“javac MyApplication.java”。 当编译结束后,Java源文件中的每一个类都会生成相应的.class 文件,例如上例就会生成一个MyApplication.class文件,而Java程序在执行时调用的是.class 文件。在“命令提示符”下敲入“java MyApplication”进行执行。1.6.4第一个Java Applet 【例1-3】一个Java Applet程序,该程序保存在文件HelloApplet.java中。import java.awt.Gra

26、phics; /进行显示输出时,需要用到类Graphics的对象;import java.applet.Applet; /Applet类是所有的Java Applet的父类;/* * 给这个类取名为HelloApplet, * 因为所有的applet程序都是Applet类的子类。 */public class HelloApplet extends Applet public String s;public void init() s = new String(欢迎学习Java Applet!); / 生成一个字符串对象public void paint(Graphics g) g.drawS

27、tring(s, 25, 25); / 在浏览器中坐标为(25,25)的位置显示字符串sApplet小应用程序是从方法init()开始执行的,在该方法中完成了对字符串s的初始化工作,而显示功能是在方法paint()中执行的。paint()方法是类Applet的一个成员方法,其参数是图形对象Graphics g,通过调用对象g的drawString()方法就可以显示输出。 1.6.5运行applet Applet程序也是一个类,其编译方式与Java Application完全一样。Applet的执行方式与Application完全不同,Applet程序必须嵌入到html文件中才能够执行,因此必须

28、编写一个相应的html文件。此处为HelloApplet.html,代码中包含有applet标记如下:然后可以通过JDK所提供的命令“appletviewer”,在“命令提示符”下敲入appletviewer HelloApplet.html此时系统会弹出另外一个窗口运行该applet程序,运行结果如图1-9所示。 图1-9 Applet例子运行结果1.7反编译工具的介绍 使用SDK提供的反编译器javap.exe可以将字节码反编译为源码,查看源码类中的public方法名字和public成员变量的名字,例如:javap java.awt.Button将列出Button中的public方法和public成员变量。下列命令javap private java.awt.Button将列出Button中的全部方法和成员变量。查看更多的参数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论