Java 应用与开发 - Java 语言基础与流程控制
大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 Java 应用与开发 Java 语言基础与流程控制 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 August 28, 2018 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 参考书目 1. 陈国君等编著 (3rd) 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 学习目标 ▶ Java 语言基础 1. 数据类型 2. 常量和变量 3. 关键字与标识符 4. 运算符与表达式 5. 从键盘输入数据 ▶ 流程控制 1. 语句和复合语句 2. 分支结构(选择结构) 3. 循环结构 4. 跳转语句 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 ���� 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式0 码力 | 37 页 | 685.82 KB | 1 年前3Java 应用与开发 - Java 内存模型与分配机制
Space 老年代 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 Java 程序运行过程会涉及的内存区域 程序计数器 当前线程执行的字节码的行号指示器。 栈 保存局部变量的值,包括:用来保存基本数据类型的值; 保存类的实例,即堆区对象的引用(指针),也可以用来 保存加载方法时的帧。(Stack) 堆 用来存放动态产生的数据,如 new 出来的对象和数组。 1。(Heap) 1注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因 为同一个类的对象拥有各自的成员变量,存储在各自的堆内存中,但是他们共 享该类的方法,并不是每创建一个对象就把成员方法复制一次。 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 Java 程序运行过程会涉及的内存区域 程序计数器 当前线程执行的字节码的行号指示器。 栈 保存局部变量的值,包括:用来保存基本数据类型的值; 1注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因 为同一个类的对象拥有各自的成员变量,存储在各自的堆内存中,但是他们共 享该类的方法,并不是每创建一个对象就把成员方法复制一次。 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 Java 程序运行过程会涉及的内存区域 程序计数器 当前线程执行的字节码的行号指示器。 栈 保存局部变量的值,包括:用来保存基本数据类型的值;0 码力 | 44 页 | 818.30 KB | 1 年前3《Java 应用与开发》课程讲义 - 王晓东
. . . . 10 2.1.2 数据类型转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.1.3 常量和变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.1.4 关键字与标识符 . . . . . . . . . 25 3.5 字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.5.1 字符串变量的创建 . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.5.2 String 类的常用方法 . . . . . . . . . 操作系统,可以采用以下路径: 1 D:\Program Files\Java 对于 Linux 操作系统,可以采用以下路径: 1 /opt/jdk1.8.0_172 接下来进行环境变量配置,以 Windows 操作系统为例: 变量名 Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 330 页 | 6.54 MB | 1 年前3Java 应用与开发 - 面向对象编程进阶
static 关键字 final 什么是多态? 在 Java 中,子类的对象可以替代父类的对象使用称为多态。 O Java 引用变量与所引用对象间的类型匹配关系 ▶ 一个对象只能属于一种确定的数据类型,该类型自对象创建 直至销毁不能改变。 ▶ 一个引用类型变量可能引用(指向)多种不同类型的对象 ——既可以引用其声明类型的对象,也可以引用其声明类型 的子类的对象。 1 Person p = Student类型对象 Person类型变量p 大纲 多态性 方法重载 关键字 static 关键字 final 什么是多态? 在 Java 中,子类的对象可以替代父类的对象使用称为多态。 O Java 引用变量与所引用对象间的类型匹配关系 ▶ 一个对象只能属于一种确定的数据类型,该类型自对象创建 直至销毁不能改变。 ▶ 一个引用类型变量可能引用(指向)多种不同类型的对象 ——既 Student(); //Student 是 Person 的子类 0x3a478b null 0 null name age school Student类型对象 Person类型变量p 大纲 多态性 方法重载 关键字 static 关键字 final 多态性 多态性同样适用与引用类型数组元素 1 Person[] p = new Person[3]; 2 p[0] =0 码力 | 49 页 | 659.74 KB | 1 年前3基于 Java EE 的企业应用系统设计 - Spring MVC 02
accept-language 的 EL 表达式1 ${header["accept-language"]} 1如果 propertyNarne 不是有效的 Java 变量名,只能使用 [] 运算符,此处 accept-language 就不是合法 Java 变量名。 大纲 转换器和格式化(Converter and Formatter) 验证器 表达式语言(EL) JSTL 表达式语言(示例) 访问 pageContext 隐式对象(示例) O applicationScope, sessionScope, requestScope, pageScope ▶ 隐式对象 applicationScope 用于获取应用程序范围级变量的 值,其他类似。 ${applicationScope.myVar} ▶ 有界对象(PageContext、ServletRequest、HttpSession 或 Servlet- Context)也可以通过没有范围的 创建一个字符串和一个引用该字符串的有界变量。 ▶ 创建一个引用现存有界对象的有界变量。 ▶ 设置有界对象的属性。 用 set 创建的有界变量在该标签出现后的整个 JSP 页面中都可以 使用该变量。 大纲 转换器和格式化(Converter and Formatter) 验证器 表达式语言(EL) JSTL JSTL 一般标签 O set 标签 第一种形式用于创建一个有界变量,并用 value 属性在其中定义0 码力 | 56 页 | 866.07 KB | 1 年前3Hello 算法 1.1.0 Java版
代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?, ? + 1, … , ? − 1 : // === File: iteration i = 1; // 初始化条件变量 // 循环求和 1, 2, ..., n-1, n while (i <= n) { res += i; i++; // 更新条件变量 } return res; } while 循环比 for 循环的自由度更高。在 while 循环中,我们可以自由地设计条件变量的初始化和更新步 骤。 例如在以下代码中,条件变量 ? 每轮进行两次更新,这种情况就不太方便用 循环(两次更新) */ int whileLoopII(int n) { int res = 0; int i = 1; // 初始化条件变量 // 循环求和 1, 4, 10, ... while (i <= n) { res += i; // 更新条件变量 i++; i *= 2; } return res; } 总的来说,for 循环的代码更加紧凑,while 循环更加灵活,0 码力 | 378 页 | 18.47 MB | 1 年前3Hello 算法 1.0.0b5 Java版
段代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?, ? + 1, … , ? − 1 。 // === File: iteration whileLoop(int n) { int res = 0; int i = 1; // 初始化条件变量 // 循环求和 1, 2, ..., n-1, n while (i <= n) { res += i; i++; // 更新条件变量 } return res; } 在 while 循环中,由于初始化和更新条件变量的步骤是独立在循环结构之外的,因此它比 for 循环的自由度 更高。 第 2 章 hello‑algo.com 20 例如在以下代码中,条件变量 ? 每轮进行了两次更新,这种情况就不太方便用 for 循环实现。 // === File: iteration.java === /* while 循环(两次更新) */ int whileLoopII(int n) { int res = 0; int i = 1; // 初始化条件变量 // 循环求和 1, 4, ... while0 码力 | 376 页 | 30.69 MB | 1 年前3Hello 算法 1.0.0 Java版
段代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?, ? + 1, … , ? − 1 : // === File: iteration res = 0; int i = 1; // 初始化条件变量 // 循环求和 1, 2, ..., n-1, n while (i <= n) { res += i; i++; // 更新条件变量 } return res; } while 循环比 for 循环的自由度更高。在 while 循环中,我们可以自由地设计条件变量的初始化和更新步 骤。 第 2 章 复杂度分析 hello‑algo hello‑algo.com 21 例如在以下代码中,条件变量 ? 每轮进行两次更新,这种情况就不太方便用 for 循环实现: // === File: iteration.java === /* while 循环(两次更新) */ int whileLoopII(int n) { int res = 0; int i = 1; // 初始化条件变量 // 循环求和 1, 4, 10, ...0 码力 | 376 页 | 17.59 MB | 1 年前3Hello 算法 1.2.0 简体中文 Java 版
代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?, ? + 1, … , ? − 1 : // === File: iteration res = 0; int i = 1; // 初始化条件变量 // 循环求和 1, 2, ..., n-1, n while (i <= n) { res += i; i++; // 更新条件变量 } return res; } while 循环比 for 循环的自由度更高。在 while 循环中,我们可以自由地设计条件变量的初始化和更新步 骤。 第 2 章 复杂度分析 www hello‑algo.com 21 例如在以下代码中,条件变量 ? 每轮进行两次更新,这种情况就不太方便用 for 循环实现: // === File: iteration.java === /* while 循环(两次更新) */ int whileLoopII(int n) { int res = 0; int i = 1; // 初始化条件变量 // 循环求和 1, 4, 10, ...0 码力 | 379 页 | 18.48 MB | 10 月前3Hello 算法 1.0.0b4 Java版
‧「输入空间」用于存储算法的输入数据。 ‧「暂存空间」用于存储算法运行过程中的变量、对象、函数上下文等数据。 ‧「输出空间」用于存储算法的输出数据。 通常情况下,空间复杂度统计范围是「暂存空间」+「输出空间」。 暂存空间可以进一步划分为三个部分: ‧「暂存数据」用于保存算法运行过程中的各种常量、变量、对象等。 ‧「栈帧空间」用于保存调用函数的上下文数据。系统在每次调用函数时都会在栈顶部创建一个栈帧,函 .. return 0; } int algorithm(int n) { // 输入数据 final int a = 0; // 暂存数据(常量) int b = 0; // 暂存数据(变量) Node node = new Node(0); // 暂存数据(对象) int c = function(); // 栈帧空间(调用函数) return a + b + c; // 输出数据 常数阶常见于数量与输入数据大小 ? 无关的常量、变量、对象。 需要注意的是,在循环中初始化变量或调用函数而占用的内存,在进入下一循环后就会被释放,即不会累积 占用空间,空间复杂度仍为 ?(1) 。 // === File: space_complexity.java === /* 常数阶 */ void constant(int n) { // 常量、变量、对象占用 O(1) 空间 final0 码力 | 342 页 | 27.39 MB | 1 年前3
共 28 条
- 1
- 2
- 3