Java从入门到实践.ppt

上传人:max****ui 文档编号:6358397 上传时间:2020-02-23 格式:PPT 页数:226 大小:1.30MB
返回 下载 相关 举报
Java从入门到实践.ppt_第1页
第1页 / 共226页
Java从入门到实践.ppt_第2页
第2页 / 共226页
Java从入门到实践.ppt_第3页
第3页 / 共226页
点击查看更多>>
资源描述
第1章Java语言概述 Java语言是当前非常流行的开发语言 广泛应用于信息技术 科学研究 军事工业 航空航天等各个领域 Java语言发展到今天 互联网的快速发展起了很大的推动作用 下面将对Java语言的发展 特点 运行环境等方面做个简要介绍 使读者对Java语言有个全面了解 本章包括以下知识点 源码网整理 Java语言简介 运行环境的搭建 编写第一个Java程序 通过学习本章内容 读者可以对Java语言有个全面的了解 并且掌握Java程序运行环境的搭建过程 1 1Java语言简介 Java语言是当前非常流行的开发语言 不过发展到今天也走过了非常曲折的道路 下面就从语言的发展 特点 工作原理几个方面详细介绍一下Java语言 1 1 1Java语言的发展 计算机编程语言不断发展 Java语言发展到今天也走过了非常曲折的道路 事物的产生都有其必然的因素 Java语言的出现也验证了这一点 透过Java语言的发展历程 可以更详尽的了解什么是Java Java语言发展到今天 可以说互联网的快速发展起了很大的推动作用 现在谈到Java 已不仅仅表示一门程序语言 更是一种软件开发平台 Java已经演化出了J2SE J2EE J2ME三个版本 分别面向不同领域的应用开发 1 Java2Platform StandardEdition J2SE 2 Java2Platform EnterpriseEdition J2EE 3 Java2Platform MicroEdition J2ME 1 1 2Java语言的特点 Java语言是一种分布式的面向对象编程语言 在各个行业领域开发中得到了广泛的应用 作为一种程序设计语言 Java具有面向对象 平台无关 简单 健壮 多线程 安全等诸多特性 下面就这些方面特性分别进行讨论 1 面向对象2 平台无关性3 简单性4 解释执行5 网络的6 分布式7 健壮性8 可扩展性9 安全性 1 1 3工作原理 虚拟机 JVM 与垃圾回收是Java语言工作的两种重要机制 下面对其分别进行详细介绍 1 Java虚拟机 JVM 2 垃圾回收机制 1 2Java程序运行环境 在使用一门语言之前 首先需要搭建相关的运行环境 下面就从JDK的安装 环境变量设置 开发工具几个方面介绍如何搭建Java语言的运行环境 1 2 1下载 安装JDK 要进行Java应用程序开发 首先需要安装JDK JavaDevelopmentKits JDK是Sun公司提供的一套Java开发环境 具有多种操作系统的多个版本 自从Java诞生以来 JDK的版本一直在不断升级 如JDK1 3 JDK1 4 JDK1 5 下面以J2SE6 0DevelopmentKits在Windows操作系统下的安装为例 逐步搭建Java程序的运行环境 1 2 2设置环境变量 Java程序运行的环境变量主要包括Path和Classpath Path用于指定JDK包含的工具程序所在的路径 这与设置操作系统中其他应用程序的Path是一样的 Classpath是Java程序运行所特需的环境变量 用于指定运行的Java程序所需的类的加载路径 设置Java运行环境变量有命令行和图形界面两种形式 下面分别进行介绍 1 设置Path2 设置Classpath 1 2 3开发工具介绍 Eclipse是一个流行的针对Java编程的集成开发环境 IDE 它还可以用作编写其他语言 比如C 和Ruby 的环境 合并各种种类工具的框架 以及创建桌面或服务器应用程序的富客户端平台 Eclipse是开放源代码的项目 可以免费下载 它的官方网址是http www Eclipse org 目前最新的版本号是3 4 1 3第一个Java程序 在全面学习一门编程语言之前 最快的对该语言进行大致了解的方式就是编写一个简单的程序 下面就以第一个Java程序为例 详细介绍Java程序的编写 编译 运行等过程 1 3 1编写程序 配置好程序运行环境后就可以动手编写Java程序了 通过编写第一个简单的Java程序 能够对Java有个快速的体验 也能验证运行环境配置的正确与否 学习一门程序语言 通常都是以一个 HelloWorld 的程序开始 为了让读者能够更深的体会Java程序的编写 执行过程 下面的实例先是采用文本编辑器编写 命令行方式执行 最后将会介绍使用Eclipse编写该实例的过程 1 3 2编译 运行 程序编写完成后 在执行前首先需要进行编译 编译Java源程序需要使用Javac命令程序 命令行方式编译 运行Java源程序的步骤如下所示 1 3 3使用Eclipse编写 执行程序 在掌握了用命令行方式编译 执行程序的方法后 下面详细介绍一下如何使用Eclipse编写 执行上面列举的HelloWorld程序 1 3 4程序结构说明 第一个Java程序比较简单 但毕竟是一个完整的程序 能够正确执行 下面对这个程序的整个结构做个简单说明 以便对Java程序结构有个最初步的简单认识 01publicclassHelloWorld 定义类HelloWorld02 定义main 方法03publicstaticvoidmain Stringargs 04System out println HelloWorld 输出字符串05 06 1 3 5Java程序调试技巧 程序调试是程序开发过程中很重要的一项工作 即时熟练的开发人员也是如此 不过 对于初学者来说有时更容易犯一些入门级的错误 很小的一个错误往往使初学者费尽周折 为此花费大量精力 下面给出一些编写程序过程中经常遇到的一些问题及调试技巧 以便在遇到问题时能够快速饩觥1 Path Classpath的问题2 注意大小写3 主文件名与类名一致4 全角与半角5 使用Eclipse调试程序 1 6小结 本章介绍了Java语言的发展 特点 运行环境等方面内容 另外 通过一个实例程序演示了Java程序的编写 编译 执行 调试过程 本章的重点是掌握Java程序运行环境的搭建 从下一章开始 本书将全面展开Java语言具体内容的学习 1 7本章习题 1 Java语言都有哪些特点 按应用领域来分 有哪些版本 2 如何搭建Java程序的运行环境 3 什么是Classpath 该如何设置 第2章简单数据类型及运算 在Java语言中定义了一组简单数据类型 这些数据类型是构成其他数据类型的基础 简单数据类型类似结构化编程语言中的数据类型 定义了数据类型的变量与常量 与运算符进行组合 可以形成各种复杂的表达式 从而构成程序中的基本运算单元 在各种编程语言中 可以说数据类型 运算符及表达式等都是程序基础 会同标识符 关键字 变量与常量 这些基础知识又互相衔接 密不可分 本章针对这些基础知识逐一详细介绍 2 1标识符与关键字 程序中的标识符与关键字都具有一定的含义 标识符是用户定义的程序中类 变量 常量 方法等的标识 关键字是语言本身留作特殊用途的专用符号 关于标识符与关键字的具体知识 下面分别进行介绍 2 1 1标识符 标识符是指程序中类 变量 常量 方法等的名字 类 变量 常量 方法等进行定义和引用时需要利用一定的标识进行识别 这就需要使用标识符 标识符的命名必需符合一定的规范 Java语言的标识符命名规则如下 首字符必需是字母 下划线 美元符号 或者人民币符号 标识符由数字0 9 大写字母A Z 小写字母a z和下划线 美元符号 以及所有在十六进制0 xc0前的ASCII码等组成 不能把关键字和保留字作为标识符 标识符对大小写敏感 也就是需要区分大小写 标识符没有长度限制 2 1 2关键字 语言本身专门使用的标识符为关键字 在程序代码中有其特殊的含义 Java常用的关键字有package class interface public private protected default int byte double boolean char if else while switch case do break continue try catch finally throw throws new this super等 所有的关键字都为小写 每个都有其特殊的作用 比如 用于包 类 接口定义 package class interface 访问控制修饰符 public private protected default 数据类型 int byte double boolean char 关于流程控制 if else while switch case do break continue 关于异常处理 try catch finally throw throws 创建对象 new 引用 this supe 2 2基本数据类型 程序中的主要数据元素为变量与常量 每一个变量与常量必须属于一种数据类型 数据类型指定了该类数据所占内存空间的大小 取值范围及其可以进行的操作 Java语言中的数据类型可分为基本数据类型和复合数据类型 基本数据类型可称为 原始数据类型 是其他数据类型的基础 复合数据类型以基本数据类型为基础 通常以类的形式进行封装 复合数据类型的概念后续章节会详细说明 基本数据类型主要包括布尔类型 字符型 整型 实型 下面分别进行介绍 2 2 1布尔类型 布尔类型用关键字boolean表示 只有true和false两个值 布尔类型通常用在流程控制中进行逻辑判断 布尔型数据在机器中占1个字节 系统默认初始值为false 2 2 2字符型 字符型用关键字char表示 Java中的字符属于Unicode编码 一种类似于ASCII码的国际标准编码 采用二字节编码 由于计算机底层只能处理二进制数据 要想使用字符 就需要对字符进行编码 转换成一系列二进制数来表示特定的字符 目前有多种编码字符集 如Unicode ISO 8859 1 GBK ASCII等 不同的字符集收录的字符不尽相同 Unicode属于国际标准字符集 收录了世界上所有各国语言文字的字符 字符型数据在机器中占2个字节 默认初始值为 u0000 2 2 3整型 整型用来表示不含小数部分的数字 Java语言中共有四种整数类型 分别是byte short int和long 这四种整数类型占用的内存空间各不相同 从而取值范围也不同 2 2 4实型 浮点型 实型用来表示含有小数的数字 Java语言中共有float和double两种实数类型 这两种实数类型占用的内存空间 取值范围各不相同 2 2 5数据类型转换 在程序编写过程中 不同数据类型的变量之间经常需要赋值或运算 这就需要进行数据类型转换 各种数据类型根据分配空间大小 取值范围不同 划分为一定的优先级关系 再根据优先级 数据类型转换分为自动类型转换和强制类型转换 1 自动类型转换2 强制类型转换 2 3运算符与表达式 运算符与表达式的概念是紧密联系在一起的 运算符与操作数组成表达式来完成相应的运算 不同类型的运算符 组成不同的表达式 可以完成不同类型的运算 表达式是具有确定值的语句 由操作数和各种运算符按照一定的规则组成 表达式的值可以作为操作数 进而形成更复杂的表达健Java语言中的运算符主要包括如下类别 算术运算符 赋值运算符 关系运算符 逻辑运算符 位运算符 条件运算符 2 3 1算术运算符及表达式 算术运算符和操作数组成算术表达式 完成基本的算术运算 算术运算符按照操作数的个数可以分为二元运算符和一元运算符 下面分别进行介绍 1 二元算术运算符2 一元算术运算符 2 3 2赋值运算符及表达式 由赋值运算符组成的表达式为赋值表达式 赋值运算符只有一个 即 赋值运算符用于运算符右边的值赋值给左边的变量 2 3 3关系运算符及表达式 由关系运算符及两个操作数组成关系表达式 关系运算符都是二元运算符 用来比较两个操作数 执行结果为布尔型 关系运算符共有六种 分别是 大于 大于等于 小于等于 等于 和 不等于 关系表达式的语法格式如下所示 operation1Operatoroperation2其中 参数operation1表示第一个操作数 参数Operator表示关系运算符 参数operation2表示第二个操作数 2 3 4逻辑运算符及表达式 由逻辑运算符及操作数组成逻辑表达式 逻辑运算符共有三个 分别是 逻辑与 逻辑或 和 逻辑非 其中 逻辑与 逻辑或 是二元运算符 逻辑非 是一元运算符 逻辑表达式的操作数都必须为布尔型 执行结果也为布尔型 2 3 5位运算符及表达式 位运算是指将操作数以二进制位的形式进行运算 位运算的操作数只能是整数类型 位运算符共有七个 分别是 位右移 无符号位右移 按位与 按位或 按位异或 和 按位取反 其中前六项均为二元运算符 而 按位取反 是一元运算符 2 3 6条件运算符及表达式 条件运算符为三元运算符 由条件运算符和三个操作数组成三元条件表达式 三元条件表达式运算时首先判断条件式 第一个操作数 为布尔型 的值 如果为true 则整个表达式的结果为冒号前的值 否则为冒号后的值 三元条件表达式的语法格式如下所示 operation1 operation2 operation3其中 参数operation1表示第一个操作数 值必需为布尔类型 可以为表达式 参数operation2表示第二个操作数 当第一个操作数的值为true时 其值作为表达式的结果 参数operation3表示第三个操作数 当第一个操作数的值为false时 其值作为表达式的结果 2 3 7运算符的优先级 最简单的表达式是一个变量或常量 变量或常量的值就是表达式的值 前面讲过 表达式的值可以作为操作数 从而组成更加复杂的表达式 复杂的表达式中往往包含多个运算符 它们的计算需要有一定的先后顺序 这就是运算符的优先级 2 4变量与常量 变量与常量是程序中的基本数据元素 变量代表运行过程中值可以改变的数据 常量代表运行过程中值恒定不变的数据 关于变量与常量的具体知识 下面分别进行介绍 2 4 1定义变量 变量是编程语言中十分重要的概念 代表一定的存储空间 里面用来存储相应数据 类中的变量用来表示类的属性 在程序运行过程中 变量所对应的值是可以变化的 定义变量的语法如下所示 typeVariablename initialvalue 其中 参数type表示变量的类型 可以是基本类型 也可以是复杂类型 关于数据类型 下面会详细说明 参数Variablename表示变量名称 需要符合标识符的命名规范 参数 为赋值运算符 这里用于初始化 运算符的概念后续章节会详细说明 参数initialvalue表示初始化值 2 4 2变量的作用域 变量的作用域规定了变量能被使用的范围 只有在作用域范围内 变量才能够被调用 作用域在变量声明时即被指定 根据作用域的不同 变量可以分为不同的类型 类变量 局部变量 方法参数变量 异常处理参数变量 下面分别对这几类变量进行详细介绍 1 类变量2 局部变量3 方法参数变量4 异常处理参数变量 2 4 3定义常量 常量可以说是一种特殊的变量 一旦初始化以后 不能再对其进行赋值 也就是说 常量在初始化后 其值不再改变 只能进行访问 定义常量的语法如下所示 finaltypeConstantname initialvalue 其中 参数final为关键字 代表不可更改 参数type表示常量的类型 参数Constantname表示常量名称 可以任意取 不过需要符合标识符的命名规范 参数 为赋值运算符 这里用于初始化 运算符的概念后续章节会详细说明 参数initialvalue表示初始化值 2 5本章实例 本章主要讲解了简单数据类型及各种运输符与表达式 还有变量与常量的定义 下面给出一个较完整的实例 进一步加深掌握本章内容 1 编写程序2 程序说明3 执行结果 2 8小结 本章首先介绍了Java语言中标识符与关键字 变量与常量的知识 然后重点讨论了各种基本数据类型 又讨论了各种运算符及相应表达式 最后给出了一个完整的实例 其中 变量的作用域是本章的难点 需要在编程过程中多加体会 下一章将以本章为基础 讲解有关程序流程控制方面的内容 2 9本章习题 1 举例说明什么是非法的标识符2 定义两种不同数据类型的变量 完成它们之间的类型转换3 二元运算符都有哪些 一元运算符又有哪些 4 定义一个公式 能够根据摄氏温度计算出华氏温度 已知 华氏温度转化为摄氏温度的计算公式为 C F 32 5 9 其中 C代表摄氏温度 F代表华氏温度 第3章流程控制 为了解决现实问题 程序的执行流程应该是多种多样的 流程应该既可以自上而下的顺序执行 又应该能够遇到某些条件进行跳转 还应该能够对某些操作重复执行 为了控制程序的执行流程 需要使用流程控制语句 流程控制主要包括顺序结构 选择结构 循环结构以及跳转语句 本章针对这些基础知识逐一详细介绍 本章包括以下知识点 顺序结构 选择结构 循环结构 跳转语句 注释语句 3 1顺序结构 顺序结构是程序中最常见的流程结构 语句按照出现的先后顺序自上而下执行 顺序语句执行的过程中没有跳转和判断 直到程序执行结束为止 3 2选择结构 选择结构也称为分支结构 根据一个判断表达式的结果选择不同的分支语句执行 选择结构提供了程序跳转机制 根据选择的结果 有些语句可能被跳转过去不被执行 选择结构主要包含两种语句 if语句和switch语句 下面分别进行介绍 3 2 1if语句 If语句是最经常使用的选择结构 它包含两个分支 根据指定布尔类型表达式的结果true或false 选择不同的分支执行 If语句根据复杂程度 可以具有多种形式 如if if else if else if 下面分别进行介绍 1 if形式2 if else形式3 if else if形式 3 2 2switch语句 switch语句属于多分支结构 通常可以替代复杂的if else if形式的语句 switch语句根据表示的值选择一个分支来执行 表达式的结果类型只能为byte short int或char型 switch语句的语法格式如下所示 switch 表达式 casevalue1 处理语句1break casevalue2 处理语句2break casevalue3 处理语句3break default 处理语句n 3 3循环结构 要重复执行一段代码 需要使用循环结构 循环结构可以重复执行指定的处理语句 直到不再满足循环条件为止 循环结构主要有for和while两种循环语句 下面分别进行介绍 3 3 1for循环语句 for语句通常用于重复次数确定的循环 for循环的语法格式如下所示 for 初始化 循环条件 迭代部分 循环体 其中 参数for为关键字 参数 初始化 表示循环的初始化语句 只在循环开始前执行一次 通常用于迭代变量的定义 参数 循环条件 为布尔类型表达式 结果为true时执行循环体 结果为false时结束循环体 参数 迭代部分 在循环体执行完毕时执行 执行完迭代部分 再次判断循环条件 如此反复执行 直到循环条件不再满足 3 3 2while循环语句 while语句通常用于重复次数不确定的循环 该语句包含两种形式 while形式和do while形式 下面分别进行介绍 1 while形式2 do while形式 3 3 3多重循环 各种循环语句可以嵌套使用 从而构成更加复杂的多重循环 比如for语句中还有for语句 while语句中还有while语句 for语句中包含while语句等 3 4跳转语句 要进行流程跳转 需要使用跳转语句 Java语言包括三种跳转语句 分别是break continue return 下面分别进行介绍 3 4 1break语句 在switch语句中 break语句用于结束switch语句的执行 这在上面switch章节已经介绍 在此不再赘述 在循环结构中 break用于强行终止循环 3 4 2continue语句 continue语句用于循环结构中 作用是跳过本次循环 执行下一次迭代 3 4 3return语句 return语句用于终止当前方法运行 返回到调用该方法的语句处 如果方法需要有返回值 return语句后就应该提供相应返回值 有关方法的概念 在后续章节中会详细介绍 3 5注释语句 在介绍了Java语言的流程控制语句之后 现在来介绍一下Java程序中注释的使用 在Java程序的任意位置都可以加入注释语句 Java编译器会忽略这些注释语句 Java语言主要包括单行和多行两种注释 下面分别进行介绍 3 5 1单行注释 在Java程序中使用 符号来进行单行注释 从 符号开始 到本行结束的所有字符均被编译器作为注释而忽略 3 5 2多行注释 多行注释的方法是以 符号为开头 以 为结尾 中间为注释的内容 注释的内容没有数量限制 可以为任意多行数目 当然也可以是单行 3 6本章实例 意大利著名数学家列奥纳多斐波纳契曾经在其著作 算法之书 中提出了 著名的兔子问题 有一对兔子 从出生后第3个月起每个月都生一对兔子 小兔子长到第三个月后每个月又生一对兔子 假如兔子都不死 问每个月的兔子总数为多少 答案是一组非常特殊的数字 即 1 1 2 3 5 8 13 21 34 以上这些数字就是著名的 斐波纳契数列 1 编写程序2 程序说明3 执行结果 3 7上机实践 1 编写程序 实现求解以下分段函数 y 2 编写程序 用 号打印出金字塔图形 3 8小结 本章介绍了Java语言中的各种流程控制语句 包括选择结构的if switch语句 循环结构的for while语句及程序跳转语句break continue return 另外还介绍了注释语句的使用方法 本章最后给出了一个完整的实例 其中各种控制语句的综合运用是本章的难点 在编写程序解决现实问题时 常常需要综合运用各种流程控制语句 从而实现较复杂的处理逻辑 在掌握了基本语法后 读者应该多学习一些相关的算法知识 从而能够解决更加复杂地问题 下一章将介绍Java语言面向对象编程中类和对象的相关知识 3 9本章习题 1 某市不同车牌的出租车3km的起步价和计费分别为 夏利5元 3km以外2 1元 km 富康8元 3km以外2 4元 km 桑塔纳10元 3km以外2 7元 km 分别用if语句和switch语句编程实现 根据乘车的车型及行车公里数输出应付车资 2 用循环实现求100的阶乘 3 break语句和continue语句的区别是什么 第4章类与对象 类与对象是进行面向对象编程的基础 类是具有相同属性特征和行为规则的多个对象的一种统一描述 对象是对类的实例化 在Java语言中 类是一种最基本的复合数据类型 是组成Java程序的基本要素 下面详细介绍Java语言中有关类与对象的定义方法 本章包括以下知识点 类的创建 创建类的成员及方法 关键字this 对象的创建 使用及清除 4 1创建类 面向对象的编程从创建类开始 创建了类 才谈得上封装 继承 多态 才能实例化生成对象 类的整体结构主要包括声明和类成员两大部分 本节详细介绍如何声明类及类成员的访问控制 4 1 1声明类 要使用一个类 必须先声明类 声明类就是创建一种新的数据类型 利用声明的类可以定义类实例 也就得到了一个对象 声明类的语法如下所示 public abstract final class extends implements 类主体 其中 参数public abstract final表示类修饰符是可选项 下面会详细说明 参数class是关键字 参数Classname表示类名 参数extendsClassname表示继承自其他类 参数implementsInterface表示实现了某些接口 继承和接口方面在后续章节会详细介绍 4 1 2类成员的访问控制 对于类的成员 不管是成员变量还是成员方法 都有一定的访问控制权限 访问控制权限限定了指定对象可以被访问的范围 类成员的访问控制符有public private protected和default public 用public修饰的成分表示是公有的 也就是它可以被其他任何对象访问 前提是对类成员所在的类有访问权限 private 类中限定为private的成员只能被这个类本身访问 在类外不可见 protected 用该关键字修饰的成分是受保护的 只可以被同一类及其子类的实例对象访问 default public private protected这三个限定符不是必须写的 如果不写则表明是default 相应的成分可以被所在的包中各类访问 4 2创建类的成员 类的成员变量定义了类的属性 所定义的成员变量 可以被类内的所有方法访问 比如 如果把电视机看作一个类 则电视机的颜色就是这个类的一个成员变量 该变量用来描述电视机的颜色 声明成员变量的语法如下所示 public protected private static final transient volatile typevariableName 其中 参数public private protected表示成员变量的访问权限 参数static表示限定该成员变量为类变量 参数final表示声明为常量 参数transient表示声明为暂时性变量 参数volatile表示声明一个共享变量 参数type表示变量的类型 参数variableName表示变量名称 4 3创建类的方法 除了成员变量 方法也是类的重要成员 成员方法描述了对象所具有的功能或操作 反映对象的行为 是具有某种相对独立功能的程序模块 本节详细介绍如何创建类的方法以及类的特殊方法 即构造方法和main 方法 4 3 1定义类的成员方法 成员方法描述对象所具有的功能或操作 反映对象的行为 是具有某种相对独立功能的程序模块 它与过去所说的子程序 函数等概念相当 一个类或对象可以有多个成员方法 对象通过执行它的成员方法对传来的消息作出响应 完成特定的功能 成员方法一旦被定义 便可在不同的程序段中多次调用 故可增强程序结构的清晰度 提高编程效率 1 成员方法的返回值2 形式参数与实际参数3 方法体中的局部变量 4 3 2构造方法 Java中的每个类都有构造方法 它是类的一种特殊的方法 构造方法用来初始化类的一个新的对象 它必须具有和类名相同的名称 而且不指出返回类型 它的默认返回类型就是对象类型本身 每个类可以具有多个构造方法 它们各自包含不同的方法参数 构造方法的语法如下所示 public abstract final class extends implements Classname paramList 定义构造方法Classname paramList 定义其他构造方法 类主体 其中 类声明部分的参数在前面已经介绍 最大的特点是存在一到多个与类同名的方法 这些方法就是构造方法 4 3 3main 方法 main 方法是Java程序执行的入口 作为application执行的Java程序 有且只能有一个类具有main 方法 main 方法定义的语法如下所示 publicstaticvoidmain Stringargs 方法体 其中 访问控制权限是公有的 public 并且是类的静态成员方法 static 没有返回值 void 这些特性对main 方法来说是指定的且不能改变的 main 方法具有一个字符串数组参数 用来接收执行Java程序时的命令行参数 命令行参数作为字符串 按照顺序依次对应字符串数组中的元素 4 3 4方法的可变参数 以上几节介绍了类中方法的创建 在具体实际开发过程中 有时方法中参数的个数是不确定的 为了解决这个问题 在J2SE5 0版本中引入了可变参数的概念 声明可变参数的语法格式如下所示 methodName paramList paramType paramName 其中 参数methodName表示方法名称 参数paramList表示方法的固定参数列表 参数paramType表示可变参数的类型 参数 是声明可变参数的标识 参数paramName表示可变参数名称 可变参数必须定义在参数列表的最后 4 4关键字this 在示例4 4中 出现了Java关键字this this是Java语言中一个特殊的关键字 用来代表当前对象 关键字this是与对象密切相关的 在容易混淆的地方使用this会使程序设计变得规范 简单 灵活 4 5对象 对象是对类的实例化 对象具有状态和行为 变量用来表明对象的状态 方法表明对象所具有的行为 Java对象的生命周期包括创建 使用和清除 本节详细介绍对象的整个声明周期过程 4 5 1对象的创建 要使用一个对象 首先要创建它 通常创建对象的语法如下所示 typeobjectNmae newtype paramList 其中 参数type表示对象的类型 参数objectName表示对象的名称 参数new为Java的关键字 下面会详细介绍 参数type paramList 是对类型type构造方法的调用 4 5 2对象的使用 对象定义好了之后 才可以使用对象 对象的使用即是调用对象的变量或方法 使用对象的语法如下所示 objectNmae memberVariableName 调用对象的变量objectNmae memberMethodName 调用对象的方法其中 参数objectNmae表示对象的名称 参数memberVariableName表示对象的成员变量名称 参数memberMethodName表示对象的成员方法名称 4 5 3对象的清除 对象使用完之后需要进行对象的清除 对象的清除是指释放对象占用的内存 在创建对象时 用户必须使用new操作符为对象分配内存 不过 在清除对象时 由系统自动进行内存回收 不需要用户额外处理 这也是Java语言的一大特色 某种程度上方便了程序员对内存的管理 Java语言的内存自动回收称为垃圾回收 GarbageCollection 机制 简称GC 垃圾回收机制是指JVM用于释放那些不再使用的对象所占用的内存 Java语言并不要求JVM有GC 也没有规定GC如何工作 不过常用的JVM都有GC 而且大多数GC都使用类似的算法管理内存和执行收集操作 具体的垃圾收集实现策略有好多种 在此不再详细赘述 4 6本章实例 在开发某图书管理系统时 其中有三个类 即图书类Book 图书类别类BookType和图书管理类BookManager 图书类Book用于管理图书本身的相关信息 包括编号 书名 作者 出版社等 图书类别类BookType用于表示图书分类 包括类别编号 类别名称等 图书管理类BookManager用于管理所有图书 主要是针对数据库进行操作 包括增加 删除 修改等 下面是这几个类的类图及源代码 4 7上机实践 1 编写程序 创建一个汽车类 Car 该类包含颜色和型号属性 并为其创建两个构造函数 第一个为无形参的构造函数 其过程是将颜色和型号初始化为红色轿车 第二个须定义两个形参 并将形参的值分别赋给颜色和型号 另外 为该类创建两个方法 分别用来获得颜色和型号 在该类中定义一个main 方法 分别用上面的两个构造函数创建两个对象 并显示相关对象的各个属性 汽车类 Car 类图如图4 8所示 4 8小结 本章介绍了Java语言面向对象编程中有关类与对象的相关知识 主要包括类及成员变量 成员方法的创建 以及对象的创建 使用 清除等方面的知识 本章最后给出了一个完整的实例 其中类的成员变量 成员方法的定义和使用是本章的难点 在实际编程过程中 应该多通过具体实例加深理解 下一章 徊缴钊虢樯Java语言面向对象编程方面的知识 包括类的继承 封装 多态以及接口和包等 4 9本章习题 1 定义一个类 包含成员变量 构造方法 成员方法 2 构造方法与成员方法有哪些不同 3 类和对象之间是什么关系 用具体实例说明如何创建一个类的对象 第5章深入面向对象编程 除了基本的类和对象 Java语言的面向对象编程还包括抽象类 接口 内部类 包等高级特性 通过对这些高级特性的支持 Java语言全面实现了面向对象的编程 下面进一步深入介绍Java语言面向对象编程方面的知识 本章包括以下知识点 类的封装 继承 多态 抽象类与接口 内部类及匿名内部类 包的创建及使用 5 1类的封装 继承与多态 上一章介绍了有关类定义的基本知识 面向对象中的类还具有封装 继承与多态的特性 这也是面向对象编程所具有的重要特点 Java语言对类的封装 继承 多态均有很好的体现 下面分别进行介绍 5 1 1封装 封装是指隐藏对象的属性及实现细节 对外仅提供接口可见 封装实现了信息隐藏 有利于软件复用 这种技术带来的好处是达到了模块化的标准 从而提高了代码的复用程度 在某种程度上 封装也大大改善了软件开发的可维护性 降低了构建复杂软件系统的风险 在Java语言中 对象的属性和方法均可以进行访问控制 使用前面介绍的访问控制修饰符public private protected default 可以实现不同程度的信息封装 下面通过一个具体的示例来介绍Java语言中封装的实现 5 1 2继承 继承是指一个类是从另一个类派生而来 派生类自动具有了被继承类的所有特性 其中被继承的类称为 父类 继承父类的类称为 子类 继承可以使子类具有父类的各种属性和方法 而不需要再次编写相同的代码 继承也极大地促进了软件的复用 而且继承的形式可以更加复杂 Java语言中类继承的语法格式如下所示 classClassNameextendsSuperClassName 类体 其中 参数class是关键字 参数Classname表示类名 可以由用户任意定义 但需要符合Java标识符的命名规范 参数extends是关键字 表示该类继承自其他类 参数SuperClassName表示被继承的父类的名字 可以由用户任意定义 但需要符合Java标识符的命名规范 5 1 3多态 多态是指对于一种服务功能 可以具有不同的实现方式 即多种形态 多态形象的描述了现实世界的复杂形态 使程序具有良好的扩展性 在继承的基础上 方法重载是实现多态的方式之一 5 2抽象类与接口 抽象类是Java语言中一种特殊的类 其中包含只进行了声明没有具体实现的抽象方法 而接口更像是一种特殊的抽象类 其中所有方法都只进行了声明没有具体实现 抽象类和接口有着相似之处 不过也有许多区别 下面分别对它们进行详细地介绍 5 2 1抽象类 抽象类是指包含了抽象方法的类 其中 抽象方法是一种只声明了方法名称 而没有指明方法体的方法 当需要表示对问题域进行分析 设计中得出的抽象概念时需要使用抽象类 抽象类比类的继承更高一层 是对类的抽象 抽象类拥有未实现的方法 不能被实例化 只能被继承扩展 Java语言中通常抽象类的语法格式如下所示 abstractclassClassName abstractReturnTypeabstractMethodName paramList 其他类成员 其中 参数abstract是关键字 表示此类为抽象类 参数class是关键字 参数Classname表示类名 可以由用户任意定义 但需要符合Java标识符的命名规范 类体中至少包含一个抽象方法 其中 参数abstract是关键字 表示此方法为抽象方法 参数ReturnType表示抽象方法的返回类型 为合法的Java数据类型 参数abstractMethodName表示抽象方法的名子 可以由用户任意定义 但需要符合Java标识符的命名规范 参数paramList表示抽象方法的参数列表 5 2 2接口 接口是面向对象编程中又一重要概念 在实际问题中 有些互不相关的类具有某种相同的行为 这时可以采用接口来定义这种相同的行为 接口只定义提供什么功能 而不定义功能的具体实现 这一点与抽象类有些类似 在Java语言中 不提供类的多继承 一个子类只能继承自一个父类 为了解决多继承的问题 在Java中可以采用接口来实现 一个类虽然不能同时继承多个类 却可以同时实现多个接口 从而可以解决现实中的多继承问题 有关接口的知识包括接口定义 接口实现 下面分别进行介绍 1 接口定义2 实现接口 5 3内部类 内部类指的是在类的内部嵌套定义的类 内部类本身的结构同普通类没什么不同 只不过定义的位置是在另一个类的内部 定义的内部类同样可以在被外部引用 内部类可以只定义类体 没有名称 这就是匿名内部类 关于内部类的这些知识下面分别进行介绍 5 3 1内部类 根据内部类的概念 内部类定义的位置是在类的内部 在一个类的任意代码块内 均可以进行内部类的定义 如可以直接作为类成员定义 可以定义在类的成员方法内 循环体内等 5 3 2匿名内部类 匿名内部类是一种没有类名的特殊内部类 就像仅使用一次的变量可以不定义名称一样 匿名内部类也是用作定义仅使用一次的类 匿名内部类通常具有特殊的用途 也能使程序显得更加简洁 5 4包 在面向对象编程中 包是Java语言所特有的概念 包用来将相关的一组类组织在一起进行管理 类似操作系统中的文件管理 包在外在形式上就是操作系统中的文件夹 包的内容就是类文件 不同的包可以包含同名的类 包机制有效解决了命名冲突问题 有关包的知识包括创建包和使用包 下面分别进行介绍 5 4 1创建包 在使用包之前 首先需要创建包 创建包的语法格式如下所示 packagePackageName 其中 参数package是关键字表示包 参数PackageName表示包名 可以由用户任意定义 但需要符合Java标识符的命名规范 5 4 2使用包 创建了包之后 经常需要使用不同包中的类 使用不同包中的类主要具有两种形式 包名加类名形式 import导入形式 另外 在J2SE5 0版本之后 还提供了静态导入功能 对这些内容 下面分别进行介绍 1 包名加类名2 import导入3 静态导入 5 5本章实例 下面的实例采用面向对象的方法设计一个简单的学生管理系统 某高校在校的学生主要包括成人教育生 本科生 研究生这三类 每年新入学的学生要进行注册 毕业的学生要予以注销 三类学生注册 注销的方式可能略有不同 经过对系统进行需求分析 识别出系统中主要包括成人教育学生类 本科生类 研究生类 另外还要包括学生管理类 由于本章实例主要为巩固面向对象方面的知识 所以系统中涉及到的对象持久化方面的内容这里进行省略 对系统进行面向对象设计 该系统主要包括如下两个包 1 entity包 用于包含实体类 2 business包 用于业务操作 这里只定义了一个StudentManager类 5 6上机实践 1 编写程序 定义一个汽车类 它有两个子类 一个是卡车类 一个是轿车类 2 编写程序 首先定义一个接口 在接口中声明计算面积的功能方法 然后定义两个类 一个为正方形类 一个为三角形类 分别实现接口中定义的计算面积方法 5 8小结 本章进一步深入地介绍了Java语言中面向对象编程的相关知识 包括类的封装 继承 多态以及抽象类 接口 内部类 包等 本章最后给出了一个完整的实例 其中抽象类与接口的具体运用是本章的难点 抽象类与接口是面向对象编程中更加抽象的概念 要想能真正发挥它们的特点需要多结合具体需求反复实践 下一章将介绍Java语言中复合数据类型相关的内容 如数组 字符串 集合等 5 9本章习题 1 举例说明如何实现类的继承与扩展 2 抽象类与接口都有哪些区别 3 包有什么作用 第6章复合数据类型 除了简单数据类型外 Java语言还定义了许多复合数据类型 如数组 字符串 集合等 这些复合数据类型都是以类的形式进行定义的 包含许多属性和方法 综合使用简单数据类型和这些复合数据类型 可以处理实际需求中遇到的各种数据形式 能够编写更加复杂的程序 另外 自J2SE5 0版本以来 Java语言又增加了许多新的特性 如增加的for循环 泛型 枚举等 本章包括以下知识点 数组的定义 使用 字符串的各种操作 集合的各种知识 增强的for循环及泛型 枚举 自动装箱与拆箱 6 1数组 数组是Java语言中的一种复合数据类型 是具有相同数据类型的数据集合 数组中的每个数据称为数组元素 数组元素是有序的 关于数组的知识主要包括数组的定义 创建数组 数组的使用及多维数组 下面分别进行介绍 6 1 1数组的定义 要使用数组 首先需要定义数组 定义数组的语法格式有两种 如下所示 datatype arrayName 或 datatypearrayName 其中 参数datatype表示数据类型 可以是Java语言中的各种数据类型 参数arrayName表示数组名称 可以由用户任意定义 但需要符合Java标识符的命名规范 参数 表示声明的为数组类型 可以放在数据类型后或数组名称后 6 1 2创建数组 要想数组能被真正使用 只定义数组是不够的 还需要为数组分配内存空间完成和初始化 下面分别进行介绍 1 创建数组2 数组初始化 6 1 3数组的使用 数组创建完成后即可使用数组 数组的使用最普遍的就是访问数组的元素 访问数组元素的语法格式如下所示 arrayName subscript 其中 参数arrayName表示数组名称 可以由用户任意定义 但需要符合Java标识符的命名规范 参数subscript表示数组下标 下标从0开始 到数组长度减1结束 另外 可以通过数组的length属性访问数组的长度 关于属性的概念后续章节会详细说明 6 1 4多维数组 由于数组的数据类型可以是各种Java数据类型 当然也包括数组 这种数组类型的数组就构成了多维数组 比如二维数组是一个数组元素为数组的一维数组 如此递归 可以形成更多维数组 下面以二维数组为例进行讲解 多维的情形与二维类似 二维数组的定义 创建 初始化与一维数组类似 语法格式如下所示 datatype arrayName 二维数组的定义arrayName newdatatype 二维数组的创建arrayName subscript subscript 二维数组的使用其中 参数意义与一维数组中的一致 这里不再赘述 6 2字符串 字符串是Java中经常使用的复合数据类型 在本质上 字符数实际上为char型数组 字符串由Java lang String类来表示 该类具有一系列的属性和方法 提供对字符串的各种操作 除了String类 Java还提供了StringBuffer类用来处理可变长度的字符串 下面分别进行介绍 6 2 1创建字符串 同其他类型数据一样 要想使用字符串数据 首先需要创建字符串 创建字符串的语法格式如下所示 StringvariableName newString 其中 参数String为关键字 参数variableName表示字符串变量名称 可以由用户任意定义 但需要符合Java标识符的命名规范 参数new为关键字 号右边表示为字符串变量分配内存空间 6 2 2字符串连接 字符串连接是程序中经常进行的操作 用来将多个字符串连接在一起形成一个字符串 字符串连接使用 加法运算符进行 在Java语言中 采用 运算符还可以直接连接字符串和基本数据类型中的数值类型 此时 运算符是作为字符串连接操作处理 其他数值类型自动转换为字符串 6 2 3字符串比较 在实际编程过程中 经常需要对两个字符串变量的内容进行比较 Java语言中的String类提供了几个方法分别适合不同情况的字符串比较 如表6 1 6 2 4字符串其他常用操作 字符串String作为数组和类 本身提供了许多方法用来进行各种复杂操作 表6 2列出了字符串一些常用方法及简单说明 6 2 5StringBuffer类 由于String对象的长度是不可改变的 如果使用String类进行频繁的字符串拼接操作 那么会产生很多的对象 针对此类性能问题 Java语言提供了另一个类StringBuffer类可以特别用来处理此类问题 StringBuffer类主要包含如下一些方法 StringBuffer类常用方法如表6 3所示 6 3集合 集合是多个对象的容器 容器里聚集了一组对象 前面介绍了数组类型 数组类型是有相同数据类型的数据集合 如果需要将不同数据类型的多个对象组织在一起 就需要使用集合 在Java语言中 集合本身一个框架体系 包含各种集合类 下面分别进行介绍 6 3 1集合框架 在Java语言中 各种集合类通过集合框架进行组织 集合框架包括各类集合接口 接口实现类 集合操作 通过继承关系形成自上而下的体系结构 集合框架的核心接口为Collection List Set和Map 其继承关系如图6 1所示 6 3 2访问集合元素 对所有集合类最经常的操作就是访问集合中的元素 在Java语言中定义了迭代器Iterator接口用于访问集合中的元素 下面列出了Iterator接口中定义的方法 如表6 4所示 6 3 3列表 List List提供了对象的有序存放 其中存放的对象允许重复 List接口的具体实现类主要有ArrayList和LinkedList 其中ArrayList以一种类似数组的形式存储对象 对象的随机访问速度较快 LinkedList实现机制是采用链表 适合于在链表中间需要频繁进行插入和删除对象的操作 在实际的编程过程中 可以根据具体需要进行相应选择 6 3 4集合 Set Set中存放的对象不允许重复 没有顺序 Set接口的具体实现类有HashSet和TreeSet类 其中HashSet能快速定位一个元素 但是放到HashSet中的对象需要实现hashCode 方法 TreeSet将放入其中的元素按顺序存放 要求放入其中的对象是可排序的 6 3 5映射 Map Map提供了一种 键 值 对映射的方式存放对象 其中键和值也都可以是对象 对于键对象来说 像Set一样 一个Map容器中的键对象不允许重复 这就保证了键的唯一性 可以根据键对象快速定位值对象 对于值对象来说 则没有唯一性的要求 可以将任意多个键都映射到一个值对象上 Map接口的具体实现类有HashMap和TreeMap 其中HashMap也用到了哈希码的算法 以便快速查找一个键 TreeMap则是对键按序存放 要求放入其中的对象是可排序的 6 4增强for循环 在J2SE5 0版本以后 Java语言为迭代集合和数组提供了增强的for循环 增强的for循环提供了一个简单 兼容的语法 采用for each语句形式 增强for循环的语法格式如下所示 for typeelementName array collection 其中 参数type表示数组或集合元素的数据类型 参数elementName表示元素名称 可以由用户任意定义 但需要符合Java标识符的命名规范 参数array表示要迭代的数组 而collection表示要迭代的集合 应该为两者之一 6 5泛型 泛型是J2SE5 0版本中引入的最大特性 使用泛型编写的程序具有更好的安全性和可读性 泛型的使用范围很广 可以应用于集合类 定义泛型类 泛型方法等 下面对泛型的使用进行详细介绍 6 5 1泛型集合 泛型对集合类来说有着非常重要的作用 在集合中引入泛型 能够提供编译时的类型安全 并且从集合中取得元素后不必再强制转换 简化了程序代码 定义泛型集合的语法格式如下所示 CollectionTypecollectionName newdatatypeCollectionType 其中 参数CollectionType表示集合类型 可以为任意List Set Map等集合类型 参数为泛型标识 参数datatype表示集合元素的数据类型 可以是Java语言中的各种数据类型 参数collectionName表示集合名称 可以由用户任意定义 但需要符合Java标识符的命名规范 6 5 2定义泛型类 泛型类是指包含类型参数的类 在泛型类的内部 类型参数可以用作变量的类型或方法返回参数的类型 另外 一个泛型类可以包含多个类型参数 定义泛型类的语法格式如下所示 classclassName其中 参数class为关键字 参数className表示类名称 可以由用户任意定义 但需要符合Java标识符的命名规范 参数为泛型标识 参数type
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!