第1章Java语言概述_第1页
第1章Java语言概述_第2页
第1章Java语言概述_第3页
第1章Java语言概述_第4页
第1章Java语言概述_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

Java程序设计宋瑾钰10-232主要内容Java的基本概况Java语言基础面向对象的各种实现机制常用数据结构输入输出、异常处理图形界面编程数据库常见的Java一些高级应用教学目标掌握Java语言的基本知识和面向对象程序设计方法能够运用面向对象程序设计思想,正确的分析程序和设计程序,具有Java程序设计能力。为后续课程打好基础。教学安排理论讲授30学时实验18学时成绩由平时成绩+实验+期末大作业组成。第一章Java语言概述

【本章导读】在学习任何一门语言之前,都应该先了解该门语言的背景,包括该门语言的发展历史。再就是在准备更深入地学习一门语言前,应该对该语言的特点有一个比较全面正确的理解,这样才能使学习更有效。本章主要介绍Java的发展史、Java语言的特点、Java的工作原理、Java运行平台及Java应用程序分类。

【本章要点】

Java的发展史Java语言的特点Java的工作原理Java运行平台Java应用程序分类1.1、Java历史及发展Java是一种解释型的、面向对象的编程语言。历史:1991年,SUNMicroSystem公司的JameGosling、BillJoe等人为在电视、控制烤箱等家用消费类电子产品上进行交互式操作而开发了一个名为Oak的软件。

Oak—>Java:互联网给Java带来新的生机

1995年Sun向公众推出Java并引起业界的轰动发展:面向网络应用,类库不断丰富,性能不断提高,应用领域不断拓展。(1995年以来)高级语言中用于描述计算的结构采用类似于数学中代数运算公式的形式,这种结构被称为“表达式”。程序中基本的动作单位被称为“语句”,不同的语句实现不同的功能。用高级语言书写的程序不可能直接地在计算机上执行,要在计算机上执行高级语言书写的程序,有两种基本方法:

编译(Compilation)执行:这种方法是设法把高级语言程序(也称为“源程序”)转换成为机器语言的可以由计算机直接执行的程序,即转变为“可执行(Executable)程序”。“解释”(Interpretation)执行:这种方法是即时把源程序转换为机器可执行的指令。有时为了提高效率,也可以先编译成一种中间代码。

——高级程序设计语言对于“编译执行”方式,人们实现了高级语言“编译器”(Compiler)完成这种转换工作。编译器把高级语言程序看成是符合一定语法结构的符号串,对它进行加工变换。编译器对源程序的加工一般分为两个阶段:源程序首先被翻译成机器语言,这种翻译结果称为“目标码”(objectcode),目标码构成的程序片段称为目标模块。第二步,这些目标模块被与其他一些基本模块(由编译软件提供)连接在一起,最终形成“可执行程序”(executableprogram),这样的程序就可以在计算机上实际运行了。第一个加工步骤称为“编译”(compiling),第二个步骤称为“连接”(linking)。

——高级程序设计语言

——高级程序设计语言编译过程对于“解释执行”方式,人们实现了一种称为“解释器”(Interpreter)的软件来完成转换工作。解释器在工作方式上与编译器不同,它不对源程序进行翻译,而是直接对源程序的语句进行分析和解释,实现源程序所描述的功能。

——高级程序设计语言解释过程

——高级程序设计语言高级语言写出的程序是独立于任何具体的计算机的。但是“编译器”和“解释器”则是与机器相关的。同一种语言,对于不同的机器,需要不同的“编译器”和“解释器”。人们已经开发出了许多不同的高级程序设计语言,不同的语言有各自不同的规范,因此需要专门的“编译器”和“解释器”。1.1Java的发展史

Java语言的转折性发展

1996年,JDK1.0发布,10大软件公司宣布支持Java技术。

1996年,JDK1.1发布。

1998年,JDK1.2发布。

1999年,JAVA被分为J2SE、J2EE和J2ME。

2000年,JDK1.3,JDK1.4发布。

1.2Java语言的特点

Java是一个广泛使用的网络编程语言,它是一种新的计算概念。它是一种跨平台,适合于分布式计算环境的面向对象编程语言。作为一种程序设计语言,可以用一句话来概括Java语言的特点:“简单的、面向对象的、平台无关性的、分布式的、解释的、健壮的、安全的、结构中立的、可移植的、性能优异的、多线程的、动态的语言。”1.2.1Java语言特点1、简单性

Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。

2、面向对象 面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。客观世界中的一切都可以看做对象!换句话说万物皆为对象!3、平台无关性

Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。Sun公司的宗旨是:“WriteOnce,RunAnywhere”一次编译,到处运行。

1.2.2Java语言其他的特点4、多线程5、可靠性和安全性

6、分布式7、解释执行8、体系结构中立

9、可移植性不再有全局变量不再有#include和#define等预处理功能不再有structure、union及typedef等不再有函数、不再有指针、不再有多重继承不再有goto语句不再有操作符重载(OperatiorOverloading)

取消自动类型转换,要求强制转换自动进行内存管理3、Java语言特点 与C及C++的区别Java语言的应用前景所有面向对象的应用开发,包括面向对象的事件描述、处理、综合等。计算过程的可视化、可操作化的软件的开发。动态画面的设计,包括图形图像的调用。交互操作的设计(选择交互、定向交互、控制流程等)。Internet的系统管理功能模块的设计,包括

Web页面的动态设计、管理和交互操作设计等。Intranet(企业内部网)上的软件开发(直接面向企业内部用户的软件)。与各类数据库连接查询的

SQL语句实现。其他应用类型的程序。1.3Java的工作原理

Java虚拟机(JVM)是软件模拟的计算机,可以在任何处理器上(无论是在计算机上还是在其它电子设备中)安全并且兼容的执行保存在.class文件中的字节码。java虚拟机的“机器码”保存在.class文件中,有时也可以称之为字节码文件。Java虚拟机的产生是为了跨平台的应用,任何具有Java虚拟机的计算机或电子设备上都可以运行字节码文件。java虚拟机中的java解释器负责将字节码文件解释成为特定的机器码进行运行。java源程序需要通过编译器编译成为.class文件(字节码文件)。java程序的编译和执行过程如动画所示。图1-3Java程序运行机制

图1-4windows下C语言运行机制Java平台工作原理1.3.1java程序的编译和执行过程1.4Java运行平台Java平台由Java应用编程接口(API)和Java虚拟机(JVM)构成,如图所示。这个平台构成了Java在不同计算机系统中编译和运行的环境。Java程序Java虚拟机JavaAPIs计算机系统Java平台(安装JDK)

1.4.1三种Java平台简介

Sun公司要实现“编写一次,到处运行”(Writeonce,runanywhere)的目标,就必须提供相应的Java运行平台。目前,Java运行平台主要分为下列三个版本:1.4.1Java平台简介

1、J2SEJava标准版或Java标准平台。J2SE提供了标准的SDK开发平台(以前称为JDK开发平台),利用该平台可以开发Java桌面应用程序和低端的服务器应用程序,也可以开发JavaApplet。2、J2EEJava企业版或Java企业平台,可以构建企业级的服务应用。J2EE平台包含了J2SE平台,并增加了附加类库,以便支持目录管理、交易管理和企业级消息处理等功能。3、J2MEJava微型版或Java小型平台。J2ME是一种很小的Java运行环境,用于嵌入式的消费产品中,如移动电话、掌上电脑或其他无线设备等。1.4.2JDK的安装与环境变量配置

什么是JDK(JavaDevelopmentKit)作为JDK实用程序,工具库包含:Javac:编译器Java:解释器Appletviewer:小程序浏览器Javadoc:根据java源码及说明语句生成HTML文档Jdb:java调试器Javah:产生可以调用java过程的C过程,或者建立能被java调用的C过程的头文件Jabap:java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码的含义。Java平台可从网站免费下载,该网站上提供了免费的Java开发工具集(JavaDevelopersKits,简称JDK),我们可以在这里下载适合于我们计算机操作系统的JDK,利用这些工具来开发Java程序。最新版本为JDK1.8/javase/downloads/index.jsp1.4.3JDK目录结构bin目录lib目录jre目录demo目录src.zip1.4.4设置环境变量找不到javac工具程序必须告诉操作系统,应该到哪些目录下尝试找到您所想使用的工具程序---设定系统变量中的

Path环境变量1.4.4设置环境变量Javac在运行的时候,需要一些类库的支持,到哪里去寻找这些类库呢?---设定系统变量中的

Classpath环境变量安装JDK,设置环境变量:<CLASSPATH>

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\jre\lib\rt.jar;<PATH>

%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;<JAVA_HOME>

C:\ProgramFiles\Java\jdk1.5.0_07;1.5Java应用程序分类

使用J2SE开发的程序分为两种,一种称为Java应用程序(即Application应用程序),另一种称为Applet小应用程序。Java应用程序可以在安装了Java标准平台的任何计算机上运行。也就是说,用Java标准平台编译得到的字节码文件,可以正确地运行在任何具有Java标准平台的计算机上。运行JavaApplet并不需要安装Java标准平台,JavaApplet可以由支持Java的浏览器直接运行,该浏览器必须含有相应的Java虚拟机。1.5.1Application应用程序

开发一个Java应用程序需经过三个步骤:

(1)编写源文件

(2)编译源文件生成字节码

(3)加载运行字节码1.5.1Application应用程序

[例1-1]classA{voidf(){System.out.println("IamA");}}classB{}publicclassHello{publicstaticvoidmain(Stringargs[]){System.out.println("你好,很高兴学习Java");Aa=newA();a.f();}}代码输入完毕后,将其保存成一个文件,取名为Hello.java。并存放到一个指定的目录中去(如F:\Chapter01\code)。可以发现目录F:\Chapter01\code中有一个文件,名字为Hello.java,这就是我们刚才保存的源代码文件。1.5.1JavaApplication程序

一个Java程序的基本框架结构:Java程序由一个或多个独立的类组成,但其中必须有一个公有类(如:MyJavaApplication),而且源代码文件必须与这个公有类的名字相同(如:MyJavaApplication.java)。Java的类可以由一个或多个方法组成,其中公有类中的main方法可用作程序运行的入口。//TheFirstJavaProgrampublicclassMyJavaApplication{publicstaticvoidmain(Stringargs[]){System.out.println(“Hello,JavaWorld!

");}}程序头的注释HelloWorld类main方法修饰符方法头方法体方法名参数返回类型本程序的作用是输出下面一行信息:

Hello,JavaWorld!

在一个JavaApplication应用程序中,一定要有一个类包含main方法。而在本范例中,首先用保留字class来声明一个新的类,其类名为MyJavaApplication

,它是一个公共类(public)。整个类定义由大括号{}括起来。在该类中定义了一个main方法,这个方法共有三个修饰语,其意义分别如下:(1)public:表示这个类的main方法可以被所有的对象使用。(2)static:指明该方法是一个类方法,它可以通过类名直接调用,表示main是属于这个类所使用的方法,我们将之称为“静态方法”。

(3)void:表示main方法执行后不会传回任何值。这一点是重要的,因为Java编程语言要进行谨慎的类型检查,包括检查调用的方法确实返回了这些方法所声明的类型。

对于一个应用程序来说,main方法是必需的,而且必须按照如上的格式来定义。Java解释器在没有生成任何实例的情况下,以main作为入口来执行程序。Java程序中可以定义多个类,每个类中可以定义多个方法,但是最多只能有一个公共类,main方法也只能有一个,作为程序的入口。main方法定义中,括号中的Stringargs[]是传递给main方法的参数,参数名为args,它是String类的一个实例。参数可以为0个或多个,每个参数用“类名

参数名”来指定,多个参数间用逗号分隔。

对于本程序,还有以下值得注意的地方:(1)在main方法中,只有一条语句:

System.out.println("Hello,JavaWorld!");

它用来实现字符串的输出,这条语句实现与C语言中的printf语句相同的功能。这里实际上是利用Java应用编程接口(API)向控制台打印输出一行文字。API中已经有了可以使用的控制台打印功能,我们只需要提供要打印的文字。

这行程序所做的事是使用由System类的out成员引用的PrintStream类的out对象的println方法,将字串Hello,JavaWorld!打印到标准输出上。

(2)语句

System.out.println("Hello,JavaWorld!");

的最后有一个分号(;),在Java编程语言中,一个“;”代表一个语句的结束。例如语句

totals=a+b+c+d+e+f+g;与语句

total=a+b+c+d+e+f+g;是等价的。(3)在程序中出现了大括号(“{”和“}”),它们是成对出现的,以{}为边界的语句集合称为一个块(block)。语句块可被嵌套,在本例中,MyJavaApplication类是一个语句块;MyJavaApplication类由main方法构成,main这个方法也是一个语句块,它是一个独立单元,单元本身又作为类MyJavaApplication块中一部分。(4)为了增强程序的可读性,在程序中有多处空格,这不影响程序的执行。

Java程序中允许任意多的空白。

(5)在本程序中第一行“//”后的内容为注释,进行编译时,这一行的从“//”开始的所有内容会被忽略。

Java里有两种类型的注释。第一种是传统的、C语言风格的注释,是从C++继承而来的。这些注释用一个“/*”起头,随后是注释内容,并可跨越多行,最后用一个“*/”结束;第二种类型的注释也起源于C++,这种注释叫作“单行注释”,以一个“//”起头,表示这一行的从“//”开始的所有内容都是注释,这种类型的注释更常用,因为它书写时更方便。(6)程序名为MyJavaApplication.java,和公共类的类名相同(包括大小写都一致,唯一不同的地方就是程序名有扩展名.java而类名没有扩展名),这是因为Java解释器要求公共类必须放在与其同名的文件中。字节码的编译生成程序必需转换为Java虚拟机能够理解的形式,这样,任何安装有Java虚拟机的计算机就可以解释并运行该程序。编译Java程序是指:提取程序文件中程序员可读的文本(亦称源代码)并把它转换成字节码,字节码是提供给Java虚拟机的与平台无关的指令。Java编译器是通过外壳操作系统中的命令行进行调用的,下面对该程序进行编译,命令行调用命令为:

C:\>javacMyJavaApplication.java

其中,“javac”是JDK工具包中提供的Java语言编译器,输出结果为Java字节码。编译的结果是生成字节码文件MyJavaApplication.class。需要留意的是,使用javac这个指令并没有打开Java编译器里的侦错功能,所以你无法在它编译出来的字节码文件中找到与程序侦错有关的数据信息。除非你用另外一个指令javac-g,它的编译结果除了字节码文件外还会附带一些有用的除错资料,可提供程序侦错时用。事实上“javac”提供了一些指令参数供使用者编译时选用,各个参数代表不同的功能,以下是常用的几个:

(1)-calsspath<path>:告知编译器何处去引用其他的类型对象。这个设定会取代你原先在开机执行文件里已说明过的环境变量CLASSPATH。

(2)-d<directory>:指示编译器将编译后的执行码存放在特定的目录下,在这里要使用绝对路径。

(3)-g:启动侦错功能。字节码的解释与运行现在可以运行该程序了,用Java解释器来运行该字节码文件:

C:\>javaMyJavaApplication

其中,java是JDK工具包中提供的java解释器。我们需留意的是,在这个指令行中文件名称不须附上扩展名“.class”,因为解释器本身会自行加入。Java程序的编辑、编译和运行过程

编辑程序代码HelloWorld.javajavac生成出错信息Yes编译程序代码javacHelloWorld.javaHelloWorld.class解释执行字节码javaHelloWorld有编译错误吗?NoJava程序编译通过,会自动生成一个包含了这个源程序字节码的同名.class文件。该文件可以通过Java虚拟机运行。传统语言与java的不同运行机制源代码目标码可执行代码操作系统编译连接运行源代码字节码Java解释器编译解释执行注意Java源代码编译生成的字节码必须运行在java虚拟机的在os之外的软件平台。运行java程序时,首先应该启动虚拟机,由它来负责解释执行java字节码。这样,利用java虚拟机可以把java字节码程序跟具体的软硬件平台分开。在Java中,有两种类型的程序:应用程序(Application)和小应用程序(Applet)。JavaApplet可以被HTML页面引用,并可以在支持Java的浏览器中执行,可以说Applet具有“激活因特网”的强大功能。在本节将讲述Applet的工作原理以及如何编写Applet程序。1.5.2JavaApplet1Applet的基本工作原理

Applet的基本工作原理如图所示。第一个Applet小程序

1源程序的编辑与编译【例】第一个JavaApplet程序

Boy.java2代码嵌入

Applet中没有main方法作为Java解释器的入口,必须编写HTML文件,把该Applet嵌入其中,然后用appletviewer来运行,或在支持Java的浏览器上运行。

3Applet的运行

在控制台键入命令:

C:\>appletviewerBoy.htm

也可以直接在浏览器中运行或者使用TextPad,Eclipse等工具。(1)publicvoidinit()该方法用于Applet的初始化。当Applet被第一次加载时,该方法会被自动调用。在这个方法中,可以做一些必要的初始化工作,这些内容包括是创建和初始化程序运行所需要的对象实例,把图形或字体载入内存,处理PARAM参数等。

(2)publicvoidstart()该方法用来启动浏览器运行Applet的主线程。调用init方法将Applet的初始化工作完成之后,start方法会被自动调用;当用户刷新包含Applet的页面或者从其它页面返回包含Applet的页面时,start方法也会被自动调用。也就是说,start方法可以被多次调用,这与init方法是有区别的。基于这样的原因,可以把只调用一次的代码放在init方法中,而不能放在start方法中。

(3)publicvoidstop()该方法在用户离开包含Applet的页面时会被自动调用。和start方法一样,stop方法也可以被多次调用。该方法的作用是,当用户离开包含Applet的页面时,停止一些耗费系统资源的活动,如播放动画等。如果在Applet中没有动画、音乐文件播放,那么通常可以不使用这个方法。(4)publicvoiddestroy()当用户正常关闭浏览器时,浏览器会调用destroy方法。该方法用于回收系统资源,如回收图形用户界面的系统资源、关闭连接等。至于Applet实例本身,会由浏览器来负责从内存中清除,不需要在destroy方法中来清除。

Applet类提供的四个方法init、start、stop和destroy分别对应了Applet的初始化、启动、暂停直到消亡的各个阶段。

(5)publicvoidpaint()

paint()方法主要作用是在Applet的界面中显示文字、图形和其他界面元素。它也是浏览器可自动调用的方法,导致浏览器调用paint的事件主要有:1Applet被启动后自动调用paint重新描绘自己的界面2.Applet所在浏览器窗口改变时,要求重画界面3.Applet的其他相关方法被调用,如repaint()。图说明了Applet的生命周期和对应的方法

例LifeCyle

Applet与Application的区别

(1)JavaApplet程序是在WWW浏览器环境下运行,即不是完整独立运行程序;(2)运行JavaApplet程序的解释器不是独立的软件,而是嵌在WWW浏览器中作为浏览器软件的一部分。(3)JavaApplet程序中不需要有main方法,但是JavaApplet程序的主类必须是类库中已定义好的类Applet或JApplet的子类。(4)JavaApplet程序可以直接利用浏览器或AppletViewer提供的图形用户界面,而JavaApplication程序则必须另外书写专用代码来营建自己的图形界面。2.5

温馨提示

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

评论

0/150

提交评论