Java程序设计1概述课件_第1页
Java程序设计1概述课件_第2页
Java程序设计1概述课件_第3页
Java程序设计1概述课件_第4页
Java程序设计1概述课件_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、Java程序设计第一章 Java概述第1页,共54页。学习目标了解Java及其发展概况了解Java编程语言的主要特性了解Java的运行环境掌握Java程序的基本结构熟悉Java程序的基本编程规范了解Java虚拟机的原理掌握Java应用程序的加载过程第2页,共54页。1.1Java的历史与发展1. Java的历史Java是一种解释型的、面向对象的编程语言。历史:1991年,SUN MicroSystem公司的Jame Gosling、Bill Joe等人为在电视、控制烤箱等家用消费类电子产品上进行交互式操作而开发了一个名为Oak的软件。 Oak Java:互联网给Java带来新的生机 1995年

2、Sun向公众推出Java并引起业界的轰动发展:面向网络应用,类库不断丰富,性能不断提高,应用领域不断拓展。(1995年以来)应用:Java是当今最流行的软件开发语言之一,Sun推出了 Java2 & J2EE使Java具有更广泛的用途,适用于各种应用开发,尤其是网络应用,网络服务,嵌入式系统等。第3页,共54页。Java的特点在Java语言白皮书中,Java被描述为“是一种简单、面向对象、分布式、解释、健壮、安全、结构中立、可移植、高效能、多线程、动态的语言”。第4页,共54页。2 Java组成第5页,共54页。3 JAVA平台的扩展三个版本(1999.6)J2SE: Core/Desktop

3、J2EE: Enterprise/ServerJ2ME: Mobile/Wireless第6页,共54页。4 Java的应用范围据有关单位调查显示,从开发领域的分布情况上看Web开发占了一半以上,为57.9%,JavaME移动或嵌入式应用占15%,C/S应用占11.7%,系统编程占15.4%。近30%的开发者用Java从事C/S应用或系统级应用的开发。具体的企业信息化,特别在企业级应用,如通信、金融 电子政务及办公自动化 嵌入式设备及消费类电子产品 太空领域 第7页,共54页。应用范围第8页,共54页。5.JAVA平台的新发展Java SE(Java Platform,Standard Edi

4、tion)。Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。Java EE(Java Platform,Enterprise Edition)。这个版本以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企

5、业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。 Java ME(Java Platform,Micro Edition)。这个版本以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。 第9页,共54页。1.2 J

6、DK的安装与配置Java开发工具包(Java Development Kit)简称JDK,它是用于构建在Java平台上发布的应用程序、Applet 和组件的开发环境,也是一切Java应用程序的基础所有的Java应用程序都是构建在这个JDK之上,它包括了一个提供Java程序运行的虚拟机和一些运行支持的类库文件,以及一些工具程序第10页,共54页。JDK版本历史JDK版本发布日期版本说明JDK1.01995-5正式对外发布,直到1996年1月形成一个完整的版本。包括标准的I/O库、网络API、Applet、文件I/O及基本的窗口库JDK1.11997-2内部类、新的事件处理模型、RMI、JavaB

7、ean、JDBC、串行化、国际化、性能改进JDK1.21998-12浮点运算改进,Swing支持、集合、Java2D、可访问性、引用对象及性能改进JDK1.32000-5称为Kestrel。CORBA兼容性、Java音频支持、JNDI及性能改进JDK1.42001-12称为Merlin。断言支持、64位空间、新的I/O库、模式匹配、Java web Start、IPv6、XML进一步性能改进等JDK1.52003-7称为Tiger。通用性(代码模块)、某些运算符重载等JDK1.62006称为Mustang。没有新的语言特征,是一个以稳定、提高为目的的版本。JDK1.72011新的语言特性、性能

8、的改进第11页,共54页。1.2 Java程序运行环境的安装与配置第一步:下载JDKJava可以从Sun公司网站/免费下载(寻找合适的版本)JDK(JDK,Java Development Kit)包括Java编译器(javac,Java Complier)Java解释器(java,Java interpreter)文档生成器(javadoc ,Documentation generator)第12页,共54页。第二步:安装点击jdk的可执行程序,开始安装第13页,共54页。JRE的安装第14页,共54页。第三步:环境配置-设置操作系统环境变量第15页,共54页。系统环境变量的设置JAVA_H

9、OMEJDK的安装目录,如:C:Program FilesJavajdk1.6.0_11CLASSPATH类的搜索路径,如:.;%JAVA_HOME%libtools.jar;%JAVA_HOME%libdt.jar;%JAVA_HOME%jrelibrt.jar;简化CLASSPATH配置如果一个目录(例如在d:jars)下有很多.jar文件,可以按照如下方式配置:d:jars*第16页,共54页。系统环境变量的设置(cont.)PATH可执行文件搜索路径设置,例如java.exe,javac.exe等%JAVA_HOME%bin第17页,共54页。注意编译和执行java程序时,编译系统会自

10、动到当前工作目录、jdk安装路径下的lib目录下寻找需加载的类。因此,可以简化classpath变量的设置。第18页,共54页。检查Java运行环境设置C:javaUsage: java -options class args. (to execute a class)or java -jar -options jarfile args. (to execute a jar file)C:javacUsage: javac C:java versionjava version 1.4.2_03Java(TM) 2 Runtime Environment, Standard Edition (b

11、uild 1.4.2_03-b02)Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode)第19页,共54页。1.3 java程序的类型应用程序Java Application独立的Java程序程序入口方法: public static void main(String args) 小应用程序Java Applet在Web浏览器中运行(内嵌Java虚拟机)特定标记 特定的程序Servlet、EJB等第20页,共54页。1.3 第一个Java应用程序/* 程序1-1:一个向控制台输出字符串的应用程序*/public class He

12、lloWorldApp /* main方法是构成Java应用程序执行不可缺少的部分 param args 一个String类型的数组 */ public static void main (String args) System.out.println (Hello World!); /向控制台输出 第21页,共54页。第一步:打开任一个文本编辑器,将前述内容添加进去,创建一个源程序文件。考虑好类名,选一个有意义的英文名字,如HelloWorldApp写好类的声明添加main方法保存文件,文件名和类名要完全保持一致(包括大小写),文件后缀是.java。第22页,共54页。什么是源程序源程序(也

13、称源代码),是指一系列人类可读的计算机语言指令。计算机程序包括源程序和目标程序。同一程序的源文本和目标文本应当视为同一作品。源程序是指用高级语言或汇编语言编写的程序。 目标程序,是指可在计算机运行的程序。一般源程序都需要经过某种翻译过程,形成计算机可理解的指令代码。翻译的两种方式,即编译方式和解释方式。编译方式是指利用事先编好的一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户将高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果(如Java、C、VC+等)。解释方式是

14、指源程序进入计算机后,解释程序边扫描边解释,逐句输入逐句翻译,计算机一句句执行,并不产生目标程序(如JavaScript)。 第23页,共54页。第二步:编译源程序,产生字节码文件进入命令提示符窗口利用 cd 命令切换当前路径到源程序所在目录执行命令javac HelloWorldApp.java检查目录下是否生成HelloWorldApp.class文件,如果有,则表示结果正确第24页,共54页。第三步:执行该程序保持命令提示符窗口执行命令java HelloWorldApp查看结果第25页,共54页。和其他语言开发过程的比较Java程序开发步骤(编码,编译,解释,执行 )C程序开发步骤(编

15、码,编译,执行 )第26页,共54页。类的定义关键字class表示要定义一个类(模板),一个类在结构上包含数据变量和方法,表示功能的语句总是包含在方法中。1.3.2 JAVA应用程序编程原则public class Dog String name; public void bark() System.out.println(“brak!); 第27页,共54页。定义类文件public修饰的类名称必须与包含它的Java源程序文件名一致public class Dog . . .则文件名一定要是:Dog.java并且大小写敏感 (一致)1.3.2 JAVA应用程序编程原则第28页,共54页。总之,

16、类文件的定义一个Java应用程序至少包含一个类。一个Java源文件一般只包含一个类定义。 一个类可以是一个空类,不包含任何属性定义和方法声明。声明一个类时,其类名的第一个字母应该大写。类名通常是有意义的。第29页,共54页。主方法(main Method)每个Java应用程序必须有且只能有的一个方法,它是程序执行的入口,运行时被虚拟机自动执行该方法的声明格式是固定的,不能变更方法被程序调用而执行,并不会自动执行1.3.2 JAVA应用程序编程原则public class Dog public void bark() System.out.println(“brak!); public stat

17、ic void main(String args) Dog d = new Dog(); d.bark();第30页,共54页。类和变量的引用一个类中引用其他类,要注意在文件头,使用import加载java.lang包中的类不需要明确import引用一个类或对象的变量和方法,要通过“.”实现引用JAVA应用程序编程原则import java.util.Date;public class HelloWorld public static void main(String args) Date now=new Date( ); System.out.println(now); 第31页,共54页。

18、类和包介绍 类是描述提供某种功能的模块的一般术语。Java开发集(JDK)给出了一套标准的类(称作类库),这些类可执行大部分所需的基本行为 不仅为编程任务(例如,类可提供基本的数学函数、数组和字符串),而且为图形和网络程序开发提供了丰富的支持。类库被组织成许多包,每个包都包含几个类。如下所列为一些重要的包: java.lang包含一些形成语言核心的类,如String、Math、Integer和Thread。java.awt包含了构成抽象窗口工具包(AWT)的类,这个包被用来构建和管理应用程序的图形用户界面。java.applet包含了可执行applet特殊行为的类。包含执行与网络相关的操作的类

19、和处理接口及统一资源定位器(URLs)的类。java.io包含处理I/O文件的类。java.util包含为任务设置的实用程序类,如随机数发生、定义系统特性和使用与日期日历相关的函数。 第32页,共54页。书写规范每个程序应以说明程序目的,作者,日期和时间的注释开始;使用空格和空行可以提高程序可读性;花括号对“”类,方法,语句块语句分号“;”结尾缩进:当程序中输入一对花括号,然后把光标重新定位到两个括号之间,先缩进一级,再开始输入程序体,该习惯有利于防止漏掉括号的错误JAVA应用程序编程原则import java.util.*;public class ArrayDemo public stat

20、ic void main(String args) int a=10,7,9,2,4,5,1,3,6,8;Arrays.sort(a);Set week=new HashSet();Iterator it=week.iterator();week.add(hello);for(String str : week)System.out.println(str);第33页,共54页。对齐关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各部分对齐。连续赋值时当对齐操作符。当方法参数过多时当在每个参数后(逗号后)换行并对齐。当控制或循环中的条件比较长时当换行(操作符前)、对齐并注释各条件。变量定义

21、最好通过添加空格形成对齐,同一类型的变量应放在一起。/变量对齐-int count = 100;String strUserName = null;Integer porductCode = new Integer(2); /产品编码数组/参数对齐-public Connection getConnection( String url, String userName, String password) throws SQLException,IOException/换行对齐-public final static String SQL_SELECT_PRODUCT = “SELECT * “

22、 + “ FROM TProduct WHERE Prod_ID = ” + prodID;/条件对齐-if( Condition1 /当条件一 & Condition2 /并且条件二 | Condition3) /或者条件三第34页,共54页。命名规范类:类名是个一名词,采用大小写混合的方式,每个单词的首字母大写。方法:方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。变量:除了变量名外,所有实例,包括类,类常量,均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。变量名应简短且富

23、于描述。变量名的选用应该易于记忆,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。常量:类常量和ANSI常量的声明,应该全部大写,单词间用下划线隔开。(尽量避免ANSI常量,容易引起错误)第35页,共54页。注释注释应该增加代码的清晰度。代码注释的目的是要使代码更易于被其他开发人员等理解。避免使用装饰性内容。保持注释的简洁。注释信息不仅要包括代码的功能,还应给出原因。不要为注释而注释。除变量定义等较短语句的注释可用行尾注释外,其他注释当避免使用行尾注释。注解方式(Comments)/* 注释内容 */ 文档注解/* 注释内容 */ 程序内的任意位置/注释内容 对本行注解第

24、36页,共54页。文档注释(被称为doc comments)是Java独有的,并由/*.*/界定。文档注释可以通过javadoc工具转换成HTML文件。文档注释描述Java的类、接口、构造器,方法,以及字段(field)。每个文档注释都会被置于注释定界符/*.*/之中,一个注释对应一个类、接口或成员。该注释应位于声明之前: /* Class description goes here.* version 1.1.0* author Firstname Lastname*/public class Blah extends SomeClass /* .method doSomethingElse

25、 documentation comment.* param someParam description*/public void doSomethingElse(Object someParam) / .implementation goes here.第37页,共54页。块注释通常用于提供对文件,方法,数据结构和算法的描述。块注释被置于每个文件的开始处以及每个方法之前。它们也可以被用于其他地方,比如方法内部。在功能和方法内部的块注释应该和它们所描述的代码具有一样的缩进格式。/*-* Here is a block comment with some very special* format

26、ting that I want indent(1) to ignore.* one* two* three*/第38页,共54页。行末注释(End-Of-Line Comments)注释界定符/,可以注释掉整行或者一行中的一部分。它一般不用于连续多行的注释文本;if (foo 1) / Do a double-flip. .else return false; / Explain why here.第39页,共54页。1.3.4 排除常犯的错误声明一个类的关键字class,写成了Class,要注意大小写。声明main方法时,方法修饰符没有严格按照public static void的顺序,并

27、且其参数是一个字符串数组String 大小写问题,例如把main方法的参数args的类型String,改成了string,把System写成了system。JAVAC is not recognized as an internal or external command,operable program or batch file. 解释:编译错误。包含javac.exe编译器的路径变量设置不正确,操作系统无法发现该执行文件。第40页,共54页。类名和文件名不能保持一致。如:HelloWorldAp.java:5: class HelloWorldApp is public, should

28、be declared in a file named HelloWorldApp.java public class HelloWorldApp解释:编译错误。当一个类被“public”修饰时,包含这个类的文件名应该和该类名完全一致。不能发现需要执行的类。如:Exception in thread main java.lang.NoClassDefFoundError: HelloWorldApp解释:运行错误。有时即使该类的字节码文件就在当前目录下,也会报这种错误。这种错误的主要原因是由于没有为运行时环境提供正确的类加载说明,详细说明请参阅附录。第41页,共54页。HelloWorldAp

29、p.java:10: cannot resolve symbolsymbol : method printl (java.lang.String)location: class java.io.PrintStream第42页,共54页。1.4 Java的工作原理Java的结构Java ProgramJava Virtual MachineJava APISYour Computer System第43页,共54页。Java的编译与执行第44页,共54页。1.4.2 Java应用程序执行过程1.加载加载就是把二进制形式的字节码读入虚拟机中。加载过程是由类加载器完成的,该加载器是ClassLoad

30、er的子类。2.链接链接是取得加载的类或接口,并将其与JVM运行时环境结合起来,以准备执行的过程,这个过程包括检验,准备和解析三个步骤。3.初始化如果类存在对非final静态变量的赋值,或者static代码段,在编译时会隐式生成一个cinit()方法,即初始化执行的方法体。第45页,共54页。1.4.3 Java虚拟机不同的操作系统有不同的虚拟机。它类似一个小巧而高效的CPU。Bytecode代码是与平台无关的是虚拟机的机器指令。Java字节代码运行的两种方式:Interpreter(解释方式)Just-in-time(即时编译):有代码生成器将字节代码转换成本机的机器代码,然后可以以较高速度

31、执行.虚拟机的任务提供垃圾回收功能提供运行时环境提供中立的体系结构第46页,共54页。JVM运行时的数据区结构方法区方法区是由所有JVM线程共享的一个公共存储区。方法区存储类的装基本信息、常量池、静态变量、字段信息、方法信息、一个到类ClassLoader的引用,一个到Class类的引用。堆堆是一个自由内存区域,常用于内存的动态分配或临时分配。堆是一种运行时数据区,为类和数组对象提供内存。JVM在启动时创建堆,然后当Java中创建类或数组对象时,就从堆中分配所需内存。当对象或数组不再存在后,由一个称为垃圾收集的自动存储管理系统来回收堆内存。栈每一个线程都有自己私有的一个JAVA栈,任何线程不能调用其它线程的栈,Java的栈帧用于存储方法调用的状态。当线程调用一个方法的时候,JVM会在该线程的JAVA栈上压入一个新帧。自然该帧成为当前帧,在执行该方法期间,线程用该帧来储存参数,局部变量和中间运算结果等。JAVA方法执行有两种情况,一种是正常执行完成return,另一种是异常抛出中止。虚拟机都会将当前的栈帧出栈。第47页,共54页。栈与堆Java将它的内存空间分为两部分:一种叫栈内存,一种叫堆内存。局部变量与方法都是在栈内存中定义和分配的。堆内存是通过n

温馨提示

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

评论

0/150

提交评论