Java程序设计基础与实践最全完整版ppt课件全套教程

上传人:人*** 文档编号:569246419 上传时间:2024-07-28 格式:PPT 页数:189 大小:1.71MB
返回 下载 相关 举报
Java程序设计基础与实践最全完整版ppt课件全套教程_第1页
第1页 / 共189页
Java程序设计基础与实践最全完整版ppt课件全套教程_第2页
第2页 / 共189页
Java程序设计基础与实践最全完整版ppt课件全套教程_第3页
第3页 / 共189页
Java程序设计基础与实践最全完整版ppt课件全套教程_第4页
第4页 / 共189页
Java程序设计基础与实践最全完整版ppt课件全套教程_第5页
第5页 / 共189页
点击查看更多>>
资源描述

《Java程序设计基础与实践最全完整版ppt课件全套教程》由会员分享,可在线阅读,更多相关《Java程序设计基础与实践最全完整版ppt课件全套教程(189页珍藏版)》请在金锄头文库上搜索。

1、JavaJava程序设计基础与实践程序设计基础与实践第1章面向对象程序设计概述学习目标理解面向过程和面向对象程序设计思想的区别掌握Java语言的基本特点熟悉Java语言的各种开发平台重点难点面向对象程序设计思想的基本概念Java语言的基本特点Java语言开发平台的适用场合JavaJava程序设计基础与实践程序设计基础与实践1.1程序设计思想的发展面向过程的程序设计思想及语言面向对象的程序设计思想及语言JavaJava程序设计基础与实践程序设计基础与实践1.1.1面向过程的程序设计思想及语言“面向过程”是一种以事件为中心的编程思想,即分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,

2、使用的时候一个一个依次调用。面向过程是一种基础的方法,是自上向下步步求精,将一个复杂任务按照功能进行拆分,并逐层细化到便于理解和描述的程度,最终形成由若干独立模块组成的树状结构,所以面向过程最重要的是模块化的设计思想。当程序规模不是很大时,面向过程的方法还会体现出一种优势,因为程序的流程很清楚,按照模块对应函数的方法可以很好地组织。JavaJava程序设计基础与实践程序设计基础与实践1.1.1面向过程的程序设计思想及语言最初问世的高级语言都属于面向过程的编程语言,用来实现程序的顺序、选择、循环这三种结构,比较著名的语言有Pascal、Modula、Bliss、Euclid、Edison、Gyp

3、sy、CLU、XCY-2、Smalltalk、C等。按照模块对应函数的方法可以很好地组织。“面向过程”程序设计方法也有它的缺陷,主要表现在以下方面:(1)难以适应大型软件的设计(2)程序可重用性差这些由结构化程序设计的特点所导致的缺陷,其本身无法克服,而越来越多的大型程序设计又要求必须克服它们,这最终导致了“面向对象”设计方法的产生。JavaJava程序设计基础与实践程序设计基础与实践1.1.2面向过程对象的程序设计思想及语言“面向对象”程序设计是一种解决问题时整体看待一个实体的思想。它是从现实世界中客观存在的事物出发来构造软件系统,强调直接以现实世界中的事物为中心来思考问题、认识问题,并根据

4、这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。简单地来说,就是将我们编程时独立考虑的相关的一些属性和一些操作都“打个包”,整体来对待,也就是将我们现实世界的事物看成属性(数据)和它本身的操作(方法)来整体对待。把数据和方法整合到一起就形成了类,类声明得到对象,编程时有效地利用类的继承性,会在很大程度上提高编程效率。JavaJava程序设计基础与实践程序设计基础与实践1.1.2面向过程对象的程序设计思想及语言与面向过程程序设计相比,面向对象程序设计有以下优点:(1)数据抽象的概念可以在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰。(2)通过继承

5、可大幅减少冗余的代码,并可以方便地扩展现有代码,提高编码效率,也减少了出错概率,降低了软件维护的难度。(3)结合面向对象分析、设计,允许将问题中的对象直接映射到程序中,减少了软件开发过程中中间环节的转换过程。(4)通过对对象的辨别、划分可以将软件系统分割为若干相对为独立的部分,在一定程度上便于控制软件复杂度。(5)通过对象的聚合、联合,可以在保证封装与抽象的原则下实现对象的内在结构以及外在功能的扩充,从而实现对象由低到高的升级。JavaJava程序设计基础与实践程序设计基础与实践1.1.2面向过程对象的程序设计思想及语言面向对象程序设计语言与传统的面向过程编程语言的主要区别在于:传统过程性语言

6、中把数据以及处理它们的子程序当作互不相关的成分分别处理,而面向对象语言则把这两者统一作为对象封装一起进行处理。面向对象的思想是G.Booch在研究Ada软件开发方法时首先提出来的,它的一个重要概念就是类。完全面向对象的语言有Smalltalk、C+、Eiffel、Java等。JavaJava程序设计基础与实践程序设计基础与实践1.2Java程序设计语言Java语言概述Java语言的三大开发体系JavaJava程序设计基础与实践程序设计基础与实践1.2.1Java语言概述1995年5月23日,Sun公司正式发布了Java产品。Java语言一经推出,就受到了业界的关注。Netscape公司第一个认

7、可Java语言,并于1995年8月将Java解释器集成到它的主打产品Navigator浏览器中。接着,Microsoft公司在InternetExplorer浏览器中认可了Java语言。Java语言开始了自己的发展历程。Java语言是简单的、面向对象的语言,它具有分布式特点、安全性,又可以实现多线程,更主要的是它与平台无关,解决了困扰软件界多年的软件移植问题。JavaJava程序设计基础与实践程序设计基础与实践1.2.2Java语言的三大开发体系Java发展到今天,已从编程语言发展成为全球第一大通用开发平台。Java技术已被计算机行业主要公司所采纳。1999年,Sun公司推出了以Java2平台

8、为核心的J2SE、J2EE和J2ME三大平台。Java2Platform,StandardEdition(J2SE)Java2Platform,EnterpriseEdition(J2EE)Java2Platform,MicroEdition(J2ME)简单地说,J2SE用于小型程序,J2EE用于大型程序,J2ME用于手机等程序。J2SE包含于J2EE中,J2ME包含了J2SE的核心类,但新添加了一些专用类。语言都是相同的,只是捆绑的类库API不同。也就是说,J2SE是基础;压缩一点,再增加一些CLDC等方面的特性就是J2ME;扩充一点,再增加一些EJB等企业应用方面的特性就是J2EE。Jav

9、aJava程序设计基础与实践程序设计基础与实践第2章初识Java程序设计学习目标了解Java开发环境掌握Java语言的运行机制了解Java虚拟机重点难点Java环境变量的配置Eclipse的使用JavaJava程序设计基础与实践程序设计基础与实践2.1典型案例【案例描述】使用Eclipse编写程序,在控制台输出多行信息,运行结果如下所示。【运行结果】JavaJava程序设计基础与实践程序设计基础与实践2.2Java开发环境的搭建Java虚拟机的简介JDK的下载与安装配置系统环境变量JavaJava程序设计基础与实践程序设计基础与实践2.2.1Java虚拟机的简介Java虚拟机(JavaVirt

10、ualMachine,JVM)为Java语言实现了平台无关性。使用Java语言编写的程序需要经过Java编译器编译,这时会生成与平台无关的字节码(*.class文件)。这种字节码是不可执行的,必须使用JVM来解释执行。因此,我们无论在任何系统上编写Java程序,只要该平台安装了JVM,便可以运行。JavaJava程序设计基础与实践程序设计基础与实践2.2.2JDK的下载与安装JDK(JavaDevelopmentKit),即Java标准开发工具箱,是Oracle公司提供一套用于开发Java应用程序的开发工具,提供了编译、运行Java程序所需要的各种工具和资源,包括Java编译器、Java运行环

11、境,以及常用Java类库等。Java运行环境也称为JRE(JavaRuntimeEnvironment),是运行Java程序的必要条件。可以说JRE里包括JVM。JavaJava程序设计基础与实践程序设计基础与实践2.2.2JDK的下载与安装JDK官方下载网址为:http:/ &逻辑与(相当于“并且”)|逻辑或(相当于“或者”)!逻辑非(相当于“否定”)运算规则运算规则 逻辑运算符的操作数和结果都是布尔型。(1)&运算的一般形式是:A&B。其中:A、B是逻辑或关系表达式。若A和B的值至少有一个为false,则A&B的值为false;若A和B的值均为true,则A&B的值为true。(2)|运算

12、的一般形式是:A|B。其中:A、B是逻辑或关系表达式。若A和B的值至少有一个为true,则A|B的值为true;若A和B的值均为false,则A|B的值为false。(3)!运算的一般形式是:!A。其中:A是逻辑或关系表达式。若A的值为true,则!A的值为false,反之为true。JavaJava程序设计基础与实践程序设计基础与实践3.4.4赋值运算符及赋值表达式赋值运算符是最常用的运算符,用于把一个表达式的值赋给一个变量(或对象)。一般形式为:变量=表达式赋值表达式的值为赋值号右边变量或表达式的值,例如:a=5的值为5,x=a+3的值为8,y=(a=3)+(b=8)的值为11。Java也

13、提供了复合的赋值运算符,包括:+=,-=,*=,/=,%=。例如:x*=x+y;/相当于x=x*(x+y);x+=y;/相当于x=x+y;JavaJava程序设计基础与实践程序设计基础与实践3.4.5其他运算符及表达式条件运算符是三目运算符,由条件运算符组成的表达式的一般格式为:逻辑表达式(或关系表达式)?表达式1:表达式2其功能是:若逻辑表达式(或关系表达式)的值为true,整个式子的结果取表达式1的值,否则取表达式2的值。条件运算符及条件表达式常用于简单分支的取值处理。对象对象运算符运算符(1)构造对象运算符(new)。new运算符主要用于创建类的对象,我们将在后边的章节作详细介绍。(2)

14、分量运算符(.)。.运算符主要用于获取类、对象的属性和方法。例如可使用System类对象的输出方法在屏幕上输出信息:System.out.println(myfirstJavaprogram);。字符字符串连接运算符(串连接运算符(+) 在表达式中,如果+号运算符左右两边的操作数至少一个为字符串,此时该+号运算符的作用是字符串连接符。JavaJava程序设计基础与实践程序设计基础与实践3.4.6运算符的优先级Java运算符的优先次序JavaJava程序设计基础与实践程序设计基础与实践3.4.6运算符的优先级在上表中优先级为1的运算符优先级最高,优先级10的运算符优先级最低。结合性是指运算符结合

15、的顺序,通常都是从左向右,也称为左结合。从右向左的运算符最典型的就是取负运算,例如3+-4,含义为3加-4,符号首先和运算符右侧的内容结合,也称为右结合。注意区分正负号和加减号的区别。其实在实际的开发中,不需要去记忆运算符的优先级别,也不要刻意地使用运算符的优先级别,对于不清楚优先级的地方可以使用小括号,这样便于代码的阅读和维护。JavaJava程序设计基础与实践程序设计基础与实践第4章程序控制语句重点难点多重if语句和switch语句的适用场合嵌套if语句的使用使用循环语句的嵌套编写程序学习目标掌握if条件结构掌握if、if-else语句的格式理解多重if语句和switch语句的异同点掌握嵌

16、套if语句的使用方法理解循环结构的要素掌握while、do-while、for语句的格式掌握循环语句的嵌套理解break和continue语句在程序中的使用场合JavaJava程序设计基础与实践程序设计基础与实践4.1典型案例【案例描述】使用Eclipse编写程序,将120这20个数按照每行5个顺序输出,运行结果如下图所示。【运行结果】JavaJava程序设计基础与实践程序设计基础与实践4.2顺序结构顺序结构是最简单、最基本的程序控制结构,程序中的语句将自顶向下逐条执行,即按语句的排列顺序从第一条顺序执行到最后一条,且每个语句只执行一遍,无需专门的控制语句。JavaJava程序设计基础与实践程

17、序设计基础与实践4.3选择结构顺序结构的程序虽然能解决数据的输入、计算和输出等功能,但是不可能处理复杂的问题。在数据处理过程中,往往需要根据不同的情况,完成不同的处理。例如,任意输入两个数a和b,输出较大的数。解决这样的问题,就需要让计算机按照给定的条件来进行判断,并且根据判断的结果选择相应的处理方式。实际上,这种处理方式就是要求程序本身具有一定的逻辑判断能力和选择能力。选择结构的执行就是根据一定的条件选择执行路径,而不是严格按照语句的物理顺序来执行。类似这种情况的处理,要使用if条件语句来实现。JavaJava程序设计基础与实践程序设计基础与实践4.3.1单一if语句单一if语句的格式如下:

18、if(表达式)语句;功能:若表达式的值为true,则执行语句,否则跳过该语句。其中,语句可以是单条语句或复合语句(用大括号“”括起的多条语句)。JavaJava程序设计基础与实践程序设计基础与实践4.3.2if-else语句if-else语句的格式如下:if(表达式)语句1;else语句2;功能:如果表达式的值为true,执行语句1,否则执行语句2。JavaJava程序设计基础与实践程序设计基础与实践4.3.3多重if-else语句多重if-else语句的格式如下:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式n-1) 语句n-1;else语句n;这是一种多选一的

19、多分支结构,其功能是:如果表达式i(i=1n-1)的值为true,则执行语句i;如果所有表达式的值均为false,则执行语句n。JavaJava程序设计基础与实践程序设计基础与实践4.3.4switch语句多重if-else语句是实现多分支选择的语句。Java还提供了一种switch语句来实现“多选一”的功能。switch语句的一般格式如下:switch(表达式)case常量1:语句组1;break;case常量2:语句组2;break;case常量n-1:语句组n-1;break;case常量n:语句组n;break;default:语句组n+1;JavaJava程序设计基础与实践程序设计基

20、础与实践4.3.4switch语句表达式的值必须是int型或char型。常量i(i=1n)是对应于表达式类型的常量值。各常量的值不能相同。语句组i(i=1n+1)可以是空语句,也可是一个或多个语句。break的作用是结束本switch结构语句的执行,跳到该结构外的下一个语句执行。先计算表达式的值,根据该值查找与之匹配的常量i,若找到,则执行语句组i,遇到break语句后跳出switch结构,否则继续依次执行下边的语句组。如果没有查找到与计算结果相匹配的常量i,则执行default关键字后的语句组n+1。JavaJava程序设计基础与实践程序设计基础与实践4.3.5嵌套if语句多重if语句是用于

21、多个并列条件选择的情况。如果多个条件是递进关系,可以在if语句或if-else语句的“语句1”或“语句2”中再使用if语句或if-else语句,这种设计方法称为嵌套。嵌套if语句格式如下:if(表达式)if语句;或者if(表达式)if-else语句;elseif-else语句;JavaJava程序设计基础与实践程序设计基础与实践4.4循环结构循环是我们周围存在的最普遍的现象之一,许多复杂的问题往往需要做大量雷同的重复处理。可见,循环结构是程序设计中的一个常用结构。Java语言提供了3种循环语句来实现循环结构的程序设计,分别为for循环语句、while循环语句和do-while循环语句。一般情况

22、下,for循环用于处理确定次数的循环,while和do-while循环用于处理不确定次数的循环。JavaJava程序设计基础与实践程序设计基础与实践4.4.1while循环语句while循环的一般格式:while(表达式)/表达式为循环条件语句组;/循环体表达式可以是关系表达式或逻辑表达式,它产生一个布尔值。语句组是循环体,是要重复执行的语句序列。当表达式的值是true时,重复执行循环体(语句组)操作,当表达式的值是false时,结束循环操作,执行while循环体下边的程序语句。JavaJava程序设计基础与实践程序设计基础与实践4.4.2do-while循环语句do-while循环的一般格式

23、:do语句组;/循环体while(表达式);while与do-while之间的差别在于:while循环先判断表达式的值,如果表达式的值为true则执行循环体,否则跳过循环体的执行,因此如果一开始布尔表达式的值就为false,那么循环体一次也不被执行;do-while循环是先执行一次循环体,然后再判断表达式的值,若其值为true则再次执行循环体,否则执行后边的程序语句。无论布尔表达式的值如何,do-while循环都至少会执行一次循环体语句。JavaJava程序设计基础与实践程序设计基础与实践4.4.3for循环语句for循环语句的一般格式如下:for(表达式1;表达式2;表达式3)语句组;/循环

24、体表达式1一般用于设置循环控制变量的初始值,例如:inti=1;。表达式2一般是关系表达式或逻辑表达式,用于确定是否继续进行循环体语句的执行。例如:i100;。表达式3一般用于循环控制变量的增减值操作。例如:i+;。语句组是要被重复执行的语句,称为循环体。语句组可以是空语句、单个语句或多个语句。JavaJava程序设计基础与实践程序设计基础与实践4.4.4循环语句的嵌套如果一个循环语句的循环体中又包含一个循环语句,则称之为循环语句的嵌套,也称为多重循环。前面学习的三种循环语句,每一种语句的循环体部分都可以再包含循环语句,所以多重循环很容易实现。循环的嵌套,按照嵌套层数,分别称为二重循环、三重循

25、环等。处于内部的循环称为内循环,处于外部的循环称为外循环。执行过程以二重循环为例。从最外层开始执行,外循环变量每取一个值,就判断一次循环条件,如果为真,内循环就执行一次循环体,内循环结束后,再回到外循环,外循环变量取下一个值,如果循环条件依然为真,内循环又开始执行一次循环体。依此类推,直到外循环结束。JavaJava程序设计基础与实践程序设计基础与实践第5章数组与字符串学习目标掌握一维数组的声明、分配空间的方法,熟练使用一维数组解决实际问题掌握二维数组的声明、分配空间和使用方法,熟悉二维数组输入/输出方法掌握字符串常量对象的创建和使用方法掌握字符串的一些常用方法,并能熟练运用这些方法解决相关问

26、题理解String类和StringBuffer类的区别,并能进行实际应用重点难点一维数组的实际应用String类和StringBuffer类的区别及使用JavaJava程序设计基础与实践程序设计基础与实践5.1典型案例【案例描述】使用Eclipse编写程序,从控制台输入10个学生Java课程的成绩,计算并输出这10个学生的平均成绩及最高分与最低分,运行结果如下图所示。【运行结果】JavaJava程序设计基础与实践程序设计基础与实践5.2一维数组数组是一种构造类型。数组中的每个元素都具有相同的数据类型,且可以用数组名和下标来唯一地确定。数组是有序数据的集合。和其他变量一样,数组必须先声明定义,然

27、后赋值,最后再使用。JavaJava程序设计基础与实践程序设计基础与实践5.2.1一维数组的声明一维数组声明的一般格式如下:数据类型数组名;或数据类型数组名;数据类型说明数组元素的类型,可以是Java中任意的数据类型。数组名是一个标识符,应遵照标识符的命名规则。例如:inta;/声明一个整型的一维数组a若数组的类型一样,则可以一次定义多个数组。例如:intx,y,z;Java语言在对数组进行声明时,并不会为数组分配存储空间。因此在对数组进行声明时,是不允许指明数组长度的,而且声明后的数组必须通过分配存储空间来创建数组对象后,才可以访问数组中的元素。JavaJava程序设计基础与实践程序设计基础

28、与实践5.2.2一维数组的初始化一般情况下,使用new运算符定义数组大小,格式如下:数组名=new数据类型size;size指数组的长度。例如:intarray1;/声明一个整型数组array1=newint5;/定义数组可以存放5个整型元素此时,整型数组array1的长度为5,即包含5个整型数组元素:array10、array11、array12、array13、array14。每一个元素都可以存放一个整型的数据,相当于5个整型变量。当用new关键字为一个数组分配内存空间后,可以为每个数组元素赋值,例如:array10=1;/数组下标从0开始array11=2;array12=3;array

29、13=4;array14=5;通常也可以采用如下方式为数组元素赋初值并由初值的个数确定数组的大小。intarray1=1,2,3,4,5;上述语句声明并创建了数组array1,并且为数组中的每个元素赋值,使得array10=1,array11=2,array12=3,array13=4,array14=5。系统将根据所给初值的个数计算出数组的长度并分配相应的存储空间。JavaJava程序设计基础与实践程序设计基础与实践5.2.3访问一维数组数组元素的使用数组元素的使用 为数组分配好内存空间后,就可以像普通数据类型的变量一样在程序中使用数组元素,即可以在任何允许使用变量的地方使用数组元素。数组元

30、素的访问方式为:数组名下标;下标可以为整型常量或表达式,下标值从0开始。数组是作为对象处理的,它具有长度(length)属性,用于指明数组中包含的元素个数。因此数组的下标从0开始到length-1结束。如果在引用数组元素时,下标超出了此范围,系统将产生数组下标越界异常(ArrayIndexOutOfBoundsException)。JavaJava程序设计基础与实践程序设计基础与实践5.2.3访问一维数组 数组的使用数组的使用 -当数组创建后,数组名就存储了数组存储空间的起始地址,也可以使用该数组名给其他同类数组名赋值,这样使得多个数组共享一组内存空间和数据。JavaJava程序设计基础与实践

31、程序设计基础与实践5.3多维数组在Java语言中,多维数组是建立在一维数组基础之上的,以二维数组为例,可以把二维数组的每一行看作是一个一维数组,因此可以把二维数组看作是以一维数组为元素的数组。同样也可以把三维数组看作二维数组的数组,依此类推。在通常的应用中一维、二维数组最为常见,多维数组只应用于特殊的场合。JavaJava程序设计基础与实践程序设计基础与实践5.3.1二维数组的声明声明二维数组的一般格式如下:数据类型数组名;或数据类型数组名;数据类型可以是Java中的任意数据类型。例如:inta;/声明一个整型的二维数组adoubleb;/声明一个实型的二维数组b注意:和一维数组类似,二维数组

32、的声明只是说明了二维数组元素的数据类型,并没有为其分配存储空间。JavaJava程序设计基础与实践程序设计基础与实践5.3.2二维数组的初始化二维数组初始化也是为数组元素指定初始值,同时为数组分配相应的内存空间。可以采用如下的方式。先声明后定义最后再赋值例如:intmatrix;/声明整型二维数组matrixmatrix=newint33;/定义matrix包含33=9个元素matrix00=1;/为第1个元素赋值matrix01=2;/为第2个元素赋值matrix22=9;/为第9个元素赋值直接定义大小后赋值例如:intmatrix=newint33;matrix00=1;/为第1个元素赋值

33、matrix22=9;/为第9个元素赋值由初始化值的个数确定数组的大小在元素个数较少并且初值已确定时通常采用如下方式赋值:intmatrix=1,2,3,4,5,6,7,8,9;/由初值个数确定3行3列JavaJava程序设计基础与实践程序设计基础与实践5.3.3访问二维数组二维数组在分配好内存空间后,可以像一维数组一样使用。每个数组元素的识别方式都是:数组名下标1下标2;其中,下标1和下标2与一维数组的下标要求是一样的。JavaJava程序设计基础与实践程序设计基础与实践5.4数组的应用排序数组冒泡排序搜索数组折半查找JavaJava程序设计基础与实践程序设计基础与实践5.4.1排序数组将下

34、面的数列排序:54382。将相邻两个数进行比较,不断地将小数调到前面。第1趟排序后结果为:43528。可以看出,第1趟排序后最大值已经沉底,得到我们预想的结果,它将不会参与下一趟排序。第2趟排序后结果为:34258。依此继续,共进行4趟排序,就可以完成对5个数的冒泡排序。JavaJava程序设计基础与实践程序设计基础与实践5.4.2搜索数组折半查找是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步

35、骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。JavaJava程序设计基础与实践程序设计基础与实践5.5字符串的应用字符串是字符的序列,字符串中可以包含字母、数字和其他各种特殊字符,如+、?、*、/等。在Java语言中字符串是被当作对象来处理的,它提供了一系列的字符串操作方法,使字符串的处理更加简单和规范。Java语言的java.lang包中封装了final类String和StringBuffer。其中String类的对象是字符串常量,建立后不能改变其值。而StringBuffer类的对象类似于一个字符缓冲区,建立后其值可以修改。JavaJava程序设计基础与实践程序设

36、计基础与实践5.5.1字符数组字符数组中的每个元素都是char类型的数据,它的创建方法与一般数组相似。字符数组的声明和创建例如:chara=newchar8;该语句声明并创建了字符数组a,数组中可以存储8个字符。字符数组可以被初始化例如:chara=g,i,r,l;其中,a是一个字符数组,共有4个元素,a0为g,a1为i,a2为r,a3为l。也可以通过for语句给字符数组循环赋值例如:chara=newchar50;for(inti=0;i26;i+);ai=A+i;上述循环语句执行后,数组a中存放了26个大写英文字母。JavaJava程序设计基础与实践程序设计基础与实践5.5.1字符数组字符

37、串不是字符数组,但是可以转换为字符数组,反之亦然。字符串和字符数组之间的转换有以下两种方式。(1)字符串转换为字符数组toCharArray()方法。例如:将字符串“school”中的字符转换为数组a中的数组元素。chara=school.toCharArray();(2)字符数组转换为字符串String(char)构造方法或者valueOf(char)方法。例如:Stringstr=newString(newcharj,a,v,a);Stringstr=String.valueOf(newcharj,a,v,a);JavaJava程序设计基础与实践程序设计基础与实践5.5.2String类的

38、使用在Java中,每个字符串常量对应一个String类的对象,String类是字符串常量类,它用于生成字符串对象,String对象建立后不能修改。String类提供了如下一些常用的构造方法用来构造字符串对象:(1)String():构造一个空的字符串对象。(2)String(charchars):以字符数组chars的内容构造一个字符串对象。(3)String(charchars,intstartIndex,intnumChars):以字符数组chars中从startIndex位置开始的numChars个字符构造一个字符串对象。JavaJava程序设计基础与实践程序设计基础与实践5.5.2St

39、ring类的使用String类也提供了众多的方法用于操作字符串,以下列出一些常用的方法:(1)publicintlength():返回字符串的字符个数。(2)publiccharcharAt(intindex):返回字符串中index位置上的字符,其中index值的范围是0length-1。(3)publicintindexOf(charch):返回字符ch在字符串中第一次出现的位置。(4)publicintlastIndexOf(charch):返回字符ch在字符串中最后一次出现的位置。(5)publicintindexOf(Stringstr):返回子串str在字符串中第一次出现的位置。(

40、6)publicintlastIndexOf(Stringstr):返回子串str在字符串中最后一次出现的位置。(7)publicStringsubstring(intbeginIndex):返回字符串中从beginIndex位置开始的子串。JavaJava程序设计基础与实践程序设计基础与实践5.5.2String类的使用String类也提供了众多的方法用于操作字符串,以下列出一些常用的方法:(8)publicStringsubstring(intbeginIndex,intendIndex):返回字符串中从beginIndex位置开始到endIndex位置(不包括该位置)结束的子串。(9)p

41、ublicStringcontact(Stringstr):用来将当前字符串与给定字符串str连接起来。(10)publicStringreplace(charoldChar,charnewChar):用来把字符串中所有由oldChar指定的字符替换成由newChar指定的字符以生成新字符串。(11)publicStringtoLowerCase():把字符串中所有的字符变成小写且返回新字符串。(12)publicStringtoUpperCase():把字符串中所有的字符变成大写且返回新字符串。(13)publicStringtrim():去掉字符串中前导空格和拖尾空格且返回新字符串。Jav

42、aJava程序设计基础与实践程序设计基础与实践5.5.3StringBuffer类的使用在字符串处理过程中,String类生成的对象是不变的,StringBuffer类对字符串的运算操作是在源字符串本身上进行的,运算操作之后源字符串的值发生了变化。StringBuffer类采用缓冲区存放字符串的方式提供了对字符串内容进行动态修改的功能,即可以在字符串中添加、插入和替换字符。StringBuffer类被放置在java.lang包中。StringBuffer类常用的构造方法如下:(1)StringBuffer():用于创建一个空的StringBuffer类对象。(2)StringBuffer(in

43、tlength):以length指定的长度创建StringBuffer类对象。(3)StringBuffer(Stringstr):用指定的字符串初始化创建StringBuffer类对象。与String类不同,必须使用StringBuffer类的构造方法创建对象,不能直接定义StringBuffer类型的变量。JavaJava程序设计基础与实践程序设计基础与实践5.5.3StringBuffer类的使用StringBuffer类对象的常用方法(1)插入字符串方法。insert()方法是一个重载方法,用于在字符串缓冲区中指定的位置插入给定的字符串。它有如下形式:1)insert(intindex

44、,类型参量名):可以在字符串缓冲区中index指定的位置处插入各种数据类型的数据(如int、double、boolean、char、float、long、String、Object等)。2)insert(intindex,charstr,intoffset,intlen):可以在字符串缓冲区中index指定的位置处插入字符数组中从下标offset处开始的len个字符。(2)删除字符串方法。StringBuffer类提供了如下常用的删除方法:1)delete(intstart,intend):用于删除字符串缓冲区中位置在startend之间的字符。2)deleteCharAt(intindex)

45、:用于删除字符串缓冲区中index位置处的字符。JavaJava程序设计基础与实践程序设计基础与实践5.5.3StringBuffer类的使用StringBuffer类对象的常用方法(3)字符串添加方法。append()方法是一个重载方法,用于将一个字符串添加到一个字符串缓冲区的后面,如果添加字符串的长度超过字符串缓冲区的容量,则字符串缓冲区将自动扩充。它有如下形式:1)append(数据类型参量名):可以向字符串缓冲区添加各种数据类型的数据(如int、double、boolean、char、float、long、String、Object等)。2)append(charstr,intoffs

46、et,intlen):将字符数组str中从offset指定的下标位置开始的len个字符添加到字符串缓冲区中。(4)字符串的替换操作方法。replace()方法用于将一个新的字符串去替换字符串缓冲区中指定的字符。它的形式如下:replace(intstart,intend,Stringstr):用字符串str替换字符串缓冲区中从位置start到end之间的字符。JavaJava程序设计基础与实践程序设计基础与实践5.5.3StringBuffer类的使用StringBuffer类对象的常用方法(5)获取字符方法。StringBuffer提供了如下从字符串缓冲区中获取字符的方法:1)charAt(

47、intindex):取字符串缓冲区中index指定位置处的字符。2)getChars(intstart,intend,chardst,intdstStart):取字符串缓冲区中startend之间的字符并放到字符数组dst中以dstStart下标开始的数组元素中。(6)其他几个常用方法。1)toString():将字符串缓冲区中的字符转换为字符串。2)length():返回字符串缓冲区中字符的个数。3)reverse():将字符串缓冲区中的字符串翻转。4)substring(intstart):取子串。返回字符串缓冲区中从start位置开始的所有字符。5)substring(intstart,

48、intend):取子串。返回字符串缓冲区中从位置start开始到end之前的所有字符。JavaJava程序设计基础与实践程序设计基础与实践第6章基于对象的程序设计基础基于对象的程序设计基础重点难点构造方法的作用各种访问控制修饰符的使用学习目标掌握类和对象的基本概念及关系掌握类的创建方法掌握对象的创建和使用理解成员变量和成员方法的特性掌握构造方法的定义掌握访问控制修饰符的使用方法了解类库中常用类的使用JavaJava程序设计基础与实践程序设计基础与实践6.1典型案例【案例描述】使用Eclipse编写程序,定义Student学生类,包含姓名、性别、年龄、所在学校四个属性,创建一个学生对象并初始化,

49、输出相应的信息。运行结果如图所示。【运行结果】JavaJava程序设计基础与实践程序设计基础与实践6.2类的定义基于对象的方法将系统看作是现实世界对象的集合,现实世界中包含被归类的对象。属性代表类的特性,行为代表由类完成的操作。为了模拟真实世界,更好地解决问题,我们需要创建解决问题所必需的数据类型,基于对象编程为我们提供了解决方案。类实际上是我们根据需要创建的复合数据类型。JavaJava程序设计基础与实践程序设计基础与实践6.2.1类的基本概念对象面向对象的程序设计方法就是将现实世界中的对象抽象为程序设计语言中的对象。在信息世界中,用数据(变量)来描述对象的状态,用方法来实现对象的行为。类类

50、是组成Java程序的基本元素,类把不同对象具有的共性抽象出来,类是同一类对象的原型。对象和类的关系类封装了一类对象的状态和方法。类是用来定义对象的模板。对象是类的具体实现。JavaJava程序设计基础与实践程序设计基础与实践6.2.2类的定义格式单一if语句的格式如下:访问控制符非访问控制符class类名extends父类名implements接口名列表/类声明/类体开始标志类的成员变量声明/属性说明类的成员方法定义类的构造方法定义/行为定义/类体结束标志JavaJava程序设计基础与实践程序设计基础与实践6.2.2类的定义格式说明:n访问控制符:public、friendlyn非访问控制符:

51、abstract、abstractnclass是关键字,定义类的标志。n类名是该类的名字,是一个Java标识符,一般情况下单词首字母大写。n父类名跟在关键字“extends”后,说明所定义的类是该父类的子类。n接口名列表,跟在关键字“implements”后。JavaJava程序设计基础与实践程序设计基础与实践6.2.3成员变量的声明声明或定义成员变量一般常在类体的开始部分。一般定义格式如下: 访问控制符访问控制符 非访问控制符非访问控制符 数据类型数据类型 成员变量名成员变量名=初始值初始值; (1)访问控制符:public、private、protected、friendly(2)非访问控

52、制符:static、final、transient、volatile(3)数据类型:可以是简单数据类型,也可以是对象、接口、数组、字符串等类型。JavaJava程序设计基础与实践程序设计基础与实践6.2.4成员方法的定义成员方法包含在类中,用来实现类的行为,完成不同的功能。定义方法也包含两部分,方法声明和方法体。成员方法定义的一般格式如下:访问控制符访问控制符 非访问控制符非访问控制符 返回值类型返回值类型 方法名方法名(形形式参数列表式参数列表) throws 异常表异常表 变量声明变量声明 /方法内使用的变量,即局部变量方法内使用的变量,即局部变量 程序代码程序代码 /方法的主体代码方法的

53、主体代码 return(表达式表达式) /返回语句返回语句 JavaJava程序设计基础与实践程序设计基础与实践6.2.5构造方法的定义Java语言允许对象在它们被创建时就被初始化。这种自动的初始化是通过一种特殊的方法构造方法来完成的。它是一种特殊的成员方法,其特点是:(1)构造方法的方法名必须与它所在的类同名。(2)构造方法没有返回值,也没有返回类型。(3)每一个类可以有零个或多个构造方法,只要它们的参数不同即可。(4)构造方法在创建对象时由Java编译器自动调用执行,一般不能显式地直接调用。JavaJava程序设计基础与实践程序设计基础与实践6.2.5构造方法的定义构造方法的作用就是在创建

54、对象时对对象的实例变量单独进行初始化。如果在类中没有构造方法,在创建对象时,系统使用默认的构造方法。定义构造方法的一般格式如下: public 类名类名(形式参数列表形式参数列表) 方法体方法体 JavaJava程序设计基础与实践程序设计基础与实践6.3对象的使用我们已经定义了立方体(Box)类,即创建了一种新的数据类型,但它只是从“立方体”类中抽象出来的模板,要处理一个立方体的具体信息,必须按这个模板构造出一个具体的立方体来,它就是Box类的一个实例。创建类的变量称为类的实例化,类的变量也称为类的对象、类的实例等。类的对象是在程序运行中创建生成的,其所占的空间在程序运行中动态分配。JavaJ

55、ava程序设计基础与实践程序设计基础与实践6.3.1对象的创建1声明对象声明对象声明对象的一般格式如下:类名类名 对象名对象名;2创建对象创建对象对象只有在创建后才能被使用,创建对象的一般格式如下:对象名对象名=new 类名类名(实参表实参表);注意:声明对象和创建对象也可以合并为一条语名,其一般格式为类名对象名=new类名(实参表);JavaJava程序设计基础与实践程序设计基础与实践6.3.2对象的引用创建了类的对象后,就可以对对象的成员变量或方法进行访问,完成各种处理。访问对象成员的通用形式为:类对象名类对象名.成员变量名成员变量名;类对象名类对象名.成员方法名成员方法名(实参列表实参列

56、表); 运算符“.”称为对象运算符,在对象名和成员变量、成员方法之间起到连接的作用,以指明是哪个对象的成员。JavaJava程序设计基础与实践程序设计基础与实践6.3.3对象数组Java中的数组元素也可以使用对象来创建。数组元素为对象的数组称为对象数组。对象数组首先作为数组定义,用new为该数组分配内存,然后用new为每个作为数组元素的对象分配内存。对象数组和基本数据类型的数组一样,可以作为方法的返回值。注意:对象数组声明后,不能立刻存放数据。因为对象数组的声明只会生成对象的引用,并没有产生对象的实例。JavaJava程序设计基础与实践程序设计基础与实践6.4修饰符的使用修饰符的目的是用来对类

57、和成员的使用做某些限定。在Java语言中,一般将修饰符分为两类:访问控制符和非访问控制符。其中,访问控制符有public、protected、private等,它们的作用是给予对象一定的访问权限,实现类和类中成员的信息隐藏。非访问控制符的作用各不相同,包括abstract、static、final、native、volatile、synchronized、transient等。某些修饰符只能应用于修饰类的成员,而某些修饰符既可应用于类,也可应用于类的成员。JavaJava程序设计基础与实践程序设计基础与实践6.4.1类的修饰符类的修饰符有以下几种:upublic:公共的。公共类可以被任何对象访

58、问,一个程序的主类必须是公共类。ufriendly:友好的。系统默认访问控制符,一般省略不写。友好的类可以被与本类在同一个包中的所有类访问。uabstract:说明该类是抽象类。抽象类中定义的抽象方法需要通过子类继承来实现。ufinal:说明该类是最终类,最终类没有子类,不能被继承。JavaJava程序设计基础与实践程序设计基础与实践6.4.2类成员的修饰符访问权限修饰符本类中同一个包中的类不同包中的子类不同包中的其他类publicprotectedfriendlyprivateJavaJava程序设计基础与实践程序设计基础与实践6.4.3类变量与类方法1类变量类变量与实例变量与实例变量用st

59、atic修饰的成员变量称为类变量,不用static修饰的成员变量称为实例变量。实例变量依附于具体的对象,它的值因具体对象的不同而不同,而类变量为该类的所有对象所共享,每个对象对类变量的改变都会直接影响到其他对象。2类方法与实例方法类方法与实例方法用static修饰的方法称为类方法,无static修饰的方法为实例方法。类方法是该类所有对象共享的方法。JavaJava程序设计基础与实践程序设计基础与实践6.4.3类变量与类方法对类成员的使用一般应注意以下三点:(1)可以使用两种方式调用类成员,它们的作用相同。其格式为:类变量:类名.变量名或对象名.变量名类方法:类名.方法名()或对象名.方法名()

60、(2)类方法不能访问某个对象的成员变量,而只能处理属于整个类的类变量,即类方法只能处理类变量。(3)一个类中的实例方法可以调用任何其他方法,但类方法只能调用该类的类方法,不能调用实例方法。JavaJava程序设计基础与实践程序设计基础与实践6.5内部类的使用所谓内部类,是指被嵌套定义在另外一个类中甚至是一个方法中的类,因此也把它称为类中类。嵌套内部类的类称为外部类,内部类通常被看成是外部类的一个成员。内部类作为一个成员,它有如下特点:(1)若使用static修饰,该类为静态内部类,否则为非静态内部类。(2)外部类不能直接存取内部类的成员,只有通过内部类才能访问内部类的成员。(3)如果将一个内部

61、类定义在一个方法内(本地内部类),它完全可以隐藏在方法中,甚至同一个类的其他方法也无法使用它。JavaJava程序设计基础与实践程序设计基础与实践6.6常用类的使用1.数学类o指数方法指数方法(1)staticdoubleexp(doublea):返回ea的值。(2)staticdoublelog(doublea):返回ln(a)的值。(3)staticdoublepow(doublea,doubleb):返回ab的值。(4)staticdoublesqrt(doublea):返回a的平方根。JavaJava程序设计基础与实践程序设计基础与实践6.6常用类的使用o舍入方法舍入方法(1)stat

62、ic数据类型abs(数据类型a):求a的绝对值。其中数据类型可以是int、long、float和double。(2)static数据类型max(数据类型a,数据类型b):求a,b中的最大值。数据类型如上所述。(3)static数据类型min(数据类型a,数据类型b):求a,b中的最小值。数据类型如上所述。(4)staticdoublerint(doublea):返回最接近a且等于某一整数的double型值。(5)staticlonground(doublea):返回最接近参数a的long型值。(6)staticintround(floata):返回最接近参数a的int型值。JavaJava程序

63、设计基础与实践程序设计基础与实践6.6常用类的使用o三角方法三角方法(1)staticdoublesin(doublea):返回sin(a)的值。(2)staticdoublecos(doublea):返回cos(a)的值。(3)staticdoubletan(doublea):返回tan(a)的值。(4)staticdoubleasin(doublea):返回arcsin(a)的值。(5)staticdoubleacos(doublea):返回arccos(a)的值。(6)staticdoubleatan(doublea):返回arctan(a)的值。JavaJava程序设计基础与实践程序设

64、计基础与实践6.6常用类的使用2.格式化类o可以使用java.text包中的NumberFormat类,调用类方法:publicstaticfinalNumberFormatgetInstance()。o实例化一个NumberFormat对象,该对象调用publicfinalStringformat(doublenumber)方法可以格式化数字number。JavaJava程序设计基础与实践程序设计基础与实践6.6常用类的使用3.数学类o常用的构造方法常用的构造方法(1)Date():用系统当前的日期和时间构建对象。(2)Date(longdate):以长整型数date构建对象。o常用的方法常

65、用的方法(1)booleanafter(Datewhen):测试日期对象是否在when之后。(2)booleanbefore(Datewhen):测试日期对象是否在when之前。JavaJava程序设计基础与实践程序设计基础与实践6.6常用类的使用(3)intcompareTo(DateanotherDate):日期对象与anotherDate比较,如果相等返回0值,日期对象如果在anotherDate之后返回1,如果在anotherDate之前返回-1。(4)longgetTime():返回自1970.1.100:00:00以来经过的时间(毫秒数)。(5)voidsetTime(longti

66、me):以time(毫秒数)设置时间。JavaJava程序设计基础与实践程序设计基础与实践第7章Java面向对象的特征重点难点成员的隐藏、重载与覆盖的知识接口的声明与实现学习目标掌握继承的概念掌握成员变量的隐藏、成员方法的重载与覆盖理解抽象类、最终类的概念及使用场合掌握接口的相关知识理解包的概念了解Java的常用类库包JavaJava程序设计基础与实践程序设计基础与实践7.1典型案例【案例描述】使用Eclipse编写程序,定义一个Person类,该类包含姓名、年龄、性别三个属性,以及设置姓名、设置年龄、设置性别、显示信息四个成员方法。定义一个Student类,除了以上属性外,还要增加学号、专业

67、两个属性,以及一个带参数的构造方法。设计一个测试类,定义对象,输出其信息,运行结果如图所示。【运行结果】JavaJava程序设计基础与实践程序设计基础与实践7.2继承继承(inheritance)是面向对象程序设计的又一个重要特性。继承体现了类与类之间的一种关系,即一般与特殊的关系。继承就是一种由现有的类创建新类的机制。继承机制使得新类不仅有被继承类的全部成员变量和方法,还可以根据需要增加自己特有的成员变量和方法。通过继承,可以从已有的类模块产生新的类模块,从而使两个类模块之间发生联系。JavaJava程序设计基础与实践程序设计基础与实践7.2.1Java的继承机制首先创建一个包括其他许多类共

68、有的成员变量和方法的一般类,然后再通过继承创建一个或多个新类。由于继承,这些新类已经具有了一般类的成员变量和方法,此时只需再设计各新类特有的成员变量和方法。由继承而得到的新类称为子类(subclass),被继承的类称为父类或超类(superclass)。子类直接的上层父类称作直接父类。继承有两种基本形式:多继承和单继承。Java语言只允许单继承,不允许多继承。但一个类允许同时拥有多个子类。JavaJava程序设计基础与实践程序设计基础与实践7.2.2继承的实现在类的声明语句中加入extends关键字和指定的类名即可实现类的继承。具体格式如下:修饰符class子类名extends父类名子类体例如

69、:classSub1extendsSuper 上例中定义了Sub1类继承Super类。此时称Sub1类是Super类的子类,或者说Super类是Sub1类的直接父类,直接父类通常简称“父类”。JavaJava程序设计基础与实践程序设计基础与实践7.2.3成员的访问和继承1成员变量的继承成员变量的继承子类继承父类成员变量的具体继承原则如下:(1)如果子类与父类在同一个包中,子类能够继承父类中除了声明为private的成员变量以外的其他成员变量。(2)如果子类与父类不在同一个包中,子类能够继承父类中声明为public和protected的成员变量,不能继承父类中那些声明为private和缺省的成员

70、变量。(3)如果子类声明一个与父类成员变量同名的成员变量,则子类不能继承父类的同名成员变量。此时称子类的成员变量隐藏了父类的同名成员变量。JavaJava程序设计基础与实践程序设计基础与实践7.2.3成员的访问和继承2成员方法的继承成员方法的继承子类继承父类成员方法的原则类似于子类继承父类成员变量的原则,具体的继承原则如下:(1)如果子类与父类在同一个包中,子类能够继承父类中除了声明为private的成员方法以外的其他成员方法。(2)如果子类与父类不在同一个包中,子类能够继承父类中那些声明为public和protected的成员方法,不能继承父类中那些声明为private和缺省的成员方法。(3

71、)如果子类方法与父类方法同名,则不能继承。此时称子类方法重写了父类中的同名方法。JavaJava程序设计基础与实践程序设计基础与实践7.2.3成员的访问和继承3构造方法的调用构造方法的调用 父类构造方法的引用原则如下:(1)若父类定义了无参数的构造方法,则子类无条件地调用该构造方法。(2)若子类未定义自己的构造方法,则在创建子类对象时,它将默认调用父类的无参数构造方法作为自己的构造方法。(3)若子类定义了自己的构造方法,则在创建子类对象时,它将先执行其父类的无参数构造方法,然后再执行自己的构造方法。(4)若父类定义了有参数的构造方法,则子类可以通过在自己的构造方法中使用super关键字来调用它

72、,但这个调用语句必须是子类构造方法中的第一条可执行语句。JavaJava程序设计基础与实践程序设计基础与实践7.3多态 多态是面向对象程序设计的重要特性,简单点说就是“一个接口,多种实现”,是指同一种事物表现出多种形态。编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,指把一系列具体事物的共同点抽象出来,再通过这个抽象的事物,与不同的具体事物进行对话。JavaJava程序设计基础与实践程序设计基础与实践7.3.1多态的作用多态是指一个方法只能有一个名称,但可以有许多形态,也就是说程序中可以定义多个同名的方法。(1)可替换性(substitutability)。(2)可扩充性

73、(extensibility)(3)接口性(interfaceability)(4)灵活性(flexibility)(5)简化性(simplicity)JavaJava程序设计基础与实践程序设计基础与实践7.3.2成员变量的隐藏变量的隐藏就是指在子类中定义的变量和父类中定义的变量有相同的名字,或方法中定义的变量和本类中定义的变量同名。在这种情况下,系统采用局部优先的原则。若子类声明了与父类同名的变量,则父类的变量被隐藏起来,直接使用的是子类的变量,但父类的变量仍占据空间,可通过super关键字来访问。JavaJava程序设计基础与实践程序设计基础与实践7.3.3成员方法的重写在Java中,子类

74、可以继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想做一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。如果在子类中命名一个方法,这个方法与父类中的某方法具有相同的方法名、相同的参数列表、相同的返回值和修饰符,说明子类重写了父类的方法。子类的对象使用这个方法时,将调用子类中定义的方法,父类中的定义如同被“屏蔽”了。如需调用父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。JavaJava程序设计基础与实践程序设计基础与实践7.3.4成员方法的重载o在Java中,同一个类中的两个或两个以上的方法可以有相同的名字,只要它们的

75、参数声明不同即可。这种情况被称为成员方法的重载(overloaded)。方法重载是Java实现多态的一种方式。o当一个重载方法被调用时,Java通过参数的类型和(或)数量来判断实际调用的是哪个重载方法。因此,每个重载方法的参数类型和(或)数量必须是不同的。虽然每个重载方法可以有不同的返回类型,但返回类型并不足以区分所使用的是哪个方法。当Java调用一个重载方法时,参数与调用参数匹配的方法被执行。JavaJava程序设计基础与实践程序设计基础与实践7.3.4成员方法的重载项目方法重载方法重写(覆盖)类的层次针对同一个类中的同名方法针对父类与子类中的同名方法方法名称各重载方法的名称必须完全相同被继

76、承与继承的方法名称必须完全相同返回值类型各重载方法的返回值的类型必须完全相同被继承与继承的方法的返回值的类型必须完全相同参数类型各重载方法的参数类型必须不同被继承与继承方法的参数类型必须完全相同参数数目各重载方法的参数数目必须不同被继承与继承的方法的参数数目必须完全相同JavaJava程序设计基础与实践程序设计基础与实践7.4抽象类和最终类7.4.1抽象类与抽象方法类是对现实世界中实体的抽象,但我们不能以相同的方法为现实世界中所有的实体做模型,因为现实世界中大多数的类太抽象而不能独立存在。定义抽象类的一般格式如下:访问控制符abstractclass类名/属性说明/抽象方法声明/非抽象方法定义

77、 JavaJava程序设计基础与实践程序设计基础与实践7.4.1抽象类与抽象方法类中允许定义抽象方法。所谓抽象方法,是指在类中仅仅声明了类的行为,并没有真正实现行为的代码,即只有方法头、没有方法体的方法。声明抽象方法的一般格式如下:访问控制符abstract数据类型方法名(参数表);例如:abstractvoiddraw();/声明类中的draw()方法为抽象方法JavaJava程序设计基础与实践程序设计基础与实践7.4.2最终类与最终方法最终类是指不能被继承的类,即最终类没有子类。在Java语言中,如果不希望某个类被继承,可以声明这个类为最终类。最终类用关键字final来说明。如果没有必要创

78、建最终类,而又想保护类中的一些方法不被覆盖,可以用关键字final来指明那些不能被子类覆盖的方法,这些方法称为最终方法。例如:publicclassApublicfinalvoidf();JavaJava程序设计基础与实践程序设计基础与实践7.5接口7.5.1接口的概念o为了弥补Java语言只支持类间单继承的缺点,Java语言引入了接口(interface)机制,以此来实现类间多重继承功能。o接口是Java语言的特点之一,在Java中可以把接口看作是一种特殊的抽象类,它只包含常量和抽象方法的定义,而没有变量和方法的实现,它用来表明一个类必须做什么,而不去规定它如何做,因此我们可以通过接口表明多

79、个类需要实现的方法。由于接口中没有具体的实施细节,也就没有和存储空间的关联,所以可以将多个接口合并起来,由此来达到多重继承的目的。JavaJava程序设计基础与实践程序设计基础与实践7.5.2接口的定义与类的结构相似,接口也分为接口声明和接口体两部分。定义接口的一般格式如下:public interface 接口名接口名extends 父接口名列表父接口名列表 /接口体开始接口体开始 /常量数据成员的定义常量数据成员的定义 数据类型数据类型 常量名常量名=常数值常数值; /抽象方法的声明抽象方法的声明 返回值类型返回值类型 方法名方法名(参数列表参数列表) throw 异常列表异常列表; /接

80、口体结束接口体结束JavaJava程序设计基础与实践程序设计基础与实践7.5.2接口的定义说明如下:(1)接口的访问权限只有public和缺省类型。(2)interface是声明接口的关键字,与class类似。(3)接口的命名必须符合标识符的规定,并且接口名必须与文件名相同。(4)允许接口的多重继承,通过“extends父接口名列表”可以继承多个接口。(5)对接口体中定义的常量,系统默认为是staticfinal修饰的,不需要指定。JavaJava程序设计基础与实践程序设计基础与实践7.5.3接口的实现接口的实现,即在实现接口的类中重写接口中定义的所有方法,书写方法体代码,完成方法所规定的功能

81、。定义实现接口类的一般格式如下:访问控制符访问控制符 修饰符修饰符 class 类名类名 extends 父类名父类名 implements 接口名列表接口名列表 类的成员变量说明类的成员变量说明/属性说明属性说明 类的成员方法定义类的成员方法定义 类的构造方法定义类的构造方法定义/行为定义行为定义 /*重写接口方法重写接口方法*/ 接口方法定义接口方法定义/实现接口方法实现接口方法 /类体结束标志类体结束标志JavaJava程序设计基础与实践程序设计基础与实践7.6包7.6.1包的概念oJava语言提供了把类名空间划分为容易管理的块的机制,该机制就是包(package)。包作为Java语言的

82、特点之一,既是一种命名机制,也是一种可见度控制机制。可以在包内定义类,而且在包外不能访问该类。oJava语言中的包意指目录中一组相关的“.class”文件的集合,也可以说包就是文件夹,其作用是更好地管理Java类和接口。从另一个角度看,包就是类的容器,用来保存划分的类名空间。例如,一个包允许用户创建一个名为Counter的类,用户可以把它保存在自己的包中而不用考虑和其他地方的某个名为Counter的类相冲突。JavaJava程序设计基础与实践程序设计基础与实践7.6.1包的概念o为了区别于各种平台,Java语言中采用点号(.)来分隔目录。使用包不仅可以避免名字的冲突,还可以将大量的类按照功能和

83、用途组织起来,使访问和查找变得更加方便,从而提供一定的访问控制。类、方法和域的默认访问权限是可以在声明它的包中被访问。JavaJava程序设计基础与实践程序设计基础与实践7.6.2包的创建在Java语言中创建一个包的步骤很简单,即通过关键字package来声明包。其格式如下:package包名;package语句作为Java源文件的第1条非空格、非注释语句,指明该源文件定义的类所在的包。如果在源文件中省略了package语句,则源文件中用户定义命名的类被隐含地认为是无名包的一部分,即源文件中用户定义命名的类在同一个包中,但该包没有名字。尽管默认包对于规模较小的程序很好用,但对于实际的中、大型应

84、用程序,显然它是不适用的。多数情况下,我们需要为自己的代码定义一个包。JavaJava程序设计基础与实践程序设计基础与实践7.6.3包的引用创建了一个包之后,就要对它进行引用。一般来说,可使用import语句导入包中的类。其一般格式如下: import 包名包名.*; /可以使用包中所有的类或import 包名包名.类名类名; /只导入包中指定类名的类在程序中,import语句应放在package语句之后,如果没有package语句,则import语句应放在程序开始处。一个程序中可以含有多个import语句,即在一个类中,可以根据需要引用多个包中的类。JavaJava程序设计基础与实践程序设计

85、基础与实践7.6.4常用的Java类库包o1java.lang包包Java语言的核心包,它有Java程序所需要的最基本的类与接口,java.lang包由编译器自动引入。o2java.applet包包java.applet包用来实现运行于Internet浏览器中的JavaApplet的工具类库。o3java.awt包包java.awt包是Java抽象窗口工具包,其中包含了许多关于字体和颜色设置、几何绘图、图像显示、图形用户接口操作的类和接口。JavaJava程序设计基础与实践程序设计基础与实践7.6.4常用的Java类库包o4java.io包包 java.io包是Java语言的标准输入/输出类库

86、,其中包含了实现Java程序与操作系统、外部设备以及其他Java程序做数据交换所使用的类。包包包是Java网络包,主要实现网络功能。o6java.util包包java.util包主要包含了Java语言中的一些低级的实用工具,如处理时间的Date类、处理变长数组的Vector类、实现栈和杂凑表的Stack类和HashTable类等。JavaJava程序设计基础与实践程序设计基础与实践7.6.4常用的Java类库包o7java.awt.event包包java.awt.event包主要包含了用来处理鼠标、键盘等事件的接口方法。o8java.swing包包java.swing包主要包含以AWT组件为基

87、础的第二代GUI设计工具包组件Swing组件。该包提供了从按钮到可拆分面板和表格的所有组件,这些组件均以字母J打头命名。JavaJava程序设计基础与实践程序设计基础与实践第8章异常重点难点熟悉使用try-catch-finally块处理异常会使用throws声明异常o会使用throw抛出异常o使用Log4j记录日志学习目标理解try-catch-finally块处理异常理解声明异常(throws)及抛出异常(throw)掌握异常及其分类使用Log4j记录日志JavaJava程序设计基础与实践程序设计基础与实践8.1典型案例【案例描述】如果程序中出现了异常,而又没有进行相应的处理,则程序运行时

88、异常会被Java语言默认的异常处理程序捕获并处理。默认的处理通常是显示异常的字符串,并从异常发生的位置打印一个堆栈跟踪然后结束程序。运行结果如图所示。【运行结果】JavaJava程序设计基础与实践程序设计基础与实践8.2异常概述异常就是在程序的运行过程中所发生的不正常的事件,比如所需文件找不到、网络连接不通或中断、算术运算出错(如被零除)、数组下标越界、装载了一个不存在的类、对null对象操作、类型转换异常等。异常会中断正在运行的程序。举例说明JavaJava程序设计基础与实践程序设计基础与实践8.3异常处理异常处理机制就像我们对平时可能会遇到的意外情况预先想好了一些处理的办法。也就是说,在程

89、序执行代码的时候,万一发生了异常,程序会按照预定的处理办法对异常进行处理,异常处理完毕之后,程序继续运行。Java的异常处理是通过五个关键字来实现的:try,catch,finally,throw和throwsJavaJava程序设计基础与实践程序设计基础与实践try-catch块try-catch程序块的执行流程比较简单。首先执行的是try语句块中的语句,这时可能会有以下三种情况。(1)如果try语句块中所有语句正常执行完毕,不会发生异常,那么catch语句块中的所有语句都将会被忽略。(2)如果try语句块在执行过程中碰到异常,并且这个异常与catch语句块中声明的异常类型相匹配,那么在tr

90、y语句块中其余剩下的代码都将被忽略,而相应的catch语句块将被执行。匹配是指catch语句块所处理的异常类型与所生成的异常类型完全一致或是它的父类。(3)如果try语句块在执行过程中碰到异常,而抛出的异常在catch语句块里面没有被声明,那么程序立刻退出。JavaJava程序设计基础与实践程序设计基础与实践try-catch块在catch块中可以加入用户自定义的处理信息,也可以调用异常对象的方法输出异常信息,常用的方法主要有以下两种:voidprintStackTrace():输出异常的堆栈信息。StringgetMessage():返回异常信息描述字符串。如果try块在执行过程中碰到异常,

91、那么在try块中其余剩下的代码都将被忽略,系统会自动生成相应的异常对象,包括异常的类型、异常出现时程序的运行状态以及对该异常的详细描述。如果这个异常对象与catch块中声明的异常类型相匹配,程序会把该异常对象赋给catch块后面的异常参数,相应的catch块将被执行。JavaJava程序设计基础与实践程序设计基础与实践try-catch-finally块在try-catch块后加入finally块,把该语句放入finally块,无论是否发生异常,finally块中的代码总能被执行。(1 1)如果)如果trytry块中所有语句正常执行完毕,那么块中所有语句正常执行完毕,那么finallyfina

92、lly块块就会被执行。就会被执行。(2 2)如果)如果trytry块在执行过程中碰到异常,无论这种异常能否块在执行过程中碰到异常,无论这种异常能否被被catchcatch块捕获到,都将执行块捕获到,都将执行finallyfinally块中的代码。块中的代码。JavaJava程序设计基础与实践程序设计基础与实践多重catch块一段代码可能会引发多种类型的异常,这时,我们可以在一个try语句块后面跟多个catch语句块,分别处理不同的异常,但排列顺序必须是从子类到父类,最后一个一般都是Exception类。因为按照匹配原则,如果把父类异常放到前面,后面的catch语句块将得不到执行的机会。运行时,

93、系统从上到下分别对每个catch语句块处理的异常类型进行检测,并执行第一个与异常类型匹配的catch语句块,执行其中的一个catch语句块之后,其后的catch语句块都将被忽略。JavaJava程序设计基础与实践程序设计基础与实践8.3.5声明异常throws如果在一个方法体中抛出了异常,我们就希望调用者能够及时地捕获异常。那么如何通知调用者呢?Java语言中通过关键字throws声明某个方法可能抛出的各种异常。throws可以同时声明多个异常,之间用逗号隔开。调用者通过try-catch块捕获并处理异常。举例说明:JavaJava程序设计基础与实践程序设计基础与实践8.4抛出异常8.4.1抛

94、出异常throw在Java语言中,可以使用throw关键字来自行抛出异常。throw和throws的区别表现在以下三个方面。o作用不同:作用不同:throw用于程序员自行抛出异常,用于程序员自行抛出异常,throws用于声明在方法内抛出异常。用于声明在方法内抛出异常。o使用的位置不同:使用的位置不同:throw位于方法体内部,可以作为位于方法体内部,可以作为单独语句使用;单独语句使用;throws必须跟在方法参数列表的后面,必须跟在方法参数列表的后面,不能单独使用。不能单独使用。o内容不同:内容不同:throw抛出一个异常对象,而且只能是一抛出一个异常对象,而且只能是一个;个;throws后面

95、跟异常类,而且可以跟多个异常类。后面跟异常类,而且可以跟多个异常类。JavaJava程序设计基础与实践程序设计基础与实践8.4.2异常的分类JavaJava程序设计基础与实践程序设计基础与实践8.5开源日志记录工具Log4j有时,我们还希望以文件的形式记录这些异常信息,甚至记录程序正常运行的关键步骤信息,以便日后查看,这种情况该如何处理呢? 显然,我们可以自行编程实现这一效果,但是从更注重效率和性能方面考虑,还有一个更好的选择,那就是使用流行的开源项目:Log4j。JavaJava程序设计基础与实践程序设计基础与实践8.5开源日志记录工具Log4j在Eclipse中使用Log4j的步骤比较简单

96、,主要分四个步骤。(1)在项目中加入Log4j所使用的JAR文件。(2)创建log4j.properties文件。(3)编写log4j.properties文件,配置日志信息。(4)在程序中使用Log4j记录日志信息。JavaJava程序设计基础与实践程序设计基础与实践日志及分类软件的运行过程离不开日志。日志主要用来记录系统运行过程中的一些重要的操作信息,便于监视系统运行情况,帮助用户提前发现和避开可能出现的问题或者出现问题后根据日志找到原因。日志根据记录内容的不同,主要分成以下三类:SQL日志:记录系统执行的SQL语句。异常日志:记录系统运行中发生的异常事件。业务日志:记录系统运行过程,例如

97、用户登录、操作记录。JavaJava程序设计基础与实践程序设计基础与实践日志及分类Log4j是一个非常优秀的日志记录工具。通过使用Log4j,我们可以控制日志的输出级别,可以控制日志信息输送的目的地是控制台或文件等,还可以控制每一条日志的输出格式。要使用Log4j,首先需要下载Log4j的JAR包。Log4j是Apache的一个开源项目。JavaJava程序设计基础与实践程序设计基础与实践第9章输入/输出处理重点难点熟练使用字节流读写文件熟练使用字符流读写文件学习目标了解Java语言中流的基本概念掌握与输入/输出流有关的类及简单应用掌握在Java程序中实现多种输入/输出操作的技能JavaJav

98、a程序设计基础与实践程序设计基础与实践9.1典型案例【案例描述】文件source.txt位于E盘根目录下,要求将此文件的内容复制到F:target.txt中,运行结果如图所示。【运行结果】JavaJava程序设计基础与实践程序设计基础与实践9.2输入/输出流概述Java语言的输入/输出功能是十分强大而灵活的,美中不足的是看上去输入/输出的代码并不是很简洁,因为往往需要包装许多不同的对象。Java语言提供了4个非常重要的输入/输出基类,即InputStream类、OutputStream类、Reader类和Writer类。JavaJava程序设计基础与实践程序设计基础与实践9.2输入/输出流概述

99、Java语言把这些不同类型的输入/输出源抽象为流(Stream),用统一接口来表示,从而使程序简单明了。JDK提供了输入/输出类库java.io包,其中包括一系列的类可用来实现输入/输出处理。利用它们可以方便地实现多种输入/输出操作和复杂的文件与目录管理。JavaJava程序设计基础与实践程序设计基础与实践9.2输入/输出流概述“流”可以被理解为一条“导管”。这条“导管”有两个出口:一个出口与数据源或目的数据源相连,另一个出口与程序相连。用户不必关心另一端的形式是什么,只要索取自己想要的数据即可。有了流,程序和外界的数据交换就可以通过流来实现。当程序要从数据源获取数据时,必须在程序和数据源之间

100、建立输入流;当程序要把数据写入到目的数据源时,必须在程序和目的数据源之间建立输出流。JavaJava程序设计基础与实践程序设计基础与实践9.3输入/输出类System类是Java语言中一个功能强大、使用频繁的类,它提供了标准输入/输出类及系统信息。System类不能创建对象,System.in与System.out是System类的两个静态属性,分别对应了系统的标准输入流、输出流。o从功能上可分为:输入流类和输出流类。输入数据用输入流类,输出数据用输出流类。o从流结构上可分为:字节流类和字符流类。字节流的输入/输出基础是抽象类InputStream类和OutputStream类。字符流的输入/

101、输出基础是抽象类Reader类和Writer类。JavaJava程序设计基础与实践程序设计基础与实践9.3.1字节流InputStream类和OutputStream类1字节输入流类(字节输入流类(InputStream类)类)o字节输入流类的作用是从外部设备获取字节数据输入到计算机内存中。在编写应用程序时,常常需要定义字节输入流类的子类及方法,才能够实现字节输入功能。2字节输出流类(字节输出流类(OutputStream类)类)o字节输出流类的作用是将暂存在计算机内存中的数据输出到外部设备。在编写应用程序时,常常需要定义字节输出流类的子类和方法,才能够实现字节输出功能。JavaJava程序设

102、计基础与实践程序设计基础与实践9.3.2字符流Reader类和Writer类1字符输入流类(字符输入流类(Reader类)类)o字符输入流类的作用是从外部设备获取字符数据输入到计算机内存中。在编写应用程序时,常常需要定义字符输入流类的子类和方法,才能够实现字符输入功能。2字符输出流类(字符输出流类(Writer类)类)o字符输出流类的作用是将暂存在计算机内存中的数据输出到外部设备。在编写应用程序时,常常需要定义字符输出流类的子类和方法,才能够实现字符输出功能。JavaJava程序设计基础与实践程序设计基础与实践9.3.3标准输入/输出o标准设备在程序中使用时,可以不用专门地打开操作就能直接应用

103、。一般地,标准输入设备是键盘,标准输出设备是终端显示器,标准错误输出设备也是显示器。o标准输入/输出一共有3个标准流:in、out和err,它们由java.lang.System类管理。System.in:标准输入流,用于程序输入,通常读取用户从键盘输入的信息;oSystem.out:标准输出流,用于程序输出,通常用于显示器向用户显示信息,System.err称为标准错误流,用于向用户显示出错信息。JavaJava程序设计基础与实践程序设计基础与实践9.3.3标准输入/输出每当main()方法被执行时,就自动生成上述3个流对象。标准输入流包含了从键盘获取的输入信息,可通过如下格式实现:Syst

104、em.in.方法;当用户从键盘读入数据时,主要通过read()方法来实现。read()方法有3种使用格式:(1)read():从输入流读入一个字节。(2)read(byte):将指定个数的字节数据读入到一个字节数组中。(3)read(byte,intoff,intlen):将len个字节的数据读入到一个字节数组中。标准输出流定义了向屏幕输出不同类型数据的方法print()和println()。JavaJava程序设计基础与实践程序设计基础与实践9.4文件的顺序访问9.4.1 输入输入/输出流操作的一般步骤输出流操作的一般步骤输入/输出流操作的一般步骤如下:(1)使用引入语句引入java.io包

105、:import.java.io.*。(2)根据情况建立字节流或字符流对象。(3)若需将字节或字符流信息组织加工为数据,可在已建字节流或字符流对象上构建数据流对象。(4)用输入/输出流对象的成员方法进行读/写操作,需要时设置读/写位置指针。(5)关闭流对象。注意考虑其中的异常处理。JavaJava程序设计基础与实践程序设计基础与实践9.4.2字节流类字节流和字符流是Java提供的两种输入/输出处理方式。字节流以单个字节为读/写单位,字符流以字符为读/写单位。一般字符由多个字节组成。常用的字节流有FileInputStream和FileOutputStream、BufferedInputStrea

106、m和BufferedOutputStream、DataInputStream和DataOutputStream。JavaJava程序设计基础与实践程序设计基础与实践9.4.2字节流类1FileInputStream类和FileOutputStream类(1)创建字节输入文件流FileInputStream类对象。(2)从流中读取数据。(3)创建字节输出文件流FileOutputStream类对象(4)向输出流写信息。(5)关闭流。JavaJava程序设计基础与实践程序设计基础与实践9.4.2字节流类2DataInputStream类和DataOutputStream类 数据文件流DataInp

107、utStream类和DataOutputStream类可以进行基本类型数据的输入和输出,但是这两个类的对象必须和一个输入类或输出类联系起来,不能直接用文件名或文件对象建立。 使用数据文件流的步骤:先建立字节文件流对象,然后建立数据文件流对象,用此对象的方法对基本类型的数据进行输入/输出操作。JavaJava程序设计基础与实践程序设计基础与实践9.4.2字节流类3BufferedInputStream类和BufferedOutputStream类(1)创建BufferedOutputStream类对象。先要有一个FileOutStream类对象,然后创建缓冲流对象。(2)用flush()方法更新

108、流。 (3)创建BufferedInputStream类对象。(4)缓冲流类的应用4PrintStream类PrintStream类提供了将Java语言中的其他类型转换为字符串类型输出的能力,创建PrintStream类也需要OutputStream类对象。 JavaJava程序设计基础与实践程序设计基础与实践9.4.3字符流类1InputStreamReader类和OutputStreamWriter类 InputStreamReader类和OutputStreamWriter类是字节流和字符流连接的纽带。字节流的编码规范可以在构造流对象时指定,也可以使用当前默认的规范。2FileReade

109、r类和FileWriter类 FileReader类和FileWriter类是InputStreamReader类和OutputStreamWriter类的子类,利用它们可方便地进行字符输入/输出操作。JavaJava程序设计基础与实践程序设计基础与实践9.4.3字符流类3BufferedReader类和BufferedWriter类 缓冲字符流类BufferedReader类和BufferedWriter类的使用,可以提高字符流处理的效率。4PrintWriter类 PrintWriter类提供了字符流的输出处理。由于该类的对象可基于字节流或字符流来创建写字符的方法print()和print

110、ln(),它可将基本类型的数据转换为字符串输出,使用起来很方便。JavaJava程序设计基础与实践程序设计基础与实践9.5文件的随机访问 在进行文件的读/写操作时,有时需要跳着读,有时需要同时读/写。Java提供的RandomAccessFile类可以对文件进行读/写操作。RandomAccessFile类直接继承于Object类。9.5.1 建立随机访问文件流对象建立随机访问文件流对象 RandomAccessFile类的构造方法如下: RandomAccessFile(File file,String mode) RandomAccessFile(String name,String mo

111、de) JavaJava程序设计基础与实践程序设计基础与实践9.5.2随机访问文件方法 随机访问文件可以使用read()和write()等方法操作文件指针。向随机访问文件增加信息即向文件尾后写内容,可以用rw访问方式打开文件后,向随机访问文件增加信息。例如: rf=newRandomAccessFile(c:/test.txt,rw);/用rw方式打开c:/test.txt文件rf.seek(rf.length();/文件rf的文件指针移到文件末尾rf.write(张三.getBytes();/在test.txt文件的末尾添加字符“张三”JavaJava程序设计基础与实践程序设计基础与实践9.

112、5.3文件指针及相关方法 随机访问文件的任意位置数据的读/写是通过移动文件指针指定文件读/写位置来实现的。与文件指针有关的常用方法有:intSkipBytes(n):将文件指针向文件末尾方向移动n个字节。longgetFilePointer():返回文件指针的当前字节位置。voidseek(longpos):将文件指针定位到一个绝对地址pos,0表示文件的开头。JavaJava程序设计基础与实践程序设计基础与实践9.6目录和文件管理java.io包中的File类提供了与具体平台无关的方式来描述目录和文件对象的属性功能,其中包含大量的方法,可用来获取路径、目录和文件的相关信息,并对它们进行创建、

113、删除、改名等管理工作。不同的系统平台对文件路径的描述不尽相同,为做到与平台无关,Java语言中使用了抽象路径的概念。Java自动进行不同系统平台的文件路径描述与抽象文件路径之间的转换。File类的直接父类是Object类。JavaJava程序设计基础与实践程序设计基础与实践9.6目录和文件管理9.6.1 目录管理目录管理 目录操作的主要方法有:publicbooleanmkdir():根据抽象路径名创建目录。publicStringlist():返回抽象路径名表示的路径中的文件名和目录名。9.6.2 文件管理文件管理在进行文件操作时,往往需要知道关于文件的信息。Java语言的File类提供了一

114、个成员方法来操纵文件和获得该文件的信息。一旦创建了一个文件对象,便可以使用以下成员函数来获得文件的相关信息。JavaJava程序设计基础与实践程序设计基础与实践第10章 Java的数据库编程开发重点难点掌握Connection,PreparedStatement语句掌握ResultSet的循环处理学习目标掌握JDBC的工作原理掌握如何获取数据库连接掌握如何对数据进行增、删、改、查JavaJava程序设计基础与实践程序设计基础与实践10.1典型案例【案例描述】使用Eclipse编写程序,假定在SQLServer2012中已经建立名称为news的数据库,数据库用户名为sa,密码为sa,连接数据库成

115、功输出“建立连接成功!”并关闭连接。运行结果如图所示。【运行结果】JavaJava程序设计基础与实践程序设计基础与实践10.2.1JDBC的功能简介JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力。有了JDBC,访问各种数据库就是一件很容易的事。换而言之,有了JDBC,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库或SQL Server数据库又专门写另外的程序。我们只需要用JDBC写一个程序就够了。JavaJava程序设计基础与实践程序设计基础与实践10.2.1JDBC的功能简介JDBC程序的工作原理1JDBCAPI:提供了Java应用程序与各种不同

116、数据库交互的标准接口。2JDBCDriverManager:由Sun公司提供,它能够管理各种不同的JDBC驱动。3JDBC驱动:由各个数据库厂商提供,负责连接各种不同的数据库。JavaJava程序设计基础与实践程序设计基础与实践10.2.1JDBC的功能简介JDBCAPI可做三件事:与数据库建立连接、发送SQL语句、处理结果JDBCAPI工作的4个重要环节。(1)DriverManager类:依据数据库的不同,管理JDBC驱动。(2)Connection接口:负责连接数据库并担任传送数据的任务。(3)Statement接口:由Connection接口产生,负责执行SQL语句。(4)Result

117、Set接口:负责保存Statement语句执行后所产生的查询结果。JavaJava程序设计基础与实践程序设计基础与实践10.2.2JDBC应用模型开发一个JDBC应用程序,基本需要以下步骤:(1)把JDBC驱动类装载入Java虚拟机中。(2)加载驱动,并与数据库建立连接。(3)发送SQL语句,并得到结果集。一旦建立连接,就使用该连接创建Statement接口的实例,将SQL语句传递给它所连接的数据库,并返回类型为ResultSet的对象,它包含执行SQL查询语句的结果。(4)处理结果。使用ResultSet对象的next()方法将光标(cursor)指向下一行。下面给出JDBC程序的代码模板:

118、JavaJava程序设计基础与实践程序设计基础与实践10.2.2JDBC应用模型JavaJava程序设计基础与实践程序设计基础与实践10.3应用JDBC访问数据库10.3.1加载JDBC驱动1JDBC-ODBC桥连不需要额外下载JDBC驱动程序,只需要配置ODBC数据源。2纯Java驱动方式首先,需要下载数据库厂商提供的驱动程序jar包,并将jar包引入工程中。JavaJava程序设计基础与实践程序设计基础与实践10.3.2开发任务描述案例需求:对新闻发布系统中的新闻标题进行管理,要求如下所示。(1)新闻标题存储在SQL Server 2012中。(2)通过JDBC对新闻标题进行增、删、改、查

119、操作JavaJava程序设计基础与实践程序设计基础与实践10.3.3Statement语句获取Connection对象之后就可以进行数据库操作了。使用Connection对象,可以生成Statement实例。下面列出了执行SQL命令的三个方法。(1)ResultSetexecuteQuery(Stringsql):可以执行SQL查询语句并获取到ResultSet对象。(2)intexecuteUpdate(Stringsql):可以执行插入、删除、更新等操作,返回值是执行该操作所影响的行数。(3)booleanexecute(Stringsql):这是一个最为一般的执行方法,可以执行任意SQL

120、语句,然后获得一个布尔值,表示是否返回ResultSet。JavaJava程序设计基础与实践程序设计基础与实践10.3.4PreparedStatement语句PreparedStatement接口继承自Statement接口,PreparedStatement对象比普通的Statement对象使用起来更加灵活,更有效率。PreparedStatement实例包含已编译的SQL语句,SQL语句可具有一个或多个输入参数。这些输入参数的值在SQL语句创建时未被指定,而是为每个输入参数保留一个问号(?)作为占位符。JavaJava程序设计基础与实践程序设计基础与实践10.3.5使用PreparedStatement插入数据JavaJava程序设计基础与实践程序设计基础与实践10.3.6使用PreparedStatement删除数据JavaJava程序设计基础与实践程序设计基础与实践10.3.7使用PreparedStatement更新数据10.3.8使用PreparedStatement查询数据

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号