 Java 对象的创建过程链滴 Java 对象的创建过程 作者:vcjmhg 原文链接:https://ld246.com/article/1619614850780 来源网站:链滴 许可协议:署名-相同方式共享 4.0 国际 (CC BY-SA 4.0) 概述 在之前的一篇文章《关于java继承的哪些事》简单讲了Java创建对象的过程,但具体细节当时并没有 细讲。因而本篇文章以HotSpot虚拟机为例, 下Java虚拟机是如何创建一个对象的? 简单来说Java对象的创建过程总共分为5步: Java创建对象的过程 类加载检查 首先当虚拟机遇到一个new指令时,首先会去检查这个参数能否在常量池中定位到这个类的符号引用 并且检查这个符号引用所代表的的类是否已经被加载、连接、解析和初始化过,如果没有需要先执行 的加载操作(详细过程可参考"类的加载流程" )。 分配内存 当类加载检查通过后,接下 具体来说,指针碰撞分配内存空间的过程如下: 在Java堆规整的情况下,所有被使用过的内存放到一边,所有未被使用过的内存放置到另一边,中间 置一个指针作为分界点的指示器,当需要分配内存空间时,只需要将空闲指针向空闲内存方向移动对 内存大小的位置即可。 原文链接:Java 对象的创建过程 该算法能够使用的前提必须是空间是规整的,因为如果空间是碎片化的,很明显该算法就会失效。 另一种算法是空闲列表,其分配内存的过程如下:0 码力 | 4 页 | 389.87 KB | 1 年前3 Java 对象的创建过程链滴 Java 对象的创建过程 作者:vcjmhg 原文链接:https://ld246.com/article/1619614850780 来源网站:链滴 许可协议:署名-相同方式共享 4.0 国际 (CC BY-SA 4.0) 概述 在之前的一篇文章《关于java继承的哪些事》简单讲了Java创建对象的过程,但具体细节当时并没有 细讲。因而本篇文章以HotSpot虚拟机为例, 下Java虚拟机是如何创建一个对象的? 简单来说Java对象的创建过程总共分为5步: Java创建对象的过程 类加载检查 首先当虚拟机遇到一个new指令时,首先会去检查这个参数能否在常量池中定位到这个类的符号引用 并且检查这个符号引用所代表的的类是否已经被加载、连接、解析和初始化过,如果没有需要先执行 的加载操作(详细过程可参考"类的加载流程" )。 分配内存 当类加载检查通过后,接下 具体来说,指针碰撞分配内存空间的过程如下: 在Java堆规整的情况下,所有被使用过的内存放到一边,所有未被使用过的内存放置到另一边,中间 置一个指针作为分界点的指示器,当需要分配内存空间时,只需要将空闲指针向空闲内存方向移动对 内存大小的位置即可。 原文链接:Java 对象的创建过程 该算法能够使用的前提必须是空间是规整的,因为如果空间是碎片化的,很明显该算法就会失效。 另一种算法是空闲列表,其分配内存的过程如下:0 码力 | 4 页 | 389.87 KB | 1 年前3
 MoonBit月兔编程语言 现代编程思想 第三课 函数, 列表与递归现代编程思想 函数, 列表与递归 Hongbo Zhang 1 基本数据类型:函数 2 函数 在数学上,描述对应关系的⼀种特殊集合 对于特定的输⼊,总是有特定的输出 在计算机中,对相同运算的抽象,避免⼤量重复定义 计算半径为1的圆的⾯积: 3.1415 * 1 * 1 计算半径为2的圆的⾯积: 3.1415 * 2 * 2 计算半径为3的圆的⾯积: 3.1415 * 3 * * 3 …… fn ⾯积(半径: Double) -> Double { 3.1415 * 半径 * 半径 } 3 函数 计算半径为1、2、3的圆的⾯积: 1. let surface_r_1: Double = { let r = 1.0; pi * r * r } 2. let surface_r_2: Double = { let r = 2.0; pi * r * r } 3. let surface_r_3) 使⽤函数后 1. fn area(radius: Double) -> Double { pi * radius * radius } 2. let result = (area(1.0), area(2.0), area(3.0)) 4 顶层函数的定义 fn <函数名> (<参数名>: <类型>, <参数名>: <类型>, ...) -> <类型> <表达式块> 定义的函数接⼝让其他使⽤者⽆需关注内部实现0 码力 | 42 页 | 587.59 KB | 1 年前3 MoonBit月兔编程语言 现代编程思想 第三课 函数, 列表与递归现代编程思想 函数, 列表与递归 Hongbo Zhang 1 基本数据类型:函数 2 函数 在数学上,描述对应关系的⼀种特殊集合 对于特定的输⼊,总是有特定的输出 在计算机中,对相同运算的抽象,避免⼤量重复定义 计算半径为1的圆的⾯积: 3.1415 * 1 * 1 计算半径为2的圆的⾯积: 3.1415 * 2 * 2 计算半径为3的圆的⾯积: 3.1415 * 3 * * 3 …… fn ⾯积(半径: Double) -> Double { 3.1415 * 半径 * 半径 } 3 函数 计算半径为1、2、3的圆的⾯积: 1. let surface_r_1: Double = { let r = 1.0; pi * r * r } 2. let surface_r_2: Double = { let r = 2.0; pi * r * r } 3. let surface_r_3) 使⽤函数后 1. fn area(radius: Double) -> Double { pi * radius * radius } 2. let result = (area(1.0), area(2.0), area(3.0)) 4 顶层函数的定义 fn <函数名> (<参数名>: <类型>, <参数名>: <类型>, ...) -> <类型> <表达式块> 定义的函数接⼝让其他使⽤者⽆需关注内部实现0 码力 | 42 页 | 587.59 KB | 1 年前3
 MoonBit月兔编程语言 现代编程思想 第六课 泛型与高阶函数现代编程思想 泛型与⾼阶函数 Hongbo Zhang 1 设计良好的抽象 软件⼯程中,我们要设计良好的抽象 当代码多次重复出现 当抽出的逻辑具有合适的语义 编程语⾔为我们提供了各种抽象的⼿段 函数、泛型、⾼阶函数、接⼝…… 2 泛型函数与泛型数据 3 堆栈 栈是⼀个由⼀系列对象组成的⼀个集合,这些对象的插⼊和删除遵循后进先出原则 (Last In First Out) } 12. } 我们希望存储很多很多类型在堆栈中 每个类型都要定义⼀个对应的堆栈吗? IntStack 和 StringStack 似乎结构⼀模⼀样? 7 泛型数据结构与泛型函数 泛型数据结构与泛型函数以类型为参数,构建更抽象的结构 1. enum Stack[T] { 2. Empty 3. NonEmpty(T, Stack[T]) 4. } 5. fn Stack::empty[T]() NonEmpty(top, rest) => (Some(top), rest) 11. } 12. } 将 T 替换为 Int 或 String 即相当于 IntStack 与 StringStack 8 泛型数据结构与泛型函数 我们⽤ [<类型1>, <类型2>, ...] 来定义泛型的类型参数 enum Stack[T]{ Empty; NonEmpty(T, Stack[T]) } struct0 码力 | 27 页 | 2.56 MB | 1 年前3 MoonBit月兔编程语言 现代编程思想 第六课 泛型与高阶函数现代编程思想 泛型与⾼阶函数 Hongbo Zhang 1 设计良好的抽象 软件⼯程中,我们要设计良好的抽象 当代码多次重复出现 当抽出的逻辑具有合适的语义 编程语⾔为我们提供了各种抽象的⼿段 函数、泛型、⾼阶函数、接⼝…… 2 泛型函数与泛型数据 3 堆栈 栈是⼀个由⼀系列对象组成的⼀个集合,这些对象的插⼊和删除遵循后进先出原则 (Last In First Out) } 12. } 我们希望存储很多很多类型在堆栈中 每个类型都要定义⼀个对应的堆栈吗? IntStack 和 StringStack 似乎结构⼀模⼀样? 7 泛型数据结构与泛型函数 泛型数据结构与泛型函数以类型为参数,构建更抽象的结构 1. enum Stack[T] { 2. Empty 3. NonEmpty(T, Stack[T]) 4. } 5. fn Stack::empty[T]() NonEmpty(top, rest) => (Some(top), rest) 11. } 12. } 将 T 替换为 Int 或 String 即相当于 IntStack 与 StringStack 8 泛型数据结构与泛型函数 我们⽤ [<类型1>, <类型2>, ...] 来定义泛型的类型参数 enum Stack[T]{ Empty; NonEmpty(T, Stack[T]) } struct0 码力 | 27 页 | 2.56 MB | 1 年前3
 06 PHP基本语法 — 条件、循环、函数  杨亮 《PHP语⾔程序设计》PHP基本语法 —条件、循环、函数 杨亮 程序的基本结构 输⼊入 输出 程序 运算(+ - x / & | ! …) 逻辑(条件、循环、递归) 辅助(变量、数组、函数) ⼩小测验 ⽤用你熟悉的程序找出 1~1000中的所有质数 我们直接看代码好了 1 \n"; 13 } Distance Cost 50 5 100 10 150 15 200 20 250 25 while for 数组与循环 2 $prices = array('Tires'=>100, 'Oil'=>10, 'Spark Plugs'=>4); 3 4 foreach ($prices as $key => • 增强程序的⼀一致性 PHP中的代码重⽤用 • 将其他⽂文件中的html或者php代码引⼊入到本⽂文件 • require()与include(); • require_once()与include_once(); • 可以引⼊入其他的函数库,或者代码⽚片段 10 码力 | 25 页 | 1.30 MB | 1 年前3 06 PHP基本语法 — 条件、循环、函数  杨亮 《PHP语⾔程序设计》PHP基本语法 —条件、循环、函数 杨亮 程序的基本结构 输⼊入 输出 程序 运算(+ - x / & | ! …) 逻辑(条件、循环、递归) 辅助(变量、数组、函数) ⼩小测验 ⽤用你熟悉的程序找出 1~1000中的所有质数 我们直接看代码好了 1 \n"; 13 } Distance Cost 50 5 100 10 150 15 200 20 250 25 while for 数组与循环 2 $prices = array('Tires'=>100, 'Oil'=>10, 'Spark Plugs'=>4); 3 4 foreach ($prices as $key => • 增强程序的⼀一致性 PHP中的代码重⽤用 • 将其他⽂文件中的html或者php代码引⼊入到本⽂文件 • require()与include(); • require_once()与include_once(); • 可以引⼊入其他的函数库,或者代码⽚片段 10 码力 | 25 页 | 1.30 MB | 1 年前3 JAVA 应用与开发 - 集合与映射JAVA 应用与开发 集合与映射 让我们愉快的 Coding 起来吧... ��� �������������� November 4, 2019 ���� �����List����Set�����Map�的������� ���������� ������iterator��Enumeration ��������� API ������的������������ 1 28 ensureCapacity(int n) 该方法可以对 ArrayList 底层的数组进行扩容。 显式地调用这个函数,如果参数大于底层数组长度的 1.5 倍, 那么这个数组的容量就会被扩容到这个参数值,如果参数小于 底层数组长度的 1.5 倍,那么这个容量就会被扩容到底层数组 长度的 1.5 倍。 在适当的时机,好好利用这个函数,将会使我们写出来的程序 性能得到很大的提升。 课程配套代码 ± sample.setlistmap ArrayListEnSureCapacitySample.java 10 28 Vector � java.util.Vector ���� List ������的������的�� ��� O 与 ArrayList 的差别 Vector 是同步(线程安全)的,运行效率要低一些,主要用在在多 线程环境中,而 ArrayList 是不同步的,适合在单线程环境中使用。 �������� List0 码力 | 66 页 | 713.79 KB | 1 年前3 JAVA 应用与开发 - 集合与映射JAVA 应用与开发 集合与映射 让我们愉快的 Coding 起来吧... ��� �������������� November 4, 2019 ���� �����List����Set�����Map�的������� ���������� ������iterator��Enumeration ��������� API ������的������������ 1 28 ensureCapacity(int n) 该方法可以对 ArrayList 底层的数组进行扩容。 显式地调用这个函数,如果参数大于底层数组长度的 1.5 倍, 那么这个数组的容量就会被扩容到这个参数值,如果参数小于 底层数组长度的 1.5 倍,那么这个容量就会被扩容到底层数组 长度的 1.5 倍。 在适当的时机,好好利用这个函数,将会使我们写出来的程序 性能得到很大的提升。 课程配套代码 ± sample.setlistmap ArrayListEnSureCapacitySample.java 10 28 Vector � java.util.Vector ���� List ������的������的�� ��� O 与 ArrayList 的差别 Vector 是同步(线程安全)的,运行效率要低一些,主要用在在多 线程环境中,而 ArrayList 是不同步的,适合在单线程环境中使用。 �������� List0 码力 | 66 页 | 713.79 KB | 1 年前3 Java 应用与开发 - Java 语言基础与流程控制大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 Java 应用与开发 Java 语言基础与流程控制 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 August 28, 2018 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 参考书目 1. 陈国君等编著 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 学习目标 ▶ Java 语言基础 1. 数据类型 2. 常量和变量 3. 关键字与标识符 4. 运算符与表达式 5. 从键盘输入数据 ▶ 流程控制 1. 语句和复合语句 2. 分支结构(选择结构) 3. 循环结构 4. 跳转语句 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 ���� 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入0 码力 | 37 页 | 685.82 KB | 1 年前3 Java 应用与开发 - Java 语言基础与流程控制大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 Java 应用与开发 Java 语言基础与流程控制 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 August 28, 2018 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 参考书目 1. 陈国君等编著 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 学习目标 ▶ Java 语言基础 1. 数据类型 2. 常量和变量 3. 关键字与标识符 4. 运算符与表达式 5. 从键盘输入数据 ▶ 流程控制 1. 语句和复合语句 2. 分支结构(选择结构) 3. 循环结构 4. 跳转语句 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 ���� 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入0 码力 | 37 页 | 685.82 KB | 1 年前3 Java 应用与开发 - Java 内存模型与分配机制内存管理建议 Java 应用与开发 Java 内存模型与分配机制 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 September 30, 2018 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 学习目标 1. 理解 JVM 内存模型,掌握 JVM 内存构成 2. 理解 Java 程序的运行过程,学会通过调试模式观察内存的 变化 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 Java 虚拟机(Java Virtual Machine, JVM) ▶ Java 程序运行在 JVM 上,JVM 是程序与操作系统之间的桥梁。 ▶ JVM 实现了 Java 的平台无关性。 ▶ JVM 是内存分配的前提。 类装载子系统 Class文件 Class文件 Class文件 方法区 Java堆 Java栈 From Survivor To Survivor 新生代 Old Space 老年代 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 Java 程序运行过程会涉及的内存区域 程序计数器 当前线程执行的字节码的行号指示器。 栈 保存局部变量的值,包括:用来保存基本数据类型的值; 保存类的实例,即堆区对象的引用(指针),也可以用来 保存加载方法时的帧。(Stack)0 码力 | 44 页 | 818.30 KB | 1 年前3 Java 应用与开发 - Java 内存模型与分配机制内存管理建议 Java 应用与开发 Java 内存模型与分配机制 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 September 30, 2018 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 学习目标 1. 理解 JVM 内存模型,掌握 JVM 内存构成 2. 理解 Java 程序的运行过程,学会通过调试模式观察内存的 变化 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 Java 虚拟机(Java Virtual Machine, JVM) ▶ Java 程序运行在 JVM 上,JVM 是程序与操作系统之间的桥梁。 ▶ JVM 实现了 Java 的平台无关性。 ▶ JVM 是内存分配的前提。 类装载子系统 Class文件 Class文件 Class文件 方法区 Java堆 Java栈 From Survivor To Survivor 新生代 Old Space 老年代 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 Java 程序运行过程会涉及的内存区域 程序计数器 当前线程执行的字节码的行号指示器。 栈 保存局部变量的值,包括:用来保存基本数据类型的值; 保存类的实例,即堆区对象的引用(指针),也可以用来 保存加载方法时的帧。(Stack)0 码力 | 44 页 | 818.30 KB | 1 年前3 Rust与算法 - 谢波第三届中国 Rust 开发者大会 Rust 与 算法 谢波 …………………………………………………………………………. …………………………………………………………………………… ...... …………………………………………………………………………… ……………… …………………………………………………………………………… ………………………. …………………………………………………………………………… 算法相关知识 • Rust 实现数据结构 • Rust 实现算法 • 总结及学习资源 背景介绍 • 个人信息 • 写作动机 • 可参考点 • 为什么 背景介绍 # 个人职业 # 与 Rust 结缘 # 前 GPT 时代作品 个人信息 结算及大数据系统研发工程师 疫情下的明智选择 / 个人项目实践 学习中总结探索 2015 年发布,很多人近几年才知道 Rust , Rust 公号:觉学社、 Rust 编程指北 # 书籍 《编程之道》、《 Rust 权威指南》、《 Rust 实战》、《深入浅出 Rust 》、 《 Rust 死灵书》、《 Rust 异步编程》、 《数据结构与算法( Rust 语言描述)》 # 在线教程 Rust Course 、 PingCap Talent Plan 、 Rust LeetCode 、令狐壹冲 (B 站 ) # 开源项目 Rust0 码力 | 28 页 | 3.52 MB | 1 年前3 Rust与算法 - 谢波第三届中国 Rust 开发者大会 Rust 与 算法 谢波 …………………………………………………………………………. …………………………………………………………………………… ...... …………………………………………………………………………… ……………… …………………………………………………………………………… ………………………. …………………………………………………………………………… 算法相关知识 • Rust 实现数据结构 • Rust 实现算法 • 总结及学习资源 背景介绍 • 个人信息 • 写作动机 • 可参考点 • 为什么 背景介绍 # 个人职业 # 与 Rust 结缘 # 前 GPT 时代作品 个人信息 结算及大数据系统研发工程师 疫情下的明智选择 / 个人项目实践 学习中总结探索 2015 年发布,很多人近几年才知道 Rust , Rust 公号:觉学社、 Rust 编程指北 # 书籍 《编程之道》、《 Rust 权威指南》、《 Rust 实战》、《深入浅出 Rust 》、 《 Rust 死灵书》、《 Rust 异步编程》、 《数据结构与算法( Rust 语言描述)》 # 在线教程 Rust Course 、 PingCap Talent Plan 、 Rust LeetCode 、令狐壹冲 (B 站 ) # 开源项目 Rust0 码力 | 28 页 | 3.52 MB | 1 年前3 Java 应用与开发 - Servlet 编程Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 Java 应用与开发 Servlet 编程 王晓东 wangxiaodong@ouc.edu.cn 计算机科学与技术系 November 13, 2018 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 组件的跳转,包括重定向和转发。 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 Servlet 概述 与 Servlet 相近的技术 ▶ CGI (Common Gateway Interface)。 ▶ MS 的 HTTP DLL 技术。 ▶ Perl 语言编写的处理代码。 Servlet 的特点 Servlet 示例 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 Servlet 的运行过程 1. 用户在浏览器请求 ServletURL 地址。 2. Web 容器接收到请求,检查是 Servlet 请求,将处理交给 Servlet 引擎。 3. Servlet 引擎根据 URL 地址检查是否有0 码力 | 50 页 | 725.36 KB | 1 年前3 Java 应用与开发 - Servlet 编程Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 Java 应用与开发 Servlet 编程 王晓东 wangxiaodong@ouc.edu.cn 计算机科学与技术系 November 13, 2018 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 组件的跳转,包括重定向和转发。 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 Servlet 概述 与 Servlet 相近的技术 ▶ CGI (Common Gateway Interface)。 ▶ MS 的 HTTP DLL 技术。 ▶ Perl 语言编写的处理代码。 Servlet 的特点 Servlet 示例 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 Servlet 的运行过程 1. 用户在浏览器请求 ServletURL 地址。 2. Web 容器接收到请求,检查是 Servlet 请求,将处理交给 Servlet 引擎。 3. Servlet 引擎根据 URL 地址检查是否有0 码力 | 50 页 | 725.36 KB | 1 年前3 Java 应用与开发 - 异常处理大纲 异常的概念及分类 Java 异常处理机制 Java 应用与开发 异常处理 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 October 30, 2018 大纲 异常的概念及分类 Java 异常处理机制 学习目标 1. 掌握 Java 异常的概念和分类 2. 深入理解 Java 异常处理机制 大纲 异常的概念及分类 Java 异常处理机制 大纲 异常的概念及分类 怎样去处理它们(因为和用户具体的应用有关); ▶ 另一方面,库的用户知道怎样处理这些错误,但却无法检查 它们何时发生(如果能检测,就可以再用户的代码里处理 了,不用留给库去发现)。 提供异常处理机制的的基本思想 让一个函数在发现了自己无法处理的错误时抛出(throw)一个 异常,然后它的(直接或者间接)调用者能够处理这个问题。 O 《C++ primer》 将问题检测和问题处理相分离。 (Exceptions let 怎样去处理它们(因为和用户具体的应用有关); ▶ 另一方面,库的用户知道怎样处理这些错误,但却无法检查 它们何时发生(如果能检测,就可以再用户的代码里处理 了,不用留给库去发现)。 提供异常处理机制的的基本思想 让一个函数在发现了自己无法处理的错误时抛出(throw)一个 异常,然后它的(直接或者间接)调用者能够处理这个问题。 O 《C++ primer》 将问题检测和问题处理相分离。 (Exceptions let0 码力 | 33 页 | 626.40 KB | 1 年前3 Java 应用与开发 - 异常处理大纲 异常的概念及分类 Java 异常处理机制 Java 应用与开发 异常处理 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 October 30, 2018 大纲 异常的概念及分类 Java 异常处理机制 学习目标 1. 掌握 Java 异常的概念和分类 2. 深入理解 Java 异常处理机制 大纲 异常的概念及分类 Java 异常处理机制 大纲 异常的概念及分类 怎样去处理它们(因为和用户具体的应用有关); ▶ 另一方面,库的用户知道怎样处理这些错误,但却无法检查 它们何时发生(如果能检测,就可以再用户的代码里处理 了,不用留给库去发现)。 提供异常处理机制的的基本思想 让一个函数在发现了自己无法处理的错误时抛出(throw)一个 异常,然后它的(直接或者间接)调用者能够处理这个问题。 O 《C++ primer》 将问题检测和问题处理相分离。 (Exceptions let 怎样去处理它们(因为和用户具体的应用有关); ▶ 另一方面,库的用户知道怎样处理这些错误,但却无法检查 它们何时发生(如果能检测,就可以再用户的代码里处理 了,不用留给库去发现)。 提供异常处理机制的的基本思想 让一个函数在发现了自己无法处理的错误时抛出(throw)一个 异常,然后它的(直接或者间接)调用者能够处理这个问题。 O 《C++ primer》 将问题检测和问题处理相分离。 (Exceptions let0 码力 | 33 页 | 626.40 KB | 1 年前3
共 642 条
- 1
- 2
- 3
- 4
- 5
- 6
- 65














 
 