第一章Java语言概述•Java基础知识培训主要内容提要JJava程序的开发环境Java程序相关问题Java语言的主要特性Java语言的发展历史Java程序的开发过程2Java语言的发展历史JInternet迅猛发展Java语言正式问世被美国著名杂志PCMagazine评为1995年十大优秀科技产品之一JamesGosling领导的Green小组开发了面向数字家电的Oak语言推出了Java2平台。性能上有所提高,而且对Java的基本模式进行了完善,并提供了更为丰富的API1991199519983Java2的版本划分JJava2J2MEJ2SEJ2EE4Java语言的主要特性J平台无关性简单性面向对象分布式、动态性、可靠性、安全性……多线程5Java程序相关问题——Java虚拟机Java虚拟机——在真实机器中用软件模拟实现的一种抽象的机器。(Java虚拟机规范)Java虚拟机主要由五个部分组成:指令系统、寄存器、栈、存储区、碎片回收区解释和执行Java程序编译后产生的字节码J硬件平台操作系统Java程序Java虚拟机JavaAPI6Java程序相关问题——JavaAPIJavaAPI是Java系统提供的预先定义好的软件组件的集合,它们提供了许多可供程序员调用的常用功能丰富的API为程序员提供了极大的方便,但也是学习的难点要学会使用JavaAPI手册(TheJava2PlatformAPISpecification)•硬件平台操作系统Java程序Java虚拟机JavaAPI7Java程序相关问题——Java程序的运行机制J操作系统源代码可执行代码目标码编译连接运行源代码字节码编译解释执行Java解释器传统语言的运行机制Java语言的运行机制8Java程序相关问题——Java程序类型Java应用程序(JavaApplication)是独立完整的程序在命令行调用独立的解释器软件即可运行主类必须有main方法,这也是程序的入口Java小程序JavaApplet——是指在客户端运行的Java小程序,一般来说客户端是指用户所使用的浏览器JavaServlet——是在服务器端执行的Java小程序,为了能够支持Servlet的运行,服务器端必须安装包含Java虚拟机的服务器软件,这种能够支持服务端小程序的服务器一般被称为应用服务器J9Java开发环境JDK/J2SDK(JavaDeveloperKit)JDK1.02JDK1.1.xJDK1.2/J2SDK1.3/J2SDK1.4/JDK5.0(J2SDK1.5)Java集成开发环境(IDE)NetBeansJBuilderEclipseJCreatorForteforJavaVisualJ++WSAD……J10JDK的安装与设置从可以下载相关版本的JDK(本课程采用J2SDK1.3以上版本)在Windows平台上运行安装程序,以安装JDK设置PATH(文件路径)参数。由于JDK提供的实用程序都在安装目录下的子目录bin下,为了能在任何目录下直接使用文件名调用这些程序,必须设置操作系统的文件路径参数J11环境设置在Windows环境下,为了快速进入指定目录的命令行窗口,可在注册表中增加项目:•[HKEY_CLASSES_ROOT\Directory\shell\进入命令行\command]•默认值设为:•cmd/kcd%1J12JDK的目录结构Jbin目录中包含了所有JDK5.0提供的实用程序demo目录中包含了JDK5.0自带的实例程序inculde目录中包含了一些支持Javanative方法的C\C++头文件jre目录中包含了Java运行环境所需的所有文件,这个目录中所包含的java运行环境是JDK私有的,它只为JDK的实用程序提供支持lib目录中包含了Java开发环境所需的库文件,它们以jar文件的形式保存sample目录中包含的是体现JDK5.0新特性的一些例程13JDK实用程序简介javac:Java编译器,将Java源代码编译为字节码;java:Java解释器,用来解释执行Java程序的字节码文件;appletviewer(小程序浏览器):一种执行HTML文件上的Java小程序类的Java浏览器;javadoc:根据Java源代码及其说明语句生成的HTML文档;jdb:Java调试器,可以逐行地执行程序、设置断点和检查变量;javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件;javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。J14Java程序的开发过程•编辑源代码编译源代码文件运行程序J15Java程序的开发过程——编辑源代码一般情况下,我们可以使用系统平台下的任何文本编辑器进行源代码的编辑,在Windows平台下常用的是Window系统自带的“记事本”程序或“写字板”程序Java源码大小写敏感Java源码文件的扩展名:.javaJava源程序文件也不能随意命名,其文件名必须与程序中主类的类名完全相同,包括大小写在内JpublicclassMyFirstJavaApp{publicstaticvoidmain(String[]args){System.out.println(“ThisisMyFirstJavaApplication!”);}}16Java程序的开发过程——编译源代码使用JDK实用程序javac对源代码文件进行编译C:\MyJavajavacMyFirstJavaApp.java如果系统提示符再次出现并且没有任何消息产生,那么编译便成功了如果有系统报错消息产生,则表示程序编译出错,程序员必须阅读报错信息,并根据这些信息对程序进行修改程序成功编译后,在与源代码文件同一目录下会生成一个新的文件,其文件名与源代码文件名相同,扩展名为“.class”。这个文件就是源代码文件编译产生的程序字节码文件MyFirstJava.classJ17Java程序的开发过程——运行程序要执行一个Java程序非常简单,只需在字节码文件所在目录下输入下列命令就可以了:java字节码文件名J18第2章面向对象的编程概念主要内容提要J什么是接口什么是继承什么是类什么是消息什么是对象21面向对象vs.面向过程面向对象(OOP)——Object-OrientedProgramming用类class封装数据以及与数据相关的操作用类的继承性来实现类的重用性多态性面向“对象”,由对象提供服务面向过程(POP)——Procedure-OrientedProgramming以功能为组织单元通过数据结构来描述具体的问题数据在功能(函数)之间以参数的形式被传送J22现实世界中的对象现实世界是由对象构成的现实世界中任何实体都可以看作是对象现实世界中的对象有两个共同特征:状态行为J23软件对象(Object)软件对象是现实世界对象的抽象软件对象同样具有状态和行为定义:对象是变量和相关方法的软件组合J变量方法24现实对象→软件对象J方法叫咬吃是否饿了:否名字:小Q颜色:黑25封装(Encapsulation)封装性体现了面向对象程序设计的一个特性,将方法和数据组织在一起,隐藏其具体实现而对外体现出公共的接口模块化隐藏信息J变量方法26消息(Message)复杂的行为必须通过对象之间的交互来实现软件对象与其它对象进行交互与通讯是通过互发消息来实现的J对象B对象A消息27消息的组成消息的目的对象要执行的方法的名称方法所需参数J你的车你换档(低档)28消息的性质同一对象可接收不同形式的多个消息,产生不同的响应同一个消息可以发给不同的对象,所做出的响应可以截然不同发送方不需要知道接受方如何对请求予以响应的J29类(Class)定义:类是蓝图或原型,它定义了所有某种类的对象的共有的变量和方法类是具有共同属性和行为的对象的抽象与集合J私有的实现细节公共API30实例(Instance)定义:特定类所描述的一个具体对象J31对象、类与实体的关系J对象类计算机逻辑的实现映射计算机世界实例化抽象实体抽象数据类现实世界概念世界抽象32继承(Inheritance)广义地说,继承是指能够直接获得已有的性质和特性,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动地共享父类中定义的数据和方法的机制。J共性部分继承部分个性部分父类子类33单重继承与多重继承单重继承:一个子类只有一个唯一确定的父类单重继承所构成的类的关系结构是一棵树多重继承:一个子类可以有多个不同的父类多重继承所构成的类的关系结构是一个格Java语言仅支持单重继承J34继承的作用使软件系统具有开放性更好地进行抽象与分类实现代码的复用提高可维护性J35类型(Type)在面向数值的编程中,类型通常用作数据的表示。在Java这样的强类型语言中,在编译期,每一个变量和表达式都有一个类型与之相对应Java中的类型:基本类型、类、接口J36接口(Interface)接口和类一样也是一种类型,也同样包含一些方法的定义。但与类不同的是:接口中所定义的所有方法都是抽象方法(即没有实现的方法)。接口中所定义的方法由实现(implement)该接口的类来实现,一个类可以同时实现多个接口接口机制使Java的面向对象编程变得更加灵活。解决了单重继承带来的问题接口定义了对象的行为模型,相当于一个协议。实现接口的各个类负责实现接口所定义的行为。虽然实现细节各不相同,但对用户来说是一样的行为。J37面向对象的示例本例中包含很多对象:点、窗口、颜色、点击事件……代码:ClickMeApp.java,ClickMe.java,Spot.javaJ38Spot类JpublicclassSpot{//instancevariablesprivateintsize;publicintx,y;//constructorpublicSpot(){x=-1;y=-1;size=1;}//methodsforaccesstothesizeinstancevariablepublicvoidsetSize(intnewSize){if(newSize=0){size=newSize;}}publicintgetSize(){returnsize;}}39Spot对象JprivateSpotspot=null;...spot=newSpot();40示例中的消息Jg2d.setColor(Color.WHITE);g2d.fillRect(0,0,getWidth()-1,getHeight()-1);41示例中的继承和接口JpublicclassClickMeextendsJComponentimplementsMouseListener{...}publicclassClickMeextendsJComponentimplementsMouseListener{...//MethodsrequiredbytheMouseListenerinterface.publicvoidmousePressed(MouseEventevent){if(spot==null){spot=newSpot();spot.setSize(RADIUS);}spot.x=event.getX();spot.y=event.getY();repaint();}publicvoidmouseClicked(MouseEventevent){}publicvoidmouseReleased(MouseEventevent){}publicvoidmouseEntered(MouseEventevent){}pu