《Java 应用与开发》课程讲义 - 王晓东. . . . . . 47 5.1.2 多态用法示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.1.3 虚方法调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.1.4 对象造型 . . . . . . . . . . . . . 49 5.1.5 instanceof 运算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5.1.6 虚方法调用和造型 . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.2 方法重载 . . . . . . . . . . . . . 中国海洋大学信息学院计算机系 第 18 页 / 共 306 页 2.3. 课后习题 � 2 � continue 语句 终止当前这一轮(次)的循环,进入下一轮(次)循环。 return 语句 用来使程序从方法(函数)中返回,可返回一个值。 2.3 课后习题 . O 简答题 1. Java 语言定义类哪些基本数据类型?其存储结构分别是什么样的? 2. 自动类型转换的前提是什么?转换时的优先级顺序如何?0 码力 | 330 页 | 6.54 MB | 1 年前3
Java 源码剖析——彻底搞懂Reference 和ReferenceQueuesubclassed directly. 引用对象的抽象基类。此类定义了常用于所有引用对象的操作。因为引用对象是通过与垃圾回收器的 切合作来实现的,所以不能直接为此类创建子类。 */ 该类提供了两个构造函数: Reference(T referent) { this(referent, null); } Reference(T referent, ReferenceQueue super this.referent = referent; this.queue = (queue == null) ? ReferenceQueue.NULL : queue; } 一个构造函数带需要注册到的引用队列,一个不带。带queue的意义在于我们 以吃从外部通过对queue的操作来了解到引用实例所指向的实际对象是否被回收了,同时我们也可以 过qu ;但如果我们的引用实例在创建时没有指定一个引用队列, 我们要想知道实际对象是否被回收,就只能够不停地轮询引用实例的get()方法是否为空了。值得注意 是虚引用PhantomReference,由于它的get()方法永远返回null,因此它的构造函数必须指定一个引 队列。这两种查询实际对象是否被回收的方法都有应用,如weakHashMap中就选择去查询queue的 据,来判定是否有对象将被回收;而T0 码力 | 6 页 | 283.24 KB | 1 年前3
Java 应用与开发 - 面向对象编程进阶wangxiaodong@ouc.edu.cn 中国海洋大学 September 30, 2018 大纲 多态性 方法重载 关键字 static 关键字 final 学习目标 1. 理解多态和虚方法调用的概念,掌握其用法 2. 掌握方法重载的方法 3. 掌握 static 属性、方法和初始化块的用法 4. 了解设计模式,掌握单例设计模式 5. 掌握 final 关键字的概念和使用方法 多态性 方法重载 关键字 static 关键字 final 虚方法调用 思考 一个引用类型的变量如果声明为父类的类型,但实际引用的是子 类对象,则该变量就不能再访问子类中添加的属性和方法。 但如果此时调用的是父类中声明过、且在子类中重写过的方法, 情况如何? 大纲 多态性 方法重载 关键字 static 关键字 final 虚方法调用 思考 一个引用类型的变量如果声明为父类的类型,但实际引用的是子 关键字 static 关键字 final 虚方法调用和造型 课程配套代码 ± package sample.oop.poly ▶ VirtualMethodSample.java ▶ Person.java ▶ Student.java O 虚方法调用和造型强化 ▶ 系统根据运行时对象的真正类型来确定具体调用哪一个方 法,这一机制被称为虚方法调用。 ▶ 造型是引用类型数据值之间的强制类型转换。0 码力 | 49 页 | 659.74 KB | 1 年前3
Java 应用与开发 - Java 数组和字符串数组元素既可以为基本数据类型,也可以为对象。 O Java 的内存分配(基础) 栈内存 存放定义的基本类型的变量和对象的引用变量,超 出作用域将自动释放。 堆内存 存放由 new 运算符创建的对象和数组,由 Java 虚 拟机的自动垃圾回收器来管理。 大纲 数组的概念 一维数组 二维数组 字符串 数组的主要特点 ▶ 数组是相同数据类型的元素的集合; ▶ 数组中的各元素有先后顺序,它们在内存中按照这个先后顺 序连续存放;0 码力 | 33 页 | 620.46 KB | 1 年前3
Hello 算法 1.1.0 Java版本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 1‑3 所示的思考。 1. 可选项是比 某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段 代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?0 码力 | 378 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0 Java版Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 第 0 章 前言 hello‑algo.com 5 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文 ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 1‑3 所示的思考。 1. 可选项是比 iteration」是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某 段代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?0 码力 | 376 页 | 17.59 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Java 版本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 www.hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 1‑3 所示的思考。 1. 可选项是比 问 题时能够作出专业的反应和判断,从而提升工作的整体质量。举一个简单例子,每种编程语言都内置了排序 函数: ‧ 如果我们没有学过数据结构与算法,那么给定任何数据,我们可能都塞给这个排序函数去做了。运行顺 畅、性能不错,看上去并没有什么问题。 ‧ 但如果学过算法,我们就会知道内置排序函数的时间复杂度是 ?(? log ?) ;而如果给定的数据是固定 位数的整数(例如学号),那么我们就可以0 码力 | 379 页 | 18.48 MB | 10 月前3
Hello 算法 1.0.0b5 Java版Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都存在插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 1‑3 所示的思考。 1. 可选项是比 iteration」是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某 段代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?0 码力 | 376 页 | 30.69 MB | 1 年前3
Hello 算法 1.0.0b1 Java版0. 写在前面 hello‑algo.com 4 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注释、内容 注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.3. 在动画图解中高效学习 视频和图片相比于文字的信息密度和结构化程度更高,更容易理解。在本书中,知识重难点会主要以动画、图 的。对于以上情况,我们很难仅凭时间复杂度来判定算法效率高低。然而,即使存在这些问题,复杂度分 析仍然是评判算法效率的最有效且常用的方法。 2.2.3. 函数渐近上界 设算法「计算操作数量」为 ?(?) ,其是一个关于输入数据大小 ? 的函数。例如,以下算法的操作数量为 ?(?) = 3 + 2? void algorithm(int n) { int a = 1; // +1 a = a } ?(?) 是个一次函数,说明时间增长趋势是线性的,因此易得时间复杂度是线性阶。 我们将线性阶的时间复杂度记为 ?(?) ,这个数学符号被称为「大 ? 记号 Big‑? Notation」,代表函数 ?(?) 的「渐近上界 asymptotic upper bound」。 我们要推算时间复杂度,本质上是在计算「操作数量函数 ?(?) 」的渐近上界。下面我们先来看看函数渐近上 界的数学定义。0 码力 | 186 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b4 Java版Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2. 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,因此更易于理解。在本书中,重点和难点知识 置;完成后最左 3 张扑克已经有序。 4. 不断循环以上操作,直至所有扑克牌都有序后终止。 以上整理扑克牌的方法本质上就是「插入排序」算法,它在处理小型数据集时非常高效。许多编程语言的排 序库函数中都存在插入排序的身影。 Figure 1‑2. 扑克排序步骤 例三:货币找零。假设我们在超市购买了 69 元的商品,给收银员付了 100 元,则收银员需要给我们找 31 元。他会很自然地完成以下思考: 明显优于算法 C 。在这些情况下, 我们很难仅凭时间复杂度判断算法效率高低。当然,尽管存在上述问题,复杂度分析仍然是评判算法效率最 有效且常用的方法。 2.2.3. 函数渐近上界 设算法的计算操作数量是一个关于输入数据大小 ? 的函数,记为 ?(?) ,则以下算法的操作数量为 ?(?) = 3 + 2? void algorithm(int n) { int a = 1; // +1 a =0 码力 | 342 页 | 27.39 MB | 1 年前3
共 21 条
- 1
- 2
- 3













