《《Java基础知识》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《Java基础知识》PPT课件.ppt(47页珍藏版)》请在金锄头文库上搜索。
1、第一章第一章 Java基础知识 书名书名: Java 程序设计程序设计实用教程实用教程出版社出版社: 清华大学出版社清华大学出版社 作者作者:张大治编著张大治编著Deitel & Deitel Java how to programoDeitel & Deitel , 2002, Java 程序设计教程程序设计教程, , 上上册册: :基础篇基础篇(4th Edition) 图书馆书号图书馆书号:TP312 JA D135oDeitel & Deitel , 2003, Java 程序设计教程程序设计教程(5th Edition), (清华大学出版社清华大学出版社)图书馆书号图书馆书号:TP3
2、12 JA D373最新版最新版: : 6th Edition in English参考课本参考课本: :本课程教学实践的特点本课程教学实践的特点 Features in Teaching Practiceo面向语言面向语言, , 面向操作的双边教授法面向操作的双边教授法 Both Both Language-oriented, Operation-oriented methodology in teaching methodology in teachingo活动代码活动代码(Live-Code)(Live-Code)教学法教学法o用实例说明问题用实例说明问题: :n概念概念, , 用途用途
3、, , n编程错误编程错误, , 编程技巧编程技巧, , n如何测试如何测试, , 和和n软件工程视点软件工程视点要动手要动手!教学目标 Java是基于C和C+语法的纯面向对象的编程语言。本章首先向读者介绍了Java语言的发展史、Java语言的特点、Java的基本元素以及什么是面向对象编程,使读者对Java语言有个基本认识,然后介绍了如何建立Java开发环境并对JDK开发环境中的常用工具做了简要说明,最后,通过经典的HelloWorld程序讲述开发Java应用程序的基本流程。通过本章的学习,读者将对Java语言有一个概括性的认识,理解什么是面向对象编程,并能在自己的机器上建立Java开发环境,
4、编写简单的HelloWorld程序教学重点Java语言的特点 Java语言的基本元素面向对象编程建立Java开发环境JDK常用工具编译并执行HelloWorld程序Java发展史 Java来自于Sun公司的一个叫Green的项目,其原先的目的是为家用消费电子产品开发一个分布式代码系统1991年,Sun公司的Jame Gosling、Bill Joe等人开发了一种新的语言Oak(Java的前身),Oak是一种用于网络的精巧而安全的语言,Sun公司曾依此投标一个交互式电视项目,但结果被SGI打败了。恰巧这时Mark Ardreesen开发的Mosaic和Netscape启发了Oak项目组成员,他们
5、用Java编制了HotJava浏览器,得到了Sun公司首席执行官Scott McNealy的支持,从而触发了Java进军Internet。 Java语言的特点根据Sun公司的“Java白皮书”中对Java的定义,Java是一种简单、面象对象、分布式、解释性、健壮、安全、结构中立、可移植、高性能、多线程、动态的语言 当然Java也有一些不足之处。其中之一是它缺乏其他语言所具有的一些重要特征 ;另外,Java的运行速度相对较慢。当每次使用编译后的Java程序时,它是被一个实时(JIT)编译器解释或编译执行。因此Java应用程序的执行速度比本机语言(如C+)程序要慢得多。JIT 在Java编程语言和
6、环境中,just-in-time ( JIT )编译器是一个把Java的字节码(包括需要被解释的指令的程序)转换成可以直接发送给处理器的指令的程序。当你写好一个Java程序后,源语言的语句将由Java编译器编译成字节码,而不是编译成与某个特定的处理器硬件硬件平台对应的指令代码(比如,Intel的Pentium微处理器或IBM的System/390 处理器)。字节码是可以发送给任何平台并且能在那个平台上运行的独立于平台的代码。JIT 过去,大多数用任何语言写的程序在每个电脑平台上都必须重编译,甚至有时需要重写。Java最大的优点之一就是你只需要写和编译一次程序。在任何平台上,Java都会将编译好
7、的字节码解释成能被特定的处理器所理解的指令。尽管如此,Java虚拟机一次只能处理一条字节码指令。在特定的系统平台上使用Java Just-in-time编译器(实际上是第二个编译器)能把字节码编译成特定系统的代码(虽然这个程序最初已经在这个平台上被编译过)。一旦代码被JIT编译器(重)编译后,它在电脑上通常就会运行地更快。JIT just-in-time 编译器随虚拟机一起供给的,并可选使用。它把字节码编译成可立即执行的指定平台的可执行代码。Sun微系统建议,选择 JIT 编译器选项通常会使程序运行地更快,尤其是当某个可执行的方法被重复使用时。 什么是什么是JavaJava语言语言前身是前身是
8、19911991年由美国年由美国SunSun公司的公司的JameJame GoslingGosling、Bill JoeBill Joe等人等人开发的开发的OakOak语言语言JavaJava是一种功能强大的是一种功能强大的程序设计语言,既是开程序设计语言,既是开发环境,又是应用环境,发环境,又是应用环境,它代表一种新的计算模它代表一种新的计算模式式Java 创始人创始人James GoslingJava语言早在早在19901990年年1212月,月,SUNSUN公司一个叫做公司一个叫做Green TeamGreen Team的小组要发展一的小组要发展一種分散式系统架构,使其能在消费性电子产品
9、作业平台上执行,種分散式系统架构,使其能在消费性电子产品作业平台上执行,例如例如PDAPDA、手机、咨询家电等、手机、咨询家电等。而而JavaJava語言的前身語言的前身OakOak就是在那就是在那時诞生的。为什么要叫時诞生的。为什么要叫OakOak呢?呢?原因是原因是Java Java 创始人创始人James James GoslingGosling辦公室的窗外,正好有辦公室的窗外,正好有一棵橡樹一棵橡樹(Oak)(Oak),順手就取了這順手就取了這個名字。個名字。JavaJava所提供的一些特所提供的一些特性,其實在性,其實在OakOak就已經具备了,就已經具备了,像像安全性安全性、网路通
10、訊、物件導、网路通訊、物件導向向( (面向对象面向对象OOP)OOP)、Garbage Garbage CollectedCollected、多執行緒多執行緒( (多线程多线程) )等等,是一個相當优秀的程式等等,是一個相當优秀的程式语言。语言。Java语言语言当时当时 Oak Oak 要去注册商标時,發現有另外一家公司已要去注册商标時,發現有另外一家公司已經先用了經先用了OakOak這個名字。這個名字。OakOak這個名字不能用,那要這個名字不能用,那要取取 啥新名字呢?工程师们边喝著咖啡边讨论着,看啥新名字呢?工程师们边喝著咖啡边讨论着,看看手上的咖啡,突然灵机一动,就叫看手上的咖啡,突然
11、灵机一动,就叫JavaJava好了。就好了。就這樣它就變成了我們所熟知的這樣它就變成了我們所熟知的JavaJava了。了。 橡橡树树Java语言语言 JavaJava语言是一种采用面向对象思语言是一种采用面向对象思想的适应想的适应InternetInternet时代发展的软时代发展的软件开发工具。件开发工具。它功能强大并且简单易学。自它功能强大并且简单易学。自19951995年诞生至今,在年诞生至今,在短短十二年中短短十二年中JavaJava就已经扩展到了各个应用领域。就已经扩展到了各个应用领域。网络技术的飞速发展,使网络技术的飞速发展,使JavaJava成为成为2121世纪开发应用世纪开发应
12、用软件的首选开发工具,而这正是由于软件的首选开发工具,而这正是由于JavaJava具有的面具有的面向对象、与平台无关、安全可靠、多线程及内嵌的向对象、与平台无关、安全可靠、多线程及内嵌的网络支持的特点,顺应了现代大规模软件开发对程网络支持的特点,顺应了现代大规模软件开发对程序设计语言所提出的安全、移植性好和代码重用的序设计语言所提出的安全、移植性好和代码重用的要求和发展潮流。要求和发展潮流。Java的基本元素Java编程语言Java运行时环境Java应用编程接口(API) Java程序编译和执行过程 一个典型的一个典型的Java环境环境 A typical Java environment编译
13、器创建编译器创建字节码字节码并并将它们存储在磁盘上。将它们存储在磁盘上。Compiler creates bytecodes and stores them on disk. (文档名文档名.class)程序在编辑器中产程序在编辑器中产生并存储在磁盘上。生并存储在磁盘上。Program is created in the editor and stored on disk编辑器编辑器Editor磁盘Disk编译器编译器Editor磁盘Diskjavac welcome.java创建一个名为welcome.class的文件一个典型的一个典型的Java环境环境 A typical Java env
14、ironment类载入器将类载入器将字节字节码码调入内存。调入内存。Class loader puts bytecodes in memory类载入器类载入器Class Loader磁盘Disk主存主存Primary Memoryjava welcome一个典型的一个典型的Java环境环境 A typical Java environment代码校验器检验所代码校验器检验所有代码是否合法,有代码是否合法,并遵从并遵从Java的安全的安全性的约束。性的约束。Bytecode verifier confirms that all bytecodes are valid and do not vio
15、late Javas security restrictions.代码校验器代码校验器Bytecode Verifier主存主存Primary Memoryjava welcome一个典型的一个典型的Java环境环境 A typical Java environment解释器读入代码,解释器读入代码, 并将其转换为计算并将其转换为计算机能够理解的语言。机能够理解的语言。 大多数情况是将数大多数情况是将数据转化为程序的可据转化为程序的可执行的代码。执行的代码。Interpreter reads bytecodes and translates them into a language that
16、the computer can understand, possibly storing data values as the program executes.解释器解释器Interpreter主存主存Primary Memoryjava welcome1.1.6代码安全 安检安检Java Java 解释器的任务解释器的任务1.1.下载代码下载代码2.2.校验代码校验代码3.3.运行代码运行代码bytecode 下载器下载器类下载器类下载器loader字节码校验器字节码校验器字节码校验器检查内容字节码校验器检查内容类遵从类遵从JVMJVM的类文件格式的类文件格式不出现访问违例情况。不出现访
17、问违例情况。代码不会引起运算栈溢出。代码不会引起运算栈溢出。所有运算代码的参数类型总是正确的。所有运算代码的参数类型总是正确的。不会发生非法数据转换,如把整数转换不会发生非法数据转换,如把整数转换为指针。为指针。对象域访问是合法的。对象域访问是合法的。安检安检代码安全代码安全语言定义语言定义public protectedprivate final取消指针取消指针自动回收垃圾自动回收垃圾程序执行系统程序执行系统WWW浏览器浏览器限制限制Java小应用程序的不正当使用小应用程序的不正当使用bytecode检查检查限定对象的存取权限限定对象的存取权限系统堆栈溢出系统堆栈溢出 参数类型一致参数类型一
18、致Java源程序源程序(.java文件文件)Java编译器编译器Java bytecode(.class文件文件)bytecode 下载器下载器bytecode 解释器解释器系统执行平台系统执行平台面向对象编程Object-Oriented Programming 面向过程与面向对象面向过程与面向对象Procedure-oriented and object-oriented客观事物的抽象客观事物的抽象Abstract of objects对象和封装对象和封装Object and encapsulation 类和继承类和继承 Class and inheritance面向过程与面向对象面向过程
19、的程序设计方法从解决问题的每一个步骤入手,面向过程的程序设计方法从解决问题的每一个步骤入手,适合解决比较小的简单问题,如适合解决比较小的简单问题,如Basic、C、Pascal等。等。当编写比较大的应用程序时,使用面向过程的编程方法设当编写比较大的应用程序时,使用面向过程的编程方法设计就会变得很困难计就会变得很困难面向对象的程序设计就是按照现实世界的特点来管理复杂面向对象的程序设计就是按照现实世界的特点来管理复杂的事物,把他们抽象为对象,具有自己的状态和行为,通的事物,把他们抽象为对象,具有自己的状态和行为,通过消息传递来完成一定的任务。过消息传递来完成一定的任务。面向对象的程序设计主要有事物
20、抽象、封装、继承和多态面向对象的程序设计主要有事物抽象、封装、继承和多态等特点,进而对应面向对象的基本概念:等特点,进而对应面向对象的基本概念:对象(对象(Object)、类()、类(Class)、方法()、方法(Method)、)、实例(实例(Instance)等)等 客观事物的抽象 在使用面向对象的编程语言设计对象时,使使用属性来包含状态用属性来包含状态,用方法来实现对象的用方法来实现对象的行为行为 对象和封装对象和封装 Object and encapsulation 对象就是把数据和相关的操作封装在一起而构成的实体。对象中的数据称为数据成员或属性,对象中的一些函数称为方法或成员函数。封
21、装是将相关的数据及其操作结合在一起,使得结构严谨,屏蔽交叉,使除了该对象的方法以外的其他方法不能使用这些数据、改变这些数据的状态。封装也称为消息隐藏封装也称为消息隐藏。封装允许对象进行完全独立的数据和代码。因此,每个对象可以看成一个“黑匣子”,消息从“黑匣子”的一端进入,从另一端出来 类和继承类和继承 class and inheritance 在类的创建过程中,新的类可以通过在原有在原有类的基础上类的基础上增加新的成员变量和成员方法来创建,这种创建方式称为继承。被继承的类称为父类(SuperClass),创建的新类称为子类(SubClass) 继承可以最大限度地重复使用代码,从而大大提高编码
22、效率 在Java代码中, extends为继承,继承,implements 为实现。实现是变相的继承。为实现。实现是变相的继承。建立Java开发环境 下载并安装下载并安装JDK6JDK6是是Sun公司免费提供的公司免费提供的Java开发工具包的最新版本。开发工具包的最新版本。我们可以在我们可以在Sun公司的主页上下载此开发工具公司的主页上下载此开发工具 设置系统环境变量设置系统环境变量安装好安装好JDK6以后,还需要设置系统的环境变量以后,还需要设置系统的环境变量PATH 新建系统变量新建系统变量 “JAVA_HOME”, 值为值为JDK的安装路径的安装路径 新建系统变量新建系统变量 clas
23、spath,值,值“.;%JAVA_HOME%lib;%JAVA_HONE%libtools.jar”给操作系统指明绝对路径给操作系统指明绝对路径安装安装JavaJava编译环境编译环境恢复恢复/ /创建创建 DOS 窗口窗口 edit功能功能右击右击高级高级环环境境变变量量编编辑辑;C:WINDOWSsystem32;插入插入确定 confirmJDK开发环境工具简介Java编译器(编译器(javac.exe)Java解释器(解释器(java.exe)Applet浏览器(浏览器(AppletViewer.exe)API文件产生器(文件产生器(javadoc.exe)文件归档工具(文件归档工具
24、(jar.exe)头文件生成器(头文件生成器(javah.exe)反汇编器(反汇编器(javap.exe)密钥管理工具(密钥管理工具(Keytool.exe)转码工具(转码工具(native2ascii.exe)Java编译器(javac.exe)Java编译器本身是Java编写的一个应用程序,是由Sun公司的技术人员Arthur Van Hoff完成编写的。其作用是将Java源代码(.java文件)转换成字节码(.class文件)Javac options file.java-classpath例:C:src Javac classpath C:My Javalib;C:Home Welco
25、me.java-d例:C:src Javac d C:classes Welcome.java其他选项均直接应用应用例:C:src Javac g Welcome.java C:src Javac verbose Welcome.java Java解释器(java.exe) Java options classname arguments-classpath 如何查找用户自定义的类文件的位置-D 此选项允许用户在运行时改变属性值-verify 使用校验-help 打印本命令的使用帮助Applet浏览器(AppletViewer.exe) 使用appletviewer命令可以运行Java的小应用
26、程序。Appletviewer读取包含小应用程序的HTML文件并在一个独立的窗口中运行,其命令行格式如下:appletviewer options htmlfilename编译执行第一个Java程序Java应用程序Java AppletJava应用程序例程1-1 /HelloWorld.javapublic class HelloWorld /* main method begins execution of Java application */ public static void main( String args )System.out.println( Hello World! );
27、 / end method main /end class HelloWorldJava应用程序打开命令行窗口,进入HelloWorld.java文件所在的目录,然后用下面命令编译程序:javac HelloWorld.java编译后,将在当前目录下生成一个字节码文件HelloWorld.class,用下面的命令就可以运行这个Java应用程序了:java HelloWorldJava Applet例程1-2 /HelloWorldApplet.javaimport java.applet.*;import java.awt.*;public class HelloWorldApplet ext
28、ends Appletpublic void paint(Graphics g )g.drawString(Hello World!,10,50); /end class HelloWorldAppletJava AppletApplet的编译过程跟编译Java应用程序相同,也是使用javac命令生成HelloWorldApplet.class文件,但applet要运行在浏览器中,所以我们还需要创建一个HTML文件。然后可以直接用浏览器(IE或Netscape)或者使用appletviewer来运行这个HTML文件 HelloWorld Applet本本 章章 小小 结结本章讲述了Java语言的发展史、Java语言的特点、Java的基本元素、面向对象编程思想,使读者对Java有了初步的认识;接着我们讲述了Java开发环境的创建,本书采用的是Sun公司网站上提供的最新版本JDK6 update3;最后介绍了JDK中的常用工具并在该环境下编译并执行了第一个Java程序HelloWorld。通过本章的学习,使读者对Java语言和面向对象编程有一个概括性的认识,激发读者进一步学习Java的兴趣。从下一章开始我们将学习Java语言的语法和编程技巧。