2 初识Java程序.ppt_第1页
2 初识Java程序.ppt_第2页
2 初识Java程序.ppt_第3页
2 初识Java程序.ppt_第4页
2 初识Java程序.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章 初识Java程序,Java面向对象编程,学习目标,了解Java的发展史 了解Java的特点 了解Java的运行和开发环境 掌握如何通过JDK开发Java程序 掌握Java程序的基本结构 掌握什么是封装 掌握创建包和引入包语句的用法 掌握注释的用法 掌握什么是关键字和标识符 掌握Java编程规范 掌握如何使用JDK API文档,2,Java发展史,1991 年Sun 公司的 James Gosling等人开始开发名称为 Oak 的语言。希望用于控制嵌入在有线电视交换盒、PDA等的微处理器。 1993 年交互式电视和 PDA 市场开始滑坡,而 Internet 正处于增长时期,因此Sun

2、公司将目标市场转向 Internet 应用程序。 1995年将Oak语言更名为Java。 1996年Sun 公司发布了JDK 1.0。 1998年Sun公司发布了JDK 1.2。 1999年Sun把Java 2技术分成J2SE、J2EE、J2ME 2004年J2SE 1.5发布,对外版本号J2SE 5.0 2006年发布Java SE 6.0,3,Java的基本特点(1),简单 面向对象 分布式,4,Java的风格类似于C+,因而对C+程序员而言非常容易掌握Java编程技术; Java摒弃了C+中容易引发程序错误的地方,如指针操作和内存管理;,在 Java 中任何东西都是对象,因此,重点集中在

3、数据以及应用程序中的数据操作方法。,Java提供了包容广泛的例程库,可处理像HTTP和FTP这样的TCP/IP协议。Java应用程序可通过一个特定的URL来打开并访问对象,就像访问本地文件系统那样简单。,Java语言提供的安全 编译器提供的安全 字节码校验器 类加载器,Java的基本特点(2),健壮性 安全 体系结构中立 可移植性,5,Java在编译和运行程序时都要对可能出现的问题进行检查 它提供自动垃圾收集来进行内存管理 面向对象的异常处理机制,Java 程序被编译成一种与体系结构无关的字节代码 只要安装了Java运行时系统Java程序可以在任意的处理器上运行,源代码级 目标代码级,Java

4、的基本特点(3),解释执行 高性能 多线程 动态,6,编译器 javac 将处理.java源文件生成类文件 类文件可通过名称为 java 的加载实用程序解释执行,将Java 字节码转换为机器可执行代码。,通过JIT编译器首先将字节码编译成固有代码,将结果缓存下来,然后在需要时调用它们。,Java语言内置支持多线程的功能 Java 类库提供了 Thread 类,Java自身的设计使它适合于一个不断发展的环境。在Java类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。,Java 程序的运行环境,7,Java虚拟机,Java是解释执行的高级编程语言,Java虚拟机 (1),Java虚

5、拟机是一种利用软件方法实现的抽象化的计算机,基于下层的操作系统和硬件平台,可以在上面执行Java的字节码程序。 Java虚拟机将在内部创建一个运行时系统,帮助以下列方式执行代码: 加载 .class 文件 管理内存 执行垃圾收集,8,Java虚拟机 (2),由于硬件平台不一致,因此Java虚拟机使用了堆栈帧的概念,用来存放下列信息: 表示方法状态的帧 字节码操作数 传递给方法的参数 局部变量,9,Java 运行时环境,10,垃圾收集(1),Java 虚拟机使用两个独立的堆内存,分别用于静态内存分配和动态内存分配。 其中一个是非垃圾收集堆内存,用于存储所有类定义、常量池和方法表。 另一个堆内存再

6、分为两个可以根据要求往不同方向扩展的小块。 用于垃圾收集的算法适用于存放在动态堆内存中的对象。,11,垃圾收集 (2),垃圾收集器将在收集对象实例之前调用 finalize 方法。 即使显示调用垃圾收集 (System.gc( ) 方法,它也不能保证立即运行。 垃圾收集线程的运行优先级很低所以可能经常会被中断。,12,Java 的编辑环境,JDK是有助于程序员开发Java 程序的 Java 开发工具包包括: 类库 编译器 调试器 Java 运行时环境( JRE ),13,JDK 提供的常用工具,javac 是用来编译源代码的命令。 java 是用于执行类文件的命令,而类文件将在 Java 虚拟

7、机中运行类。 appletviewer 命令允许在万维网浏览器的环境之外运行 Applet。,14,Java Application程序基本结构,15,第一个 Java 程序,/这是名称为“HelloWorld.java”的简单程序 import java.io.*; class HelloWorld public static void main(String args )/只能调用静态方法 System.out.println(“欢迎访问 Java 世界!“); ,16,在记事本编辑Java程序,/这是名称为“HelloWorld.java”的简单程序 import java.io.*;

8、class HelloWorld public static void main(String args ) System.out.println(“欢迎访问 Java 世界!“); ,17,单击 开始,依次选择 程序-附件 -记事本,编译和运行,18,单击 开始,依次选择 程序-附件 -命令提示符,进入程序所 保存的目录,输入命令编译 HelloWorld,输入命令执行 HelloWorld,输出 结果,类和对象,类是具有共同属性和行为的对象的抽象 类可以定义为数据和方法的集合 类也称为模板,因为它们提供了对象的基本框架,19,类,对象,抽象,实例化,属性或状态,操作或行为,数据或变量,方法

9、,封装的实体=数据+方法,创建类,class name type variable1; type variableN; type methodname1(parameter-list) /方法体 type methodnameN(parameter-list) /方法体 ,20,在类中,属性是通过成员变量体现的,而操作是用成员函数(又称为方法)实现的。,Java中定义类的通用格式:,成员变量(对象属性),成员方法 (对象行为或操作),类和对象举例(1),21,public class Doll /* * 福娃的名字 */ private String name; public Doll(Str

10、ing name) =name; /* * 福娃说话 */ public void speak() System.out.println(name); ,类和对象举例(2),22,public class AppMain /* * 应用程序的入口方法 */ public static void main(String args) Doll beibei=new Doll(贝贝); /创建福娃贝贝 Doll jingjing=new Doll(晶晶); /创建福娃晶晶 Doll huanhuan=new Doll(欢欢); /创建福娃欢欢 Doll yingying=new D

11、oll(迎迎); /创建福娃迎迎 Doll nini=new Doll(“妮妮”); /创建福娃妮妮 beibei.speak(); /福娃贝贝说话 jingjing.speak(); /福娃晶晶说话 huanhuan.speak(); /福娃欢欢说话 yingying.speak(); /福娃迎迎说话 nini.speak(); /福娃妮妮说话 ,Java源文件的结构,零个或多个包声明语句 零个或多个包引入语句 零个或多个类的声明 零个或多个接口声明 每个源文件可包含多个类或接口的定义,但是至多只有一个类或接口是public的 Java源文件中必须以其中public 类型的名字命名,23,声

12、明属性,24,语法格式: type =defaultValue ; 举例: public class Person private int age; public String name = “Lila”; ,定义方法,定义方法的一般格式: access type methodname1(parameter-list) /方法体 ,25,发往某个对象的消息对应于一个方法调用。作为对消息的响应,对象将执行一个类似于过程体的方法。方法是包含在类中的函数。,举例: public void setdate(int day, int month, int year) day=23; month=7; y

13、ear=2003; ,构造方法,构造方法名称与类名称相同 构造方法没有返回类型 其任务是在创建对象时初始化其内部状态,26,class Student int number; String name; int age; Student(int num, String na, int a) number = num; name = na; age = a; ,默认的构造方法(1),Java语言中,每个类都至少有一个构造方法 如果类的定义者没有显示的定义任何构造方法,系统将自动提供一个默认的构造方法: 默认构造方法没有参数 默认构造方法没有方法体 Java类中,一旦类的定义者显示定义了一个或多个构

14、造方法,系统将不再提供默认的构造方法,27,默认的构造方法(2),类的定义:public class Person private int age; public void setAge(int w) age = w; 等价于: public class Person private int age public Person() public void setAge(int w) age = w; 应用举例:public class Test public static void main(String args) Person d = new Person() ; d.setAge(120

15、); ,28,创建对象,使用下列语法可创建对象: new 构造函数 关键字 new 通常称为创建运算符,用于分配对象内存,并将该内存初始化为缺省值。 一旦 new 完成分配和初始化内存,它就将调用构造函数来执行对象初始化。,29,当创建一个类时,只是创建了一种新的数据类型。对象是类的一个实例。,class FruitDemo public static void main(String args) Fruit f = new Fruit(true,false,50.0F); ,创建对象,面向对象的应用举例(1),程序BirthDate.java : public class BirthDate

16、 private int day; private int month; public int year; public void setDay(int d) day = d; public void setMonth(int m) month = m; public void setYear(int y) year = y; public int getDay() return day; public int getMonth() return month; public int getYear() return year; public void show() System.out.pri

17、ntln(day + - + month + - + year); ,30,面向对象的应用举例(2),程序ObjectOperating.java : public class ObjectOperating public static void main(String args) BirthDate b = new BirthDate(); b.setDay(25); b.setMonth(12); b.setYear(2003); b.day = 2; /错误 b.year = 2003; b.show(); ,31,信息的封装和隐藏(1),使用者对类内部定义的数据(对象的成员变量)的直接

18、操作会导致数据的错误、混乱或安全性问题 示例: public class Person public int age; public class Test public static void main(String args) Person b = new Person(); b.age = -3; ,32,信息的封装和隐藏(2),Java中通过将数据封装、声明为私有的(private),再提供一个或多个公开的(public)方法实现对该属性的操作,以实现下述目的: 隐藏一个类的实现细节 使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作 便于修改,增强

19、代码的可维护性,33,信息的封装和隐藏(3),34,示例: class Person private int age; public void setAge(int i) if(i130) return; age = i; public int getAge() return age; public class Test public static void main(String args) Person b = new Person(); b.setAge(3); b.setAge(300); System.out.println(b.getAge(); ,package语句(1),为便于

20、管理大型软件系统中数目众多的类,解决类的命名冲突问题,Java引入包(package)机制,提供类的多重类命名空间,35,package语句(2),package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包,若缺省该语句,则指定为无名包,它的格式为: package pkg1.pkg2.pkg3; 举例:Test.java package p1; public class Test public void display() System.out.println(in method display(); Java编译器把包对应于文件系统的目录管理,package语句中,用.

21、 来指明包(目录)的层次,36,JDK中主要的包介绍,37,java.lang-包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。 java.awt-包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。 java.applet-包含applet运行所需的一些类。 -包含执行与网络相关的操作的类。 java.io-包含能提供多种输入/输出功能的类。 java.util-包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。,import

22、语句,为使用定义在不同包中的Java类,需用import语句来引入所需要的类 语法格式: import package1.package2. (classname |*); 应用举例: import p1.Test; /import p1.*; public class TestPackage public static void main(String args) Test t = new Test(); /Test类在p1包中定义 t.display(); ,38,import 语句分析,对于 import java.awt.*; 将按照路径: CLASSPATH javaawt 来查找所

23、需的外部类。 环境变量CLASSPATH是用来指示Java程序所引用的外部类所在的一系列相对路径,39,Java 注释,Java语言中定义了三种注释形式: / 单行注释-注释到行尾 /* 单行或多行注释 */ /* 可以用于文档化处理的单行或多行注释 */ JDK中提供了一个文档自动生成工具javadoc,在自定义类中public的成员前以/*/形式加入的注释内容均可被自动提取到生成的说明文档中。 用法:javadoc source.java,40,关键字和保留字,关键字和保留字 关键字:首先它是合法的标识符,然后它是程序设计语言专用的,不允许编程人员使用 保留字:保留未用的标识符 true、false,null具有特定的意义,一般不算关键字 Java语言的关键字有: assert、enum、abstract、boolean、break、byte、case、catch、char、class、c

温馨提示

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

评论

0/150

提交评论