




已阅读5页,还剩449页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020 3 27 1 Java程序设计 第2版 ProgramminginJava 雍俊海清华大学软件学院SchoolofSoftware TsinghuaUniversity 2020 3 27 2 教材 雍俊海 Java程序设计教程 北京 清华大学出版社 2007 2020 3 27 3 习题集 雍俊海 Java程序设计习题集 含参考答案 北京 清华大学出版社 2006 2020 3 27 4 参考文献 本课件的参考文献与下面书的参考文献相同雍俊海 Java程序设计教程 北京 清华大学出版社 2007 雍俊海 Java程序设计习题集 含参考答案 北京 清华大学出版社 2006 雍俊海 Java程序设计 北京 清华大学出版社 2004 2020 3 27 5 第1章绪论 雍俊海 Jun HaiYong 清华大学软件学院SchoolofSoftware TsinghuaUniversity 2020 3 27 6 本章总体纲要 课程总体介绍Java简介开发环境的建立我会写Java程序 2020 3 27 7 教学大纲 Syllabus 第1章绪论第2章结构化程序设计第3章面向对象程序设计第4章数组 字符串 向量与哈希表第5章泛型 枚举与for语句的简化写法第6章异常处理 递归和单体程序设计方法第7章文件与数据流 2020 3 27 8 教学大纲 Syllabus 第8章Swing图形用户界面程序设计第9章小应用程序 Applet 第10章编程规范和程序调试第11章多线程程序设计第12章网络程序设计第13章多媒体与图形学程序设计第14章数据库程序设计 2020 3 27 9 目标 掌握Java编程基本技能掌握学习Java的基本方法能够用Java来解决实际问题也可以为SCJP做准备 2020 3 27 10 教材 雍俊海 Java程序设计教程 清华大学出版社 2007 2020 3 27 11 参考书 雍俊海 Java程序设计习题集 含参考答案 清华大学出版社 2006 2020 3 27 12 参考书 雍俊海 Java程序设计 北京 清华大学出版社 2004 戴特尔 美 Java大学基础教程 第六版 英文版 北京 电子工业出版社 2005 BruceEckel 美 Java编程思想 第3版 机械工业出版社 2005 JoshuaBloch 美 著 潘爱民译 EffectiveJava中文版 北京 机械工业出版社 2003 尉哲明 李慧哲 Java技术教程 基础篇 北京 清华大学出版社 2002 董丽 Java技术及其应用 北京 高等教育出版社 2001 张洪斌 Java程序设计百事通 清华大学出版社 2001 其他参考书参见教材的参考文献 2020 3 27 13 学习方法 课内 认真听讲课外 阅读教材并进行实践教材和习题集的习题其他课程的作业实际的项目实践是硬道理 雍俊海个人观点答案不一定要马上知道习题不一定要立即做对 2020 3 27 14 本章总体纲要 课程总体介绍Java简介开发环境的建立我会写Java程序 2020 3 27 15 为什么不直接采用自然语言 自然语言 表达意思常常不够明确结构常常过于复杂词汇量大 而且在不断发展科学前沿 2020 3 27 16 计算机语言 1 1stGL 二进制机器语言2 2ndGL 低级语言 LLL 汇编语言3 3rdGL 高级语言 HLL 4 4thGL 比3rdGL更接近于自然语言 面向特定的应用5 5thGL GL 第X代计算机语言 2020 3 27 17 为什么不只用第1或2代计算机语言 软件生产效率 1 是否容易编码2 易读性重用 维护及修改3 可移植性4 错误检测5 结构化程序设计面向对象程序设计 2020 3 27 18 高级计算机语言 HLL 1950s 最早的HLLs1969 大约有120种HLLs 大约有15种被广泛应用1977 较广泛使用的大约有81种HLLs现在 大约有2000到4000种HLLs 2020 3 27 19 高级计算机语言举例 图像来自http www engin umd umich edu CIS course des cis400 2020 3 27 20 Java历史简介 基于C和C 1 1991 用于智能消费型电子产品的语言JamesGosling 绿色项目 Oak Java市场需求发展没有预料的快 差一点就要取消这个 绿色项目 2 1993 网络的发展 挽救了这个项目为网页增加了 动态的内容 即动态网页设计3 1994 Oak应用于网络 称为Java4 1995 Java正式公布 2020 3 27 21 Java现状 Java现在常用来 1 开发大规模的商业运用软件2 增强网络服务的功能3 开发智能消费型电子产品的应用软件 例如手机 2020 3 27 22 为什么采用Java语言 特点 简单性 Java的语法比C C 简单网络特性面向对象平台无关性 可移植性WriteOnce RunAnywhere 鲁棒性安全性多线程性 并行程序解释性 2020 3 27 23 两种类型的Java程序 应用程序 Application 小应用程序 Applet 2020 3 27 24 本章总体纲要 课程总体介绍Java简介开发环境的建立我会写Java程序 2020 3 27 25 下载与安装指南 例如 安装 JavaTM2SDK StandardEdition版本操作系统 2020 3 27 26 设置环境变量 path classpath 假设JavaSDK安装在C j2sdk设置 path path C j2sdk binclasspath C j2sdk lib 2020 3 27 27 下载J2SE的在线帮助文档 例如 下载Java2SDK在线帮助文档jdk 6 doc zip从 2020 3 27 28 总结 建立Java开发环境 1 下载J2SE安装程序2 运行J2SE安装程序 安装J2SE3 设置环境变量 运行路径 path 类路径 classpath 4 下载J2SE的在线帮助文档 2020 3 27 29 本章总体纲要 课程总体介绍Java简介开发环境的建立我会写Java程序 2020 3 27 30 例1 J HelloJava java 应用程序 在控制台窗口中输出 Java语言 您好 和 我将成为优秀的Java程序员 2020 3 27 31 通过文本编辑器 如 UltraEdit 创建并编写Java源文件 文件名 J HelloJava java 开发者 雍俊海publicclassJ HelloJava publicstaticvoidmain Stringargs System out println Java语言 您好 System out println 我将成为优秀的Java程序员 方法main结束 类J HelloJava结束 2020 3 27 32 编译 执行 2020 3 27 33 例2 J HelloApplet java Applet小应用程序Applet子类的实例java applet Applet javax swing JApplet运行方式包含小应用程序的HTML文件被打开运行方法appletviewer 小应用程序的测试工具 网页浏览 IE和Netscape等 2020 3 27 34 例2 J HelloApplet java 在一个网页上显示 小应用程序 您好 2020 3 27 35 通过文本编辑器 如 UltraEdit 创建并编写Java源文件 文件名 J HelloJava java 开发者 雍俊海importjava awt Graphics importjavax swing JApplet publicclassJ HelloAppletextendsJApplet publicvoidpaint Graphicsg g clearRect 0 0 getWidth getHeight 清除背景g drawString 小应用程序 您好 10 20 方法paint结束 类J HelloApplet结束 2020 3 27 36 通过文本编辑器 如 UltraEdit 创建并编写HTML文件 简单招呼小应用程序例程 2020 3 27 37 编译源文件 运行小应用程序 2020 3 27 38 Java程序的工作原理 2020 3 27 39 作业 教材习题1 7教材习题1 8 2020 3 27 40 本课件使用要求 使用本课件 必须注明引用 具体见下一个幻灯片 书及课件均可能出现一些错误和缺陷 恳切希望广大读者特别是讲授此课程的老师批评指正 2020 3 27 41 引用声明 本课件来源于 或参考了 下面的书及其课件 雍俊海 Java程序设计教程 北京 清华大学出版社 2007 2020 3 27 42 免责声明 请合法使用课件 其用途应当合法有益而且不应对任何人造成任何伤害或损失同时请注意教材作者及出版社没有对本课件做出任何承诺与保证 2020 3 27 43 参考文献 本课件的参考文献与下面书的参考文献相同雍俊海 Java程序设计教程 北京 清华大学出版社 2007 雍俊海 Java程序设计习题集 含参考答案 北京 清华大学出版社 2006 雍俊海 Java程序设计 北京 清华大学出版社 2004 2020 3 27 44 谢谢 请多指教 2020 3 27 45 第2章结构化程序设计 雍俊海 Jun HaiYong 清华大学软件学院SchoolofSoftware TsinghuaUniversity 2020 3 27 46 本章总体纲要 标识符和关键字数据类型 直接量和变量运算符控制结构结构化程序设计 2020 3 27 47 Java中的标识符 标识符可以用来标识变量名 类名 类中的方法名和文件名等 标识符组成 1 字母 2 数字 3 下划线 和 4 美元符号 首字符必须是 1 字母 2 下划线 和 3 美元符号 所有标识符是区分大小写的 除去关键字 false true和null 2020 3 27 48 问题 是 不是标识符 myVariable9pinsMYVARIABLEia ctesting1 2 3 myvariablejava umlMyVariable myvariable 9pinsIt s猫 2020 3 27 49 Java关键字 具有特殊含义的字符序列例如 public static和class具有特殊用途 不能作为变量名 方法名和类名 2020 3 27 50 Java关键字 50个 2020 3 27 51 本章总体纲要 标识符和关键字数据类型 变量和直接量运算符控制结构结构化程序设计 2020 3 27 52 数据类型 2020 3 27 53 变量 变量在计算机内部对应着一个存储单元 而且总是具有某种数据类型 基本数据类型或引用数据类型变量总是具有与其数据类型相对应的值每个变量均具有 名字 类型 一定大小的存储单元以及值变量名对应内存的位置 2020 3 27 54 Java变量必须属于某种类型 变量值也必须与变量类型相匹配例如 intstudentNumber 声明单个变量doublevelocity distance 声明多个变量studentNumber 30 给变量赋以整数30intstudentNumber 30 声明变量 并赋初值 2020 3 27 55 变量 图例 intsum 0 Strings HelloWorld 2020 3 27 56 练习 习题2 1 2020 3 27 57 Java直接量 Java直接量包括基本数据类型直接量 字符串 String 直接量和null布尔 boolean 直接量只有两个 true和false c u0061 u0051 和 u005a 是char直接量 34是int直接量1 5 45 6 76 4E8和 32 0是double直接量34L是long直接量 1 5F 45 6f 76 4E8F和 32 0F是float直接量 HelloWorld 是String直接量null是引用数据类型的直接量任意引用数据类型的直接量 null 2020 3 27 58 字符 char 直接量 常用的转义字符 b 退格 f 换页 n 换行 r 回车 t 水平制表符 到下一个tab位置 单引号 双引号 反斜杠 2020 3 27 59 本章总体纲要 标识符和关键字数据类型 直接量和变量运算符控制结构结构化程序设计 2020 3 27 60 Java运算符 算术运算符关系运算符布尔逻辑运算符位运算符赋值类运算符条件运算符其他运算符 2020 3 27 61 1 算术运算符 算术运算符包括 没有指数运算Math pow 2 0 3 0 2 03 0整数除法 截去余数7 5结果为1取模 返回余数7 5结果为2 2020 3 27 62 问题 7 5 7 5 7 5 5 5 1 0 1 220 5 2020 3 27 63 2 关系运算符 六个关系运算符 和 例如 1 2 false3 5 1 true51 5 23 0 true540 654 true24 3 8 truebooleantest1 10 10 test1 false 2020 3 27 64 注意事项 只能用来比较两个数值类型数据 numbers含characters 的大小不能用于Strings booleans arrays或其他类型 2020 3 27 65 3 布尔逻辑运算符 六个布尔逻辑运算符 逻辑与AND 逻辑或OR 逻辑异或XOR 逻辑非NOT 单目运算符 即只有一个操作数 条件与AND 条件或OR 2020 3 27 66 短路规则 和 如果从第一个操作数可以推断出表达式结果 就不再计算第二个操作数例如 if x 2 2020 3 27 67 逻辑运算 和 两个操作数均会被运算 即不采用短路规则 用不用短路规则 副作用不同例如 birthday true age 65 2020 3 27 68 4 位运算符 位运算符包括 和 带符号右移 不带符号右移越晦涩难懂的 越会被SCJP考到 移位操作是 先将整数写成二进制形式 然后按位操作 最后产生一个新的数注意 只用于整数 2020 3 27 69 5 赋值类运算符 赋值类运算符包括 2020 3 27 70 6 条件运算符 条件运算符 的表达式形式为 op1 op2 op3 op1 布尔表达式例如 intk i 0 1 1 2020 3 27 71 7 其他运算符 其他运算符包括 类型 instanceof和new例如 inta 51 charc char a 2020 3 27 72 算符优先 不同的运算符具有不同的优先顺序可以用 来改变优先顺序或使表达式更容易理解例如 a b c 3 a b c 3 2020 3 27 73 本章总体纲要 标识符和关键字数据类型 直接量和变量运算符控制结构结构化程序设计 2020 3 27 74 控制结构 if elseif elsewhilefordowhileswitchcasebreakcontinue 2020 3 27 75 控制结构 顺序结构Java最基本的结构选择结构三种类型 if if else和switch循环结构三种类型 for while和do while 2020 3 27 76 if语句 if语句的格式是 if 布尔表达式 语句或if 布尔表达式 一条或多条语句 例如if grade 60 System out println Passed Herecouldbe astatementblock 2020 3 27 77 if else语句 if else语句的格式是 if 布尔表达式 语句1或语句块1else语句2或语句块2例如 if grade 60 System out println Passed elseSystem out println Failed 2020 3 27 78 条件运算符 cond express1 express2 例1System out println studentGrade 60 Passed Failed 例2max a b a b if a b max a elsemax b 2020 3 27 79 多分支选择结构switch语句 switch语句的形式是 switch 表达式 case值1 语句组1break case值2 语句组2break case值n 语句组nbreak default 语句组 n 1 2020 3 27 80 for循环语句 格式 for 表达式1 表达式2 表达式3 语句或语句块也可写成 表达式1 while 表达式2 语句或语句块表达式3 2020 3 27 81 while循环语句 while循环语句格式为 while 布尔表达式 语句或语句块当条件 布尔表达式 为true 则不断地执行语句或语句块 while 循环中止条件是布尔表达式变为false如果布尔表达式一开始就为false 则不执行循环体 2020 3 27 82 do while循环语句 先执行 后判定条件即循规环体至少执行1次格式do 语句或语句块 while 布尔表达式 好的编程风格 总是以 引导循环体 即使语法上并不需要 2020 3 27 83 本章总体纲要 标识符和关键字数据类型 直接量和变量运算符控制结构结构化程序设计 2020 3 27 84 结构化程序设计 结构化程序设计 数据 操作 流程控制 结构化程序设计方法 2020 3 27 85 流程控制 顺序结构Java中的最基本结构选择结构if if else和switch循环结构while do while和for 2020 3 27 86 结构化程序设计方法 只采用单输入 单输出的控制结构 2020 3 27 87 作业 习题2 2习题2 5习题2 8习题2 10 2020 3 27 88 本课件使用要求 使用本课件 必须注明引用 具体见下一个幻灯片 书及课件均可能出现一些错误和缺陷 恳切希望广大读者特别是讲授此课程的老师批评指正 2020 3 27 89 引用声明 本课件来源于 或参考了 下面的书及其课件 雍俊海 Java程序设计教程 北京 清华大学出版社 2007 2020 3 27 90 免责声明 请合法使用课件 其用途应当合法有益而且不应对任何人造成任何伤害或损失同时请注意教材作者及出版社没有对本课件做出任何承诺与保证 2020 3 27 91 参考文献 本课件的参考文献与下面书的参考文献相同雍俊海 Java程序设计教程 北京 清华大学出版社 2007 雍俊海 Java程序设计习题集 含参考答案 北京 清华大学出版社 2006 雍俊海 Java程序设计 北京 清华大学出版社 2004 2020 3 27 92 谢谢 请多指教 2020 3 27 93 第3章面向对象程序设计 雍俊海 Jun HaiYong 清华大学软件学院SchoolofSoftware TsinghuaUniversity 2020 3 27 94 本章总体纲要 类 域 方法和实例对象继承性多态性包 package 封装性关键字abstract static final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想 2020 3 27 95 面向对象程序设计整体介绍 面向对象程序设计 OOP 将数据 属性 和方法 行为或功能 封装到类 classes 中数据与方法常常是紧密相关的对象 objects 类的实例对象或类本身三个基本特性 封装性 继承性和多态性 2020 3 27 96 比较 结构化程序设计对应的典型的计算机语言 例如 C面向操作 action 的函数 方法 是程序的基本单位面向对象程序设计对应的典型的计算机语言 例如 Java面向对象 object 的类 class 是程序的基本单位方法 函数 被封装在类中数据也常常被封装在类中 2020 3 27 97 类 类 class 本身也是一种对象类 class 同时也是实例对象的模板类 class 的基本组成 成员 域和 成员 方法每个对象 拥有内存 存储成员域 方法静态的成员域 方法 属于类其它成员域 方法 属于实例对象 2020 3 27 98 类的定义 类的定义格式如下 类修饰词 class类名 extends父类名 implements接口名称列表 类体 2020 3 27 99 多个类组成的程序 很多Java程序需要多个类完成一项任务一个文件一般只含有一个类每个文件的长度一般不要太长最长一般不要超过2000行 2020 3 27 100 方法定义 与C 程序不同的是 每个方法都必须隶属于某个类方法定义的格式 方法修饰词 返回类型方法名 方法的参数列表 方法体 返回类型 返回数据的数据类型除了构造方法 一般要求返回类型 要么为void 要么为某种数据类型int byte float或String最多只能返回一个值方法名 任何一个合法的标识符参数列表 用逗号 分隔开 2020 3 27 101 返回控制 如果没有值返回 return 退出该方法或者遇到该方法的最后一个 则退出该方法如果有值返回 return表达式 退出该方法返回该表达式的值 2020 3 27 102 构造方法 构造方法在创建新的实例对象时起作用构造方法通常用来初始化实例对象 例如 初始化成员域或设置工作环境构造方法的特点 与类同名没有返回值可以含有多种构造方法 重载 但必须具有不同的参数列表 2020 3 27 103 默认的构造方法 如果没有显式地定义类的构造方法 则系统会为该类定义一个默认的构造方法 该构造方法不含任何参数 这个默认的构造方法首先调用其父类的不含任何参数的构造方法 然后初始化新生成的实例的各个成员域变量默认值 基本数值类型 0 boolean false 引用数据类型 null最好自己写构造方法一旦在类中定义了构造方法 系统就不会再创建这个默认的不含参数的构造方法 2020 3 27 104 本章总体纲要 类 域 方法和实例对象继承性多态性包 package 封装性关键字abstract static final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想 2020 3 27 105 继承性 继承性 软件重用的一种方法根据已有的类创建新的类采纳了旧的类的属性 域 及其行为 方法 增加了新的能力子类继承父类子类增加了新的成员域或新的成员方法有时可以理解成 但不绝对 子类对象是一种特殊的父类对象 2020 3 27 106 继承性的实现 采用关键字extendspublicclassJ HelloAppletextendsApplet 类J HelloApplet结束 2020 3 27 107 关键字 instanceof 运算符 instanceof例如 if pinstanceofCircle 上面的条件为true 当且仅当引用p所指向的对象是类Circle 或其子类 的实例对象 2020 3 27 108 多重继承 在有些计算机语言中 允许一个类有多个直接父类 这种继承关系称为多重继承Java不支持多重继承Java允许一个类有多个直接父接口 interface 2020 3 27 109 本章总体纲要 类 域 方法和实例对象继承性多态性包 package 封装性关键字abstract static final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想 2020 3 27 110 多态性 优点 代码重用简化设计 简化代码便于程序扩展 2020 3 27 111 多态性的种类 静态的多态性 重载动态的多态性 覆盖 2020 3 27 112 静态的多态性 重载 在编译时就能够被识别针对的是同一个类内的同名方法例如 publicintsquare intx returnx x publicdoublesquare doublex returnx x 2020 3 27 113 识别重载方法 识别标志 参数的个数 类型 数据类型的排列顺序返回值不能做为识别的标志 2020 3 27 114 动态多态性 覆盖 在程序运行时才被识别重写父类的方法要求相同的声明例如 publicclassJ HelloAppletextendsJApplet publicvoidpaint Graphicsg g clearRect 0 0 getWidth getHeight 清除背景g drawString 小应用程序 您好 10 20 方法paint结束 类J HelloApplet结束 2020 3 27 115 源程序 J Teacher Java 文件名 J Teacher java 开发者 雍俊海classJ Employee publicintm workYear 工作的年限publicJ Employee m workYear 1 J Employee构造方法结束publicvoidmb printInfo System out println 该职工的工作年限为 m workYear 方法mb printInfo结束 类J Employee结束 2020 3 27 116 publicclassJ TeacherextendsJ Employee publicintm classHour 授课的课时publicJ Teacher m classHour 96 J Teacher构造方法结束publicvoidmb printInfo System out println 该教师的工作年限为 m workYear System out println 该教师授课的课时为 m classHour 方法mb printInfo结束publicstaticvoidmain Stringargs J Employeea newJ Employee a mb printInfo a newJ Teacher a mb printInfo 方法main结束 类J Teacher结束 源程序 J Teacher Java 2020 3 27 117 编译 运行 结果 2020 3 27 118 本章总体纲要 类 域 方法和实例对象继承性多态性包 package 封装性关键字abstract static final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想 2020 3 27 119 包 可以将一组相关的类或接口封装在包 package 里 从而更好地管理已经开发的Java代码包含组织类与接口的目录结构方便程序重用 2020 3 27 120 Java包 Java系统提供了很多已经写好的包数学计算 输入 输出 字符串操作尽量利用已有的包 避免重复工作使用包中类利用import语句指定类的位置例如 importjavax swing JApplet 2020 3 27 121 包 包java langjava lang Objectjava lang Math包java utiljava util Random 2020 3 27 122 本章总体纲要 类 域 方法和实例对象继承性多态性包 package 封装性关键字abstract static final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想 2020 3 27 123 类成员的封装性 成员 域或方法 的访问控制方式 1 public2 private3 protected4 default 缺省方式 2020 3 27 124 成员的访问控制方式 public 则该成员可以被任何类中的方法访问表明对外开放的方式少量 或者没有 public域部分public方法 2020 3 27 125 成员的访问控制方式 private 目的 隐藏具体的实现细节只有同一个类的成员方法才能访问私有成员域常常是private采用public get 方法 读取数据采用public set 方法 写数据 2020 3 27 126 成员的访问控制方式 protected 介于public和private之间同一个包内的所有类的所有方法都能访问该成员如果不在同一个包内的类的方法要访问该成员 则该类必须是该成员所在的类的子类 2020 3 27 127 成员的访问控制方式 default 缺省方式 只有在同一个包内的类的方法才能访问该方法 2020 3 27 128 类成员封装性总结 2020 3 27 129 本章总体纲要 类 域 方法和实例对象继承性多态性包 package 封装性关键字abstract static final接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想 2020 3 27 130 abstract Java允许定义抽象 abstract 的类和方法抽象 abstract 的方法可以只提供方法的头部 但不提供实现的部分抽象 abstract 的方法只能是抽象 abstract 类中的方法例如 publicabstractclassJ VehiclepublicabstractclassJ Shape publicabstractvoidfuel publicabstractvoidmb draw 2020 3 27 131 关键字 static 静态的 static 域和静态的 static 方法实际上隶属于类对象静态的 static 域示例 System out静态的 static 方法示例 main 示例 Math sqrt publicstaticdoublesqrt doublea 2020 3 27 132 关键字 final 可以修饰的对象 final域final方法final类 2020 3 27 133 本章总体纲要 类 域 方法和实例对象继承性多态性包 package 封装性关键字abstract static final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想 2020 3 27 134 接口 interface 接口 interface 就象是一种特殊的类成员方法 abstract成员域 final和static接口 interface 中所有的方法和域必须都是public的每个接口一般定义在一个 java文件中 2020 3 27 135 示例 例1 通过接口定义一些常量publicinterfaceJ Constants publicstaticfinalintONE 1 publicstaticfinalintTWO 2 publicstaticfinalintTHREE 3 接口J Constants结束例2 interfaceJ Shape publicabstractvoidmb draw Graphics2Dg 接口J Shape结束 2020 3 27 136 注意事项 接口中成员方法的默认方式是public和abstract接口中成员域的默认方式是public static和final 2020 3 27 137 优点 一个类可以继承多个接口例如 publicclassAextendsBimplementsC D 2020 3 27 138 本章总体纲要 类 域 方法和实例对象继承性多态性包 package 封装性关键字abstract static final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想 2020 3 27 139 内部类 定义在其它类内部的类称为内部类内部类有些类似于类的成员域或成员方法 2020 3 27 140 匿名内部类 没有类名常常用在图形用户界面设计 GUI 中 进行各种事件处理例如 鼠标事件 按钮事件和键盘事件等 2020 3 27 141 本章总体纲要 类 域 方法和实例对象继承性多态性包 package 封装性关键字abstract static final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想 2020 3 27 142 变量的作用域范围 作用域范围 程序中能够使用该变量 域与局部变量 的范围分类 类作用域范围和块作用域范围 2020 3 27 143 类作用域范围 从类定义的第一个 开始 到最后一个 结束超出类的范围 类的成员方法不能直接通过它的名称进行访问例如 成员域 2020 3 27 144 块作用域范围 从变量声明之处 到该块的最后一个 例如 局部变量与成员方法的参数 2020 3 27 145 值传递示例 编写一个程序用来说明 Java方法调用过程中 值传递方式 2020 3 27 146 源程序 文件名 J Primitive java 开发者 雍俊海publicclassJ Primitive publicstaticvoidmb method inta System out println 在a 之前方法参数a a a System out println 在a 之后方法参数a a 方法mb method结束publicstaticvoidmain Stringargs inti 0 System out println 在方法调用之前变量i i mb method i System out println 在方法调用之后变量i i 方法main结束 类J Primitive结束 2020 3 27 147 编译 运行 结果 编译命令为 javacJ Primitive java执行命令为 javaJ Primitive最后执行的结果为 在方法调用之前变量i 0在a 之前方法参数a 0在a 之后方法参数a 1在方法调用之后变量i 0 2020 3 27 148 本章总体纲要 类 域 方法和实例对象继承性多态性包 package 封装性关键字abstract static final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想 2020 3 27 149 示例 编写一个程序用来说明 求解矩形和圆面积 2020 3 27 150 按对象进行分解 编写文件J Shape java 实现接口J Shape编写文件J Circle java 实现类J Circle继承自接口J Shape编写文件J Rectangle java 实现类J Rectangle继承自接口J Shape编写文件J Area java 实现类J Area计算矩形和圆面积利用类J Circle和类J Rectangle 2020 3 27 151 源程序 J Shape java 文件名 J Shape java 开发者 雍俊海publicinterfaceJ Shape 计算并返回形状的面积publicabstractdoublemb getArea 接口J Shape结束 2020 3 27 152 源程序 J Circle java 文件名 J Circle java 开发者 雍俊海 待续 publicclassJ CircleimplementsJ Shape publicdoublem x m y 圆心坐标publicdoublem radius 半径publicJ Circle doubler m x 0 m y 0 m radius r J Circle构造方法结束 2020 3 27 153 源程序 J Circle java 文件名 J Circle java 开发者 雍俊海 续 publicJ Circle doublex doubley doubler m x x m y y m radius r J Circle构造方法结束 计算并返回形状的面积publicdoublemb getArea return Math PI m radius m radius 方法mb getArea结束 类J Circle结束 2020 3 27 154 源程序 J Rectangle java 文件名 J Rectangle java 开发者 雍俊海 待续 publicclassJ RectangleimplementsJ Shape publicdoublem minX m minY 第一个角点坐标publicdoublem maxX m maxY 另一个角点坐标publicJ Rectangle doublex1 doubley1 doublex2 doubley2 if x1 x2 m minX x1 m maxX x2 else m minX x2 m maxX x1 if else结构结束 2020 3 27 155 源程序 J Rectangle java 文件名 J Rectangle java 开发者 雍俊海 续 if y1 y2 m minY y1 m maxY y2 else m minY y2 m maxY y1 if else结构结束 J Rectangle构造方法结束 计算并返回形状的面积publicdoublemb getArea return m maxY m minY m maxX m minX 方法mb getArea结束 类J Rectangle结束 2020 3 27 156 源程序 J Area java 文件名 J Area java 开发者 雍俊海publicclassJ Area publicstaticvoidmain Stringargs J Shapea newJ Circle 5 System out println 半径为5的圆的面积是 a mb getArea a newJ Rectangle 0 0 3 4 System out println 给定的矩形面积是 a mb getArea 方法main结束 类J Area结束 2020 3 27 157 作业 教材习题3 4教材习题3 9 2020 3 27 158 本课件使用要求 使用本课件 必须注明引用 具体见下一个幻灯片 书及课件均可能出现一些错误和缺陷 恳切希望广大读者特别是讲授此课程的老师批评指正 2020 3 27 159 引用声明 本课件来源于 或参考了 下面的书及其课件 雍俊海 Java程序设计教程 北京 清华大学出版社 2007 2020 3 27 160 免责声明 请合法使用课件 其用途应当合法有益而且不应对任何人造成任何伤害或损失同时请注意教材作者及出版社没有对本课件做出任何承诺与保证 2020 3 27 161 参考文献 本课件的参考文献与下面书的参考文献相同雍俊海 Java程序设计教程 北京 清华大学出版社 2007 雍俊海 Java程序设计习题集 含参考答案 北京 清华大学出版社 2006 雍俊海 Java程序设计 北京 清华大学出版社 2004 2020 3 27 162 谢谢 请多指教 2020 3 27 163 第4章数组 字符串 向量与哈希表 雍俊海 Jun HaiYong 清华大学软件学院SchoolofSoftware TsinghuaUniversity 2020 3 27 164 本章总体纲要 数组字符串字符串缓冲区向量哈希表 2020 3 27 165 数组 由相同类型的若干项数据组成例如 publicstaticvoidmain Stringargs 其中args是String类型的数组占用连续的内存地址数组的静态性一旦创建就不能修改数组的长度类似于动态数组的类型类Vector长度可以变大或缩小 2020 3 27 166 示例 int c newint 12 c是数组名如何获得数组的长度 c length第一个数组元素的下标为0使用数组可以通过数组名与下标每个数组元素类似于普通的变量c 0 3 c 0 5 c length 2020 3 27 167 下标 有时也称为索引必须是整数或整数表达式 例如 c 11 示例 含有运算符的下标表达式 if x 3 t c 5 2 c 3 t true 2020 3 27 168 数组声明 一维数组变量的声明格式有如下两种 1 数组元素的数据类型 变量名 2 数组元素的数据类型变量名 示例 int c String names intc Stringnames 2020 3 27 169 内存分配 Java数组实际上也是对象 所以可通过new关键字来创建示例 int c 声明c newint 12 创建对象 并分配内存声明时不必指定数组的大小上面的两个语句可以简化成一个语句int c newint 12 2020 3 27 170 初始化数组 基本数据类型的元素初始化为0值或false非基本数据类型的元素初始化为null可以采用循环结构初始化数组示例 double squares squares newdouble 100 for inti 0 i squares length i squares i i i 2020 3 27 171 通过初始化语句创建数组 Java语言允许通过数组的初始化语句创建数组示例 int n 10 20 30 40 50 上面语句创建了一个含有五个元素的数组下标值分别为0 1 2 3 4这时不需要运算符new 2020 3 27 172 注意事项 当通过循环遍历数组时下标永远不要低于0下标永远要比数组元素个数小当数组下标出错 Java产生ArrayIndexOutOfBoundsException 2020 3 27 173 多维数组 最常用的多维数组是二维数组int a newint 3 4 二维数组可以理解成如下图示的表格 行的下标值 列的下标值 2020 3 27 174 示例1 类似于一维数组进行二维数组的声明 创建 内存分配 与初始化示例 classJ FillArray publicstaticvoidmain Stringargs int matrix newint 4 5 for introw 0 row 4 row for intcol 0 col 5 col matrix row col row col 内部for循环结束 外部for循环结束 方法main结束 类J FillArray结束 2020 3 27 175 示例2 通过初始化语句创建数组示例 double c 1 0 2 0 3 0 4 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 2020 3 27 176 注意事项 Java的多维数组实际上是数组的数组即创建以数组为元素的数组意味着 二维数组的每一行可以具有不同的列数示例 inta a newint 3 allocaterowsa 0 newint 3 allocaterow0a 1 newint 2 allocaterow1a length 行数a i length 第i行列数 2020 3 27 177 三维数组 思维的扩展 一维数组 二维数组 三维数组示例 classJ Fill3DArray publicstaticvoidmain Stringargs int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地产公司剪彩活动方案
- 夜间关怀活动方案
- 大学换届活动方案
- 夏季运动公司活动方案
- 雪茄行业市场发展分析及投资战略研究报告2025-2028版
- 车载泵市场发展分析及行业投资战略研究报告2025-2028版
- 美容橄榄油市场发展分析及行业投资战略研究报告2025-2028版
- 澳大利亚留学签证及就业指导合同
- 个性化车库门设计与安装服务合同
- 车辆销售渠道合作合同(区域代理)
- 树木砍伐合同简单协议书
- 2025年安徽省农业职业技能大赛(水生物病害防治员)备赛试题库(含答案)
- 安全大讲堂教学课件
- 城市更新中历史文化街区非物质文化遗产保护与开发报告
- 家装修泥水工合同协议
- 2023承压设备产品焊接试件的力学性能检验
- ESG趋势下企业财务管理新挑战
- 2024年公安机关理论考试题库500道(基础题)
- DB11∕T045-2025医学实验室质量与技术要求
- 2024年11月-矿山隐蔽致灾因素普查
- DBJ51T 163-2021 成都轨道交通设计防火标准
评论
0/150
提交评论