JAVA开发技术培训_第1页
JAVA开发技术培训_第2页
JAVA开发技术培训_第3页
JAVA开发技术培训_第4页
JAVA开发技术培训_第5页
已阅读5页,还剩145页未读 继续免费阅读

下载本文档

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

文档简介

1、JAVA开发技术培训目录 第一章 Java概述 一、 Java简介和发展史 二、 Java的特点 三、 Java核心技术目录 第二章 Java语言基础 一、基本数据类型 二、引用数据类型 三、运算符和表达式 四、语句和流程控制 五、常用算法 六、方法、类、对象 七、类的封装、继承和多态 八、抽象类、接口和内部类目录 第三章 JDK技术 一、JDK简介和API整体介绍 二、语言核心包 三、常用工具包 四、JDK版本新特性目录 第四章 Java平台技术 一、Java版本介绍 二、JVM虚拟机 三、Java反射机制 四、异常处理 五、线程和IO流操作 六、网络编程目录 第五章 Java开发规范 一、

2、开发规范 二、学习技巧 三、编程技巧 目录 第六章 Java开发环境 一、Java开发环境搭建 二、SVN简介 三、断点测试和单元测试 四、构建工具简介第1章 Java概述 Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。从本章开始,我们将走入Java的世界,学习Java的工作原理,环境搭建,以及开发第一个Java程序。1.1 Java简介 Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。它是由Sun Microsyst

3、ems公司于1995年5月推出的Java程序设计语言和Java平台(即Java SE、Java EE、Java ME)的总称。1.1 Java简介Java之父之父James Gosling James Gosling以以“Java技术之父技术之父”而而闻名于世。他是闻名于世。他是Java 技术的创始人,他技术的创始人,他亲手设计了亲手设计了Java语言,并开发了语言,并开发了Java编译编译器器和和Java虚拟机虚拟机,使,使Java成为了世界上最成为了世界上最流行的开发语言。流行的开发语言。Java支持的计算模式,支持的计算模式,已经成为了互联网的标准编程模式以及已经成为了互联网的标准编程模

4、式以及分布式企业级应用的事实标准。分布式企业级应用的事实标准。 詹姆斯詹姆斯戈士林现任戈士林现任Sun公司公司副总裁及副总裁及Sun研究院院士。研究院院士。 1.1.1 Java发展历史 1995年5月23日,Java语言诞生,Sun公司发布第1版Java开发工具包(Java Development Kit,JDK)。 1996年1月,JDK1.0和HotJava诞生, HotJava通过嵌入在Web网页中的Applet运行Java程序。 1998年12月4日,Sun发布了Java的历史上最重要的一个JDK版本:JDK1.2。这个版本标志着Java已经进入Java 2时代。这个时期也是Java

5、飞速发展的时期。 1999年6月,SUN公司发布Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)。 1.1.1 Java发展历史 2004年10月,Sun发布了JDK1.5。同时,Sun将 JDK1.5改名为J2SE5.0。 2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME。 2009年4月20日,甲骨文公司(Oracle)以74亿美元收购Sun,取得Java的版权。 2011年7月,甲骨文公司

6、发布Java7的正式版。1.2 Java的特点1. 平台无关性平台无关性n 平台无关性平台无关性指一个应用程序能够运行于不同的操作指一个应用程序能够运行于不同的操作 系统平台系统平台。n Java采用虚拟机技术支持平台无关性。采用虚拟机技术支持平台无关性。 Java虚拟机虚拟机(JVM)是一套支持是一套支持Java语言运行的软件语言运行的软件系统,运行于操作系统之上。系统,运行于操作系统之上。n Java语言本身设计也体现出平台无关性。语言本身设计也体现出平台无关性。1.2 Java的特点2.完全面向对象和简单性完全面向对象和简单性n 完全面向对象:完全面向对象:所有设计都必须在类中实现,一个

7、所有设计都必须在类中实现,一个Java程序就是多个类的集程序就是多个类的集合。合。n 语法:语法:放弃了放弃了C+语言的全程变量、语言的全程变量、goto语句、宏定义、全局函数以及结构语句、宏定义、全局函数以及结构、联合和指针数据类型。、联合和指针数据类型。n 面向对象概念:面向对象概念:放弃了多重继承、友元类和运算符重载,采用放弃了多重继承、友元类和运算符重载,采用“单重继承单重继承+ + 接口接口”的方式代替多重继承,提供语言级的内存自动管理和异常处理方式。的方式代替多重继承,提供语言级的内存自动管理和异常处理方式。3.可靠性可靠性n 语言级别语言级别: : (1)(1)提供提供严密的语法

8、规则严密的语法规则,在编译和运行时进行严格检查,降低,在编译和运行时进行严格检查,降低程序出错的可能性。程序出错的可能性。 (2) (2)提供提供异常处理机制异常处理机制,是程序具备在运行过程中及时发现并处理运行时错,是程序具备在运行过程中及时发现并处理运行时错 误的能力,保证误的能力,保证Java程序运行的稳定和可能。程序运行的稳定和可能。n 运行架构级别:运行架构级别:提供提供资源回收机制资源回收机制,对内存资源进行自动管理,跟踪程序使,对内存资源进行自动管理,跟踪程序使用的所有内存资源,自动回收不再被使用的内存资源。用的所有内存资源,自动回收不再被使用的内存资源。 1.2 Java的特点

9、4.安全性安全性n 采用采用域管理方式的安全模型域管理方式的安全模型,无论是本地代码还是远程代码,都可以通过,无论是本地代码还是远程代码,都可以通过配置策略设定可访问的资源域。这种策略使配置策略设定可访问的资源域。这种策略使未经授权的代码未经授权的代码不能对用户本不能对用户本地资源进行操作,更好地支持了企业级应用,也消除了区分本地代码和远地资源进行操作,更好地支持了企业级应用,也消除了区分本地代码和远程代码带来的困难。程代码带来的困难。5.多线程多线程n 多线程机制使一个进程能够被划分成多个线程,每个线程执行一个多线程机制使一个进程能够被划分成多个线程,每个线程执行一个特定功特定功能能,多个线

10、程能够,多个线程能够并发执行并发执行。6.直接支持分布式的网络应用直接支持分布式的网络应用n JSP提供服务器端的动态提供服务器端的动态Web页面设计,功能更强,效率更高。页面设计,功能更强,效率更高。n Java核心类库包括一个支持核心类库包括一个支持HTTP、SMTP和和FTP等基于等基于TCP/IP协议的类库协议的类库,使得,使得Java应用程序应用程序可凭借可凭借URL打开并访问网络上的对象打开并访问网络上的对象,其访问方式与,其访问方式与访问本地文件系统完全相同。访问本地文件系统完全相同。1.3 Java核心技术n JDBC(Java Database Connectivity) 即

11、即Java数据库连接数据库连接,定义,定义Java应用程序与关系型数据库连接的规范。应用程序与关系型数据库连接的规范。n JSP JSP是是Sun公司推出的一种公司推出的一种动态网页技术标准动态网页技术标准,一种运行于,一种运行于Web服务器端的服务器端的标记语言,它能够将标记语言,它能够将Java语言直接嵌入到语言直接嵌入到HTML文档中,可以建立跨平台、文档中,可以建立跨平台、安全、高效的动态网站。安全、高效的动态网站。n JavaBeans和和EJB JavaBeans 是是Java的对象组件技术的对象组件技术,提供组件复用的关键技术,类似于,提供组件复用的关键技术,类似于W Windo

12、ws的的ActiveX。在。在JSP中可以使用中可以使用JavaBeans。 EJB(Enterprise JavaBeans)提供企业级提供企业级JavaBeans。第2章 Java语言基础 本章将介绍Java语言中的基本数据类型(字符、浮点、常量、变量)和引用数据类型(数组、字符串、集合、泛型)等数据格式,举例各种运算符及相应表达式的作用,讨论Java语句与流程控制;并在此基础上详细说明各种排序算法的内容;最后简要说明Java企业级编程规范。2.1 基本数据类型 数据类型指定了该类数据所占内存空间的大小、取值范围及其可以进行的操作。Java语言中的数据类型可分为基本数据类型和复合数据类型。

13、基本数据类型又称为“原始数据类型”,是其他数据类型的基础。基本数据类型主要包括布尔类型、字符型、整型、浮点型(实型)。2.1.1 Java数据类型一览数数据据类类型型基本数据类型基本数据类型引用数据类型引用数据类型布尔型(布尔型(boolean)数值类型数值类型定点类型定点类型浮点类型浮点类型字符型(字符型(char)字节型(字节型(byte)短整型(短整型(short)整型(整型(int)长整型(长整型(long)单精度(单精度(float)双精度(双精度(double)类类接口接口数组数组2.1.2 基本数据数据类型一览类型位数范围初始值boolean8false、truefalsecha

14、r160 216-1u0000byte8-27 27-1(byte)0short16-215 215-1(short)0int32-231 231-10long64-263 263-10Lfloat321.4E-45 3.4E+380.0Fdouble644.9E-324 1.7E+3080.0D2.1.3基本数据类型变量定义boolean x,y = truechar x = a,y = 97byte x,y = 12,short x,y = 12345int x = 7,y = 1234long x = 9876L,y = 6float x = 0.56F,y = 123.4fdouble

15、 x = 7,y = -12345.6d2.1.4 变量与常量 变量与常量是程序中的基本数据元素。变量代表运行过程中值可以改变的数据,常量代表运行过程中值恒定不变的数据。 变量的4个基本要素:名字、类型、值和作用域。 (1)变量声明:修饰符 类型 变量 =表达式,变量= 表达式 举例:private char x = a ; public static int a=7; (2)变量参与的运算和操作 取决于变量的数据类型。 最终变量Java语言提供一种特殊的变量,只能进行一次赋值。采用关键字final声明。 举例:final int value; /声明最终变量,声明时没有赋值 value=10

16、0; /最终变量只能进行一次赋值 2.1.5 变量与常量 直接常量指在程序中直接引用的常量,包括数值型常量和非 数值型常量。 数值型常量包括整数和浮点数; 非数值型常量包括字符常量、字符串常量和布尔常量。 符号常量以标识符形式出现的常量,在程序中不能改变其值,采用关键字final声明。Java语言约定常量标识符全部用大写字母表示。 举例:final int MAX=10; 2.2 引用数据类型 除了简单数据类型外,Java语言还定义了许多复合数据类型,如数组、字符串、集合等。这些复合数据类型都是以类的形式进行定义的,包含许多属性和方法。综合使用简单数据类型和复合数据类型,可以处理实际需求中遇到

17、的各种数据形式,能够编写更加复杂的程序。2.2.1 声明数组 数组是Java语言中的一种复合数据类型,是具有相同数据类型的数据集合。数组中的每个数据称为数组元素,数组元素是有序的。 声明数组:数组类型 数组名格式格式1:类型名 数组名;格式2:类型名 数组名;举例int a,b;/等价于 int a,b;int a,b;/此处的b不是数组类型float a10; /格式非法2.2.2 创建与引用数组 要想数组能被真正使用,只定义数组是不够的,还需要为其分配内存空间和初始化。格式:数组名 = new 类型名长度;举例a = new int20;float f = new float100;int

18、 len = 10,a = new intlen; 数组创建完成后即可使用。数组的使用最普遍的就是访问数组的元素。格式:数组名下标值数组的下标值从0开始计例如:a2 = 30;2.2.3 二维数组 由于数组的数据类型可以是各种Java数据类型,当然也包括数组类型。这种数组类型的数组就构成了多维数组。实际上二维数组是以一维数组为元素构成的数组。 定义二维数组 int mat; /声明一个二维数组变量mat mat = new int23; /申请23个存储单元 int mat = new int23; /声明和申请存储空间可以合起来写 int mat = 1,2,3,4,5,6; /声明时可以为

19、二维数组赋初值, 将值用多层花括号括起来 二维数组变量下标下标;matij /表示第i行第j列的数组元素2.2.4 字符串 字符串是Java中经常使用的复合数据类型。在本质上,字符串实际上为char型数组。字符串由Java.lang.String类来表示,该类具有一系列的属性和方法,提供对字符串的各种操作。除了String类,Java还提供了StringBuffer类用来处理可变长度的字符串。2.2.5 创建字符串 同其他类型数据一样,要想使用字符串数据,首先需要创建字符串。创建字符串的语法格式如下图所示。 String作为类,具有不同的构造方法。比较特殊的是,String可以同Java中的基

20、本数据类型一样使用,由系统自动完成创建。作为基本数据类型使用的语法格式如下所示。2.2.6 比较字符串 在实际编程过程中,经常需要对两个字符串变量的内容进行比较。Java语言中的String类提供了几个方法分别适合不同情况的字符串比较,如下表所示。 注意:比较字符串值是否相等不能使用= =。当用= =来比较两个对象时,实际的运算是判断是否为同一个对象。即使内容相等,如果为不同的对象,也就是对应的是不同内存地址,返回值也为false。方方 法法 名名 称称方方 法法 功功 能能equals()比较两个字符串的内容是否相等,返回比较两个字符串的内容是否相等,返回boolean值值equalsIgn

21、oreCase()忽略大小写,比较两个字符串的内容是否相等,返回忽略大小写,比较两个字符串的内容是否相等,返回boolean值值compareTo()按词典顺序比较字符串,返回按词典顺序比较字符串,返回int值值2.2.7 字符串其他常用操作 字符串String作为数组和类,本身提供了许多方法用来进行各种复杂操作。下表列出了字符串一些常用方法及简单说明。 字符串的操作方法很多,上面仅列出了一些常用的,实际编程过程中可以查看相关API。方方 法法 名名 称称方方 法法 功功 能能length()返回字符串的长度返回字符串的长度toLowerCase()将其中的英文字母转换为小写将其中的英文字母转

22、换为小写toUpperCase()将其中的英文字母转换为大写将其中的英文字母转换为大写charAt(int index)返回指定索引处的字符返回指定索引处的字符indexOf(String str)返回指定字符串第一个找到的索引位置返回指定字符串第一个找到的索引位置substring(int beginIndex)返回指定索引处到字符串末尾的子串返回指定索引处到字符串末尾的子串substring(int beginIndex, int endIndex)返回指定索引范围的子串返回指定索引范围的子串2.2.8 StringBuffer类 String对象的长度是不可改变的,如果使用String类

23、频繁地进行字符串拼接操作,那么会产生很多对象。针对此类性能问题,Java语言提供了另一个类StringBuffer可以特别用来处理此类问题。StringBuffer类主要包含如下一些常用方法,如下表所示。方方 法法 名名 称称方方 法法 功功 能能length()返回字符串序列的长度返回字符串序列的长度insert()在字符串中间插入(提供了参数不同的多个方法)在字符串中间插入(提供了参数不同的多个方法)append()在字符串末尾追加(提供了参数不同的多个方法)在字符串末尾追加(提供了参数不同的多个方法)setCharAt(int index, char ch)设置指定索引位置为指定字符设置

24、指定索引位置为指定字符toString()返回字符串返回字符串2.2.10 数据集合 集合是多个对象的容器,容器里聚集了一组对象。如果需要将不同数据类型的多个对象组织在一起,就需要使用集合。在Java语言中,集合本身是一个框架体系,包含各种集合类。 集合框架包括各类集合接口、接口实现类、集合操作,通过继承关系形成自上而下的体系结构。集合框架的核心接口为Collection、List、Set和Map。2.2.11 集合框架 从图中可以看出,List和Set继承了Collection,Map则独成一体。 Collection接口是Java集合框架的最顶层接口。Collection中存放的对象允许重

25、复,没有顺序。Collection接口定义了一系列的操作集合中元素的基本方法。 List接口继承自Collection接口。List提供了对象的有序存放,其中存放的对象也允许重复。在Collection接口定义的方法基础上,List接口进行了扩展,定义了一些与顺序操作相关的方法。 Set接口也继承自Collection接口。Set更像数学概念中的集合,存放的对象不允许重复,也没有顺序。Set接口没有对Collection接口进行扩展。 Map接口是相对独立的。Map提供了一种“键-值”对映射的方式存放对象。Map接口定义了一组专门的处理该结构数据的方法。2.2.12 列表(List) List

26、提供了对象的有序存放,其中存放的对象允许重复。List接口的具体实现类主要有ArrayList和LinkedList。其中ArrayList以一种类似数组的形式存储对象,对象的随机访问速度较快。LinkedList实现机制是采用链表,适合于在链表中间需要频繁进行插入和删除对象的操作。在实际的编程过程中,可以根据具体需要进行相应选择。 实例: List arrList=new ArrayList(); arrList.add(a); arrList.add(b);2.2.13 集合(Set) Set中存放的对象不允许重复,没有顺序。Set接口的具体实现类有HashSet和TreeSet。其中Ha

27、shSet能快速定位一个元素,但是放到HashSet中的对象需要实现hashCode()方法。TreeSet将放入其中的元素按顺序存放,要求放入其中的对象是可排序的。 实例: Set set=new HashSet(); set.add(a); set.add(b);2.2.14 映射(Map) Map提供了一种“键-值”对映射的方式存放对象。其中键和值也都可以是对象。对于键对象来说,像Set一样,一个Map容器中的键对象不允许重复。这就保证了键的唯一性,可以根据键对象快速定位值对象。对于值对象来说,则没有唯一性的要求,可以将任意多个键都映射到一个值对象上。Map接口的具体实现类有HashMa

28、p和TreeMap。其中HashMap也用到了哈希码的算法,以便快速查找一个键。TreeMap则是对键按序存放,要求放入其中的对象是可排序的。 实例:2.2.15 泛 型 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。 使用泛型编写的程序具有更好的安全性和可读性。泛型的使用范围很广,可以应用于集合类、定义泛型类、泛型方法等。2.2.16 泛型在集合中的应用 泛型

29、对集合类来说有着非常重要的作用。在集合中引入泛型,能够提供编译时的类型安全,并且从集合中取得元素后不必再强制转换,简化了程序代码。定义泛型集合的语法格式如图6.13所示。 其中,参数CollectionType表示集合类型,可以为任意List、Set、Map等集合类型。参数为泛型标识。参数datatype表示集合元素的数据类型,可以是Java语言中的各种数据类型。参数collectionName表示集合名称,可以由用户任意定义,但需要符合Java标识符的命名规范。2.2.17 定义泛型类 泛型类是指包含类型参数的类。在泛型类的内部,类型参数可以用作变量的类型或方法返回参数的类型。另外,一个泛型

30、类可以包含多个类型参数。定义泛型类的语法格式如图6.14所示。2.2.18 创建泛型方法 与泛型类类似,包含类型参数的方法即为泛型方法。同样,一个泛型方法也可以包含多个类型参数。定义泛型方法的语法格式如图6.15所示。2.2.19 使用泛型通配符 泛型一个重要的特点是可以使用“?”作为通配符,以此来匹配任何数据类型。泛型通配符的格式如下所示。 因为Object是所有对象类型的父类(包括String),所以想象中List也应该为List的父类,那么上述代码应该没有问题。实际情况却不是这样,编译该程序时系统给出“Type mismatch: cannot convert from List to

31、List”错误。原来对于泛型来说,因为其类型是可变的,List是其他List父类的说法已经不再成立。那么什么是List的父类呢?答案就是包含通配符的List。2.2.20 泛型实例在泛型接口、泛型类和泛型方法的定义过程中,我们常见的如T、E、K、V等形式的参数常用于表示泛型形参2.3 运算符与表达式 表达式是具有确定值的语句,由操作数和各种运算符按照一定的规则组成,来完成相应的运算。表达式的值可以作为操作数,进而形成更复杂的表达式。对于各种运算符及其对应的表达式,下面分别进行介绍。2.3.1 运算符 运算符是一种特殊符号,用以表示数据的运算、赋值和比较,一般由一至三个字符组成分类运算符号算术运

32、算+、-、*、/、%、+、-比较运算、=、=、!=逻辑运算&、| 、 !、 &、 |、位运算&、|、10&b10;2.4 语句与流程控制 语句是编写Java程序的基本代码,语句主要分为以下几种:1、变量说明语句:int a,b,c = 5;2、赋值语句:a = 10;b = new int10;3、复合语句:使用 括起来的若干语句4、控制语句:条件、循环、break、continue5、方法调用语句:System.out.println(“OK!”);6、return语句:用于从方法中返回一个值7、import语句:用于导入所需要的类8、package语句:用于

33、定义类所在的包 程序的执行流程是多种多样的。既可以自上而下的顺序执行,又能够在遇到某些条件时进行跳转,还能够对某些操作重复执行。为了控制程序的执行流程,需要使用流程控制语句。流程控制主要包括顺序结构、选择结构、循环结构以及跳转语句。2.4.1 流程控制分类语句1(a) 顺序结构语句2(b) if-else二路分支结构语句1布尔表达式?语句2入口点出口点入口点出口点truefalse(c) while循环结构语句布尔表达式?入口点出口点truefalse2.4.2 语句分类2.4.3 控制语句类型格式说明条件语句ifif elseswitch表达式的值必须是boolean类型if (2) 是错误

34、的可以嵌套构成多分支条件语句注意switch中的break语句循环语句forwhiledowhile表达式的值必须是boolean类型可以嵌套构成多层循环break和continue的作用带标号的break和continue语句2.4.4 控制语句实例1 If 语句实例 Switch语句实例2.4.5 控制语句实例2 for 语句实例2.4.6 控制语句实例3 while 语句实例 do-while语句实例2.5 常用算法 排序算法有很多,所以在特定情景中使用哪一种算法很重要。为了选择合适的算法,可以按照建议的顺序考虑以下标准: (1)执行时间 ;(2)存储空间 ;(3)编程工作 。 对于数据

35、量较小的情形,(1)(2)差别不大,主要考虑(3);而对于数据量大的,(1)为首要标准。 主要排序法有: 一、冒泡(Bubble)排序相邻交换 二、选择排序每次最小/大排在相应的位置 三、插入排序将下一个插入已排好的序列中 四、希尔(Shell)排序缩小增量 五、归并排序 六、快速排序 七、堆排序 2.5.1 冒泡排序 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。2.5.2 选择排序 选

36、择排序是一种简单直观的排序方法,每次寻找序列中的最小值,然后放在最末尾的位置。2.5.3 插入排序 插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。2.5.4 希尔(Shell)排序 希尔排序的原理:根据需求,如果你想要结果从大到小排列,它会首先将数组进行分组,然后将较大值移到前面,较小值移到后面,最后将整个数组进行插入排序,这样比起一开始就用插入排序减少了数据交换和移动的次数,可以说希尔排序是加强版的插入排序2.5.5 归并排序 归并排序是将两个(或两个以上)有序表合并成一个新的有序表 即把待排序序列分为若干个子序列,每个子序列是有序的。

37、然后再把有序子序列合并为整体有序序列 2.5.6 快速排序 快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。2.5.7 堆排序 堆排序是一种利用完全二叉树这种数据结来对数组排序的高效算法,合法的最大堆树要满足一个条件就是每一个结点值都要大于或等于它的孩子结点值。处理的思想和冒泡排序,选择排序非常的类似,一层层封顶,只是最大元素的选取使用了最大堆。最大堆的最大元素一定在第0位置,构建好堆之后,交换0

38、位置元素与顶即可。2.6.1 面向对象基本概念 面向对象的程序设计(Object Oriental Programming,OOP)思想:最近十年发展起来的程序设计模式,其目标是将软件系统待处理问题或者事务抽象为对象(Object),由于对象本身具有一定的特征和行为,因此可以通过对象间的消息传递的方式驱动对象的动作,进而实现软件系统的功能。 面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。2.6.2 面向对象设计原则 单一职责原则(SRP):一个类,最好只做一件事,只有一个引起

39、它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。 开放封闭原则(OCP):软件实体应该是可扩展的,而不可修改的。也就是,对扩展开放,对修改封闭的。 依赖倒置原则(DIP):依赖于抽象。体现为高层模块不依赖于底层模块,二者都同依赖于抽象;抽象不依赖于具体,具体依赖于抽象。 接口隔离原则(ISP):使用多个小的专门的接口,而不要使用一个大的总接口。体现为接口应该是内聚的,应该避免“胖”接口。一个类对另外一个类的依赖应该建立在最小的接口上,不要强迫依赖不用的方法。 里氏替换原则(LSP):子类必须能够替换其基类。体现

40、为对继承机制的约束规范,只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础。2.6.3 方法的定义 Java方法是组合在一起来执行操作语句的集合。 方法声明: 修饰符: 修饰符是可选的,告诉编译器如何调用该方法。这定义了该方法的访问类型。 返回类型: 方法可以返回一个值。有些方法没有返回值执行所需的操作。在这种情况下,返回类型是关键字void。 方法名称: 这是方法的实际名称。方法名和参数列表一起构成了方法签名. 参数列表: 参数像一个占位符. 当调用一个方法,传递一个值给参数。这个值被称为实际参数或参数。 参数列表是指类型,顺序和方法的参数的个数. 参数是可选的,

41、也就是说,一个方法可以包含任何参数。 语句序列:描述实现该方法所要求功能的操作,最后用return语句给出方法返回值,该值的数据类型必须与方法声明的返回值类型匹配;没有返回值时,该语句可以省略2.6.4 类的定义 类与对象是进行面向对象编程的基础。类是具有相同属性特征和行为规则的多个对象的一种统一描述,对象是对类的实例化。在Java语言中,类是一种最基本的复合数据类型,是组成Java程序的基本要素。 类的声明:修饰符可以是:public final abstract;类关键字:class ;类名:可以自定义,首字母大写,要做到见名知义;成员变量用来刻画类的属性(状态);成员方法用来刻画类的功能

42、;通过成员方法可使实现对成员变量的操作2.6.5 对象的定义 对象是对类的实例化。对象具有状态和行为,变量用来表明对象的状态,方法表明对象所具有的行为。 对象是动态的,每个对象都有自己的生存周期,都会经历一个从创建、运行到消亡的变化过程。 任何一个对象都有其所属的类。使用对象首先需要声明对象所属的类,再使对象获得一个类的实例,引用对象的成员变量和调用对象的方法,使用完后释放对象。 对象声明: MyDate d; /声明d是MyDate类的一个对象 创建实例:d=new MyDate(); /创建类MyDate的一个实例赋值给对象 MyDate d=new MyDate(); /声明对象,创建实

43、例并赋值 d.year =2008;2.7.1类的三大特性 面向对象中的类具有封装、继承与多态的特性,这也是面向对象编程所具有的重要特点。 类的封装性:类封装了一类对象的状态(成员变量)和功能(成员方法) 类的继承性:可在已有类的基础上进行扩展,产生子类,实现代码重用和功能的扩充 类的多态性:方法的重载(静态)和覆盖(动态)2.7.2 类的封装性 封装是指隐藏对象的属性及实现细节,对外仅提供接口可见。封装实现了信息隐藏,有利于软件复用。这种技术带来的好处是达到了模块化的标准,从而提高了代码的复用程度。在某种程度上,封装也大大改善了软件开发的可维护性,降低了构建复杂软件系统的风险。 封装实例:

44、public class MyDate private String year; private String month; private String date; public String getYear() return year; public void setYear (String year) this. year = year; 2.7.3 类的继承性 继承是指一个类是从另一个类派生而来的,派生类自动具有了被继承类的所有特性。其中被继承的类称为“父类”,继承父类的类称为“子类”。继承可以使子类具有父类的各种属性和方法,而不需要再次编写相同的代码。继承也极大地促进了软件的复用,而

45、且继承的形式可以更加复杂。 继承举例: public class SonDate extends MyDate private String hours; public String getHours() return hours; public void setHours (String hours) this. hours = hours; 2.7.4 类的多态性 多态是指对于一种服务功能,可以具有不同的实现方式,即多种形态,多态保证了类中方法设计的灵活性和执行的多样性,使程序具有良好的扩展性。 类的多态性表现为方法的多态和类型的多态。 方法的多态:包括方法的重载和覆盖,为一种功能提供多种

46、实现。 类型的多态:子类是一种父类类型。 多态总结:一、使用父类类型的引用指向子类的对象; 二、该引用只能调用父类中定义的方法和变量; 三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用) 四、变量不能被重写(覆盖),”重写“的概念只针对方法,如果在子类中”重写“了父类中的变量,那么在编译时会报错。2.7.5 类的多态性举例 它表示我定义了一个Animal类型的引用,指向新建的Cat类型的对象。由于Cat是继承自它的父类Animal,所以Animal类型的引用是可以指向Cat类型的对象的。 那么这样做有什么意义呢?因为子类是对父类的一

47、个改进和扩充,所以一般子类在功能上较父类更强大,属性较父类更独特,定义一个父类类型的引用指向一个子类的对象既可以使用子类强大的功能,又可以抽取父类的共性。 所以,父类类型的引用可以调用父类中定义的所有属性和方法,而对于子类中定义而父类中没有的方法,它是无可奈何的;同时,父类中的一个方法只有在在父类中定义而在子类中没有重写的情况下,才可以被父类类型的引用调用;对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法,这就是动态连接。2.8.1 抽象类 抽象类是指包含了抽象方法的类。其中,抽象方法只声明方法名称,而不指明方法体。抽象类比类的继承更高一层,是对类的抽象

48、。抽象类拥有未实现的方法,不能被实例化,只能被继承扩展,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类。 抽象类和普通类的主要有三点区别: 1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。 2)抽象类不能用来创建对象; 3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为abstract类。2.8.2 抽象类实例 抽象类实例:2.8.3 接口 接口是面向对象编程中又一重要概念。在实际问题中,有些互不相关的类具有

49、某种相同的行为,这时可以采用接口来定义这种行为。接口只定义提供什么功能,而不定义功能的具体实现,这一点与抽象类似。在Java语言中,不提供类的多继承,一个子类只能继承自一个父类。为了解决多继承的问题,在Java中可以采用接口来实现。一个类虽然不能同时继承多个类,却可以同时实现多个接口,从而可以解决现实中的多继承问题。 接口声明:2.8.4 接口实例 接口实例:2.8.5 内部类 内部类指的是在类的内部嵌套定义的类。内部类本身的结构同普通类没什么不同,只不过定义的位置是在另一个类的内部。定义的内部类同样可以被外部引用。 内部类可以随意使用外部类的成员变量(包括私有)而不用生成外部类的对象,这也是

50、内部类的唯一优点。 内部类实例:第3章 JDK核心技术 JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。 JDK是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。 从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Ja

51、va面向对象的设计思想。JDK的另一个显著特点是随着Java (J2EE、J2SE以及J2ME)版本的升级而升级。但它的缺点也是非常明显的就是从事大规模企业级Java应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。3.1.1 JDK简介 JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心Java API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。Java API包括一些重要的语言结构以及基本图形,网络和文件I/O。一般来说,Java API的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境

52、中实现。 作为JDK实用程序,工具库中有七种主要程序:Javac:Java编译器,将Java源代码转换成字节码。 Java:Java解释器,直接从类文件执行Java应用程序字节代码。 appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。 Javadoc:根据Java源码及说明语句生成HTML文档。 Jdb:Java调试器,可以逐行执行程序,设置断点和检查变量。 Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。 Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。3.1.2

53、JDK目录结构3.1.3 JDK API简介 JDK所提供的所有标准Java类都存放在Java包中,如java.lang包中包含了运行Java必不可少的系统类。由于系统会自动将java.lang引入,所以不需要在源文件中用import语句来显示地引入这个包。另外,Java规定过java.util和java.io是必须提供的标准包。3.1.3 JDK API简介包名包名功能功能java.lang( (语言包语言包) )Java语言的核心类库,包括语言的核心类库,包括Object类、基本类、基本数据类型封装类、数学运算等数据类型封装类、数学运算等java.util( (实用包实用包) )工具类库,

54、包含日期类、集合类库等工具类库,包含日期类、集合类库等java.awt( (抽象窗口工具包抽象窗口工具包) )提供构建图形用户界面的类库,包含组件、提供构建图形用户界面的类库,包含组件、事件及绘图功能事件及绘图功能java.applet实现实现Applet应用程序应用程序java.text (文本包)(文本包)Format、DateFormat、SimpleDateFormat等等类提供各种文本或日期格式类提供各种文本或日期格式java.io(输入(输入/输出流包)输出流包)提供标准输入提供标准输入/ /输出流及文件操作类库输出流及文件操作类库(网络包)(网络包)提供与网络编程有关的类库,包括

55、提供与网络编程有关的类库,包括Socket通通信支持、信支持、Internet访问支持等访问支持等java.sql提供数据库应用功能的类库提供数据库应用功能的类库java.swing扩充和增强图形用户界面功能的类库扩充和增强图形用户界面功能的类库3.2 JDK语言核心包 java.langjava.lang:语言包:语言包 这是Java语言的核心包,系统自动将这个包引入到用户程序,该包中主要类有: 1.object类:它是所有类的父类,其中定义的方法其它类都可以使用。 2.数据类型包装类:简单的数据类型的类包装,包括Integer、Float、Boolean等。 3.数学类Math:提供常量和

56、数学函数,包括E和PI常数及abs()、sin()、cos()、min()、max()、random()等方法,这些常量和方法都是静态的。 4.字符串类String和StringBuffer类。 5.系统和运行时类:System类提供一个独立于具体计算机系统资源的编程界面;Runtime类可以直接访问运行时资源。3.2 JDK语言核心包 6.操作类 :Class和ClassLoader类。类Class提供了对象运行时的若干信息,ClassLoader是一个抽象类,它提供了将类名转换成文件名并在文件系统中查找并装载该文件的方法。 7.线程类:Thread类。Java是一个多线程环境,主要有Thr

57、ead(线程建立)、ThreadDeath(线程结束后的清理操作)、ThreadGroup(组织一组线程)和Runnable(建立线程的交互工具)等类。 8.错误和异常处理类:Throwable(所有错误和异常处理的父类),Exception(处理异常,需要用户捕获处理)和Error(处理硬件错误,不要求用户捕获处理)。 9.过程类Process:它支持系统过程,当实用类Runtime执行系统命令时,会建立处理系统过程的Process类。3.3.1 JDK实用包 实用包实用包 实用包提供了各种实用功能的类,主要包括日期类、数据结构类和随机数类等。 1.日期类:包括Date(获取日期和时间)、C

58、alendar(抽象类,日历类)和GregorianCalendar(Calendar类的子类)类。 2.数据结构类:包括链表类LinkedList、向量类Vector、栈类Stack和散列表类Hashtable等。 3.随机数类Random:它封装了Math类中的random方法,并提供了更多的辅助功能。3.3.2 JDK抽象窗口工具包 抽象窗口工具包抽象窗口工具包 Java的java.awt提供了绘图和图像类,主要用于编写GUI程序,包括按钮、标签等常用组件以及相应的事件类。 1.组件类:包括Button,Panel,Label,Choice等类,用于设计图形界面。 2事件包:在java.

59、awt.event中包括各种事件处理的接口和类 3.颜色包:在java.awt.color中提供用于颜色的类。 4.字体包:在java.awt.font中提供用于字体相关的接口和类。3.3.3 JDK其它包 输入输出包输入输出包 java.io提供了系统输入输出类和接口,只要包括输入流类InputStream和输出流OutputStream就可以实现文件的输入输出、管道的数据传输以及网络数据传输的功能。 网络函数包网络函数包 提供了实现网络应用程序的类,主要包括用于实现Socket通信的Socket类,此外还提供了便于处理URL的类。 applet包包 java.applet是专为创建Appl

60、et程序提供的包,它包含了基本的applet类和通信类,目前基本上被JApplet类所代替。3.4.1 JDK 1.6新特性 1 1、DesktopDesktop类和类和SystemTraySystemTray类类 在JDK1.6中,AWT新增加了两个类:Desktop和SystemTray。前者可以用来打开系统默认浏览器浏览指定的URL,打开系统默认邮件客户端给指定的邮箱发邮件,用默认应用程序打开或编辑文件(比如,用记事本打开以txt为后缀名的文件),用系统默认的打印机打印文档;后者可以用来在系统托盘区创建一个托盘程序。 2 2、使用、使用JAXB2JAXB2来实现对象与来实现对象与XMLXML之间的映射之间的映射 JA

温馨提示

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

评论

0/150

提交评论