北京广播电视大学Java语言自主学习手册理工教学部2010.101/501第1讲概述21991.4—Sun进军消费电子产品市场,成立Green小组,开发Oak语言1992.10—成立FirstPerson公司,将Oak应用于Web,改名为Java1993~4—Web技术在Internet上流行1995.5—Sun正式发表Java与HotJava产品1995.10——与Netscape合作1995.12——微软支持Java1996.2——Java1.0正式出品2000.9——升级至Java1.32001.7——升级至Java1.4Java的发展史3Java2PlatformJava2StandardEdition(J2SE)包含Java类和GUI类Java2EnterpriseEdition(J2EE)包含开发基于Web的应用程序类与接口,包含servlet、JavaServerPages和EnterpriseJavaBeans类等等Java2MicroEdition(J2ME)Java对电子设备提供优化的运行时环境Java2Platform4Java体系结构应用程序Java编程语言Java类文件Java运行时环境JavaAPIJava虚拟机操作系统(Windows、Unix等等)5Java运行环境Java运行时环境(JRE,JavaRuntimeEnvironment)是Java虚拟机与核心类的组合,即Java平台Java运行环境的主要功能:–加载代码:将字节码转化为本机代码,进行类的装载和符号引用的消解,由类装载器完成–校验代码:由字节码校验器完成–执行代码:控制代码的执行,由运行时解释器完成6•类库APIJavaAPI是SUN提供的用Java语言开发的集合Java应用程序编程接口(API,ApplicationProgramInterface)是预先编好的代码,组成类似主题的包JavaAPI包括几十个包,常用的有:java.lang,java.io,java.util,java.net,java.awt,java.applet等Java类库API7Java核心类包举例1.java.lang----包含一些Java语言的核心类2.java.awt----包含了构成抽象窗口工具集(AWT)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)3.java.applet----包含applet运行所需的一些类4.java.net----包含执行与网络相关的操作的类5.java.io----包含能提供多种输入/输出功能的类6.java.util----包含一些实用工具类8Java是面向对象程序设计语言。面向对象的编程思想力图使对计算机语言中对事物的的描述与现实世界中该事物的本来面目尽可能的一致面向对象程序设计是使用类和对象将现实世界中真实的或抽象的实体在程序中建立模型Java的语法机制2/509类(class)和对象(object)是面向对象方法的核心概念。类是对一类事物描述,是抽象的、概念上的定义;对象是实际存在的该类事物的每个个体,因而也称实例(instance)类(class)最重要、最基本的语法设施,类的定义与继承与C++类似,主要区别:•Java不允许多重继承,多重继承必须通过接口实现•Java引进了abstract和final修饰词Java的语法机制10Java与C++比较继承具有指针类型运行速度跨平台编译后产生机器码直译式语言C++Java11接口(interface)•是一种抽象类,其中只能出现静态常量或抽象方法定义•主要目的是实现多重继承功能,避免C++在多重继承语义上的复杂性•一个Java类可以实现(继承)多个接口程序包(package)•是一些相关类或接口的集合•Java提供包括可重用类标准程序包,用户可自定义程序包•通过import语句将程序包引入应用程序12自动内存回收•Java取消了指针类型,所有动态内存请求均通过new运算符,并且得到的不是指针而是引用•系统自动进行内存回收多线程•语言级支持多线程,忽略操作系统多线程机制的差异,软件具有更好的可靠性和可移植性131.简单性2.面向对象3.分布式特征4.健壮性5.直译性6.结构中立性Sun公司的Java语言白皮书中指出Java的特性7.可移植性8.安全性9.多线程10.高性能11.动态特征Java的特性14Java三种核心机制Java虚拟机(JavaVirtualMachine)垃圾收集机制(Garbagecollection)代码安全性检测(CodeSecurity)15Java虚拟机(JavaVirtualMachine)在一台计算机上由软件或硬件模拟的计算机Java虚拟机(JVM)读取并处理经编译过的平台无关的字节码class文件Java编译器针对Java虚拟机产生_______文件,因此是独立于平台的Java_________负责将Java虚拟机的代码在特定的平台上运行16Java虚拟机(JVM)Java虚拟机规范定义了:–指令集–寄存器集:程序计数器、栈顶指针等–类文件结构–堆栈:提供各种参数等–垃圾收集堆–内存区域:存放字节码的方法代码、符号表3/5017Java自动垃圾收集技术(garbagecollection)不再使用的内存空间应回收在C/C++等语言中,由负责回收无用内存垃圾收集在Java程序运行过程中自动进行,程序员无法精确控制和干预Java语言解除了程序员回收无用内存空间的责任。它提供一种系统级线程跟踪存储空间的分配情况。并在JVM的空闲时,检查并释放那些可被释放的存储器空间18Java代码安全性检测•三级代码安全检查–验证:在类下载时完成,检查从哪里下载文件,是否有权限进到本机系统–字节码校验:分析下载的字节码是否合乎规则–跟踪监测:执行时安全管理器始终监测所执行的每步操作,检查其合法性19Java运行环境安装及配置Java开发工具集JDK(JavaDevelopmentKits)–Java编译器–Java运行时解释器–Java应用程序编程接口–Java文档化化工具–其它工具及资源20设置环境变量•Path外部命令搜索路径•CLASSPATH类资源位置搜索路径21安装后的目录结构22•JavaApplication以main()方法作为程序入口,由Java解释器加载执行•JavaApplet没有main()方法作为程序入口,可由浏览器加载执行Java程序分类23简单Java应用程序(Application)举例源文件:HelloWorld.javapublicclassHelloWorld{publicstaticvoidmain(Stringargs[]){System.out.println(HelloWorld!);}}24Application应用程序分析•类定义(class)Java程序的基本组成部分是类publicclassHelloWorld•主方法JavaApplication程序的入口是方法固定的书写格式:publicstaticvoidmain(Stringargs[]){……}4/5025Application应用程序分析•源文件–Java程序的源文件扩展名必须是“”–Java程序的源文件名必须与main()方法所在相同–Java源文件中包含多个类•程序内容–由方法体实现程序要完成的功能,方法的实现由一个个语句组成–语句以“”作为结束标志–大小写26•命名–如果.java文件包含一个public类,它必需按命名–如果一个类中含有main()方法,它必需按命名–文件名、类名大小写•类个数–一个源文件中有多个类,但只能有一个类其它类的个数不限Application应用程序分析27Java编译器•javac.exe将.java文件编译成.class字节码文件格式javac参数.java源文件名-d路径指定存放所产生类文件路径28Java解释器•java.exe解释执行.class字节码文件格式java.class文件[实参表]java-jar.jar文件[实参表]29JavaApplication的运行•javacHelloWorld.java功能:源文件名为HelloWorld.java,由javac编译器编译源程序,产生字节码文件(.class文件)•javaHelloWorld功能:字节码文件由java解释器解释执行30JavaApplet•Applet就是使用Java语言编写的,它可以在环境中运行•Applet类存于包中,是类的子类•它与Application的区别主要在于其的不同•Application是从其中的方法开始运行的•Applet是在中运行的,必须创建一个文件,通过编写HTML语言代码告诉浏览器载入何种Applet以及如何运行31JavaAppletappletcode=“HelloWorld.class”width=300height=400–code:–height:–width:32•HelloWorld.java源程序:importjava.awt.Graphics;importjava.applet.Applet;publicclassHelloWorldextendsApplet{Stringhw_text;publicvoidinit(){hw_text=HelloWorld;}publicvoidpaint(Graphicsg){g.drawString(hw_text,25,25);}}5/5033简单Java应用程序(Applet)举例编译源文件:javacHelloWorld.java产生字节代码:HelloWorld.class34•创建一个HTML文件:hello.htmlHTMLappletcode=“HelloWorld.class”width=300height=300/applet/HTMLApplet举例35Java语言基础第2讲36Java数据类型划分数据类型基本数据类型引用数据类型数值型字符型(char)逻辑(布尔)型(boolean)浮点类型(float,double)整数类型(byte,short,int,long)类(class)接口(interface)数组复合类型37逻辑型•boolean类型适于逻辑(布尔型)运算,一般用于。•boolean类型数据只允许取值true或false,不可以替代38字符型•char型数据用来表示通常意义上“字符”•字符常量是用单引号括起来的单个字符•Java字符采用,每个字符占字节,因而可用进制编码形式表示•Java语言中还允许使用转义字符'\'来将其后的字符转变为其它的含义39整数类型8字节4字节2字节1字节占用存储空间-231~231-1int-263~263-1long-215~215-1short-128~127byte表数范围类型Java各整数类型有固定的表数范围和字段长度,而不受具体操作系统的影响,以保证Java程序的可移植性40整数类型•整型常量的三种表示形式–十进制整数(如12,-345,0)–八进制整数,要求以0开头(如012,0345)–十六进制数,要求0x或0X开头(如0x12,0X345)•Java的整型常量默认为int型•声明long型常量可以后加‘l’或‘L’6/5041浮点型Java浮点类型有固定的表数范围和字段长度8字节4字节占用存储空间-1.798E308~1.798E308double-3.403E38~3.403E38float表数范围类型42浮点型•Java浮点类型常量有两种表示形式–十进制数形式,必须含有小数点–科学记数法形式•Java浮点型常量默认为double型,如要声明一个常量为float型,则需在数字后面加f或F43Java引用类型•Java语言中除8种基本数据类型以外的数据类型称为引用类型•引用类型数据以的形式存在•引用类型变量的值是某个对象的存储地址,而不