OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点

Similar documents
OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

CC213

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

untitled

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

untitled

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 01.DOC

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

chap07.key

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

FY.DOC

Microsoft Word - ch04三校.doc

51 C 51 isp 10 C PCB C C C C KEIL

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2

《大话设计模式》第一章

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

附录J:Eclipse教程

3.1 num = 3 ch = 'C' 2

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

chp6.ppt

Microsoft Word - 新1-12.doc

Java

软件工程文档编制

OOP with Java 通知 Project 7, 6 月 14 日晚 9 点 本周四上机课正常进行 答疑 本周三, 周五下午 1:00 3:00, 理科楼 B911 6 月 12 日考试 ( 随堂 ) 下午 1:00-3:00 教书院 218

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

untitled

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

JavaIO.PDF

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指

(京)新登字063号

全国计算机技术与软件专业技术资格(水平)考试

EJB-Programming-3.PDF


OOP with Java 通知 Project 3: 4 月 19 日晚 9 点

c_cpp

Microsoft Word - PHP7Ch01.docx

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx

_汪_文前新ok[3.1].doc

untitled

Java 1 Java String Date

untitled

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

untitled

Microsoft PowerPoint - ds-1.ppt [兼容模式]

尽 管 Java 语 言 是 在 C++ 语 言 基 础 上 发 展 起 来 的, 但 与 C++ 不 同,Java 是 一 种 纯 粹 的 面 向 对 象 语 言 (Object-oriented language) 在 Java 世 界 中, 所 有 事 物 都 是 Object 1. 通 过

untitled

第3章.doc

Chapter 9: Objects and Classes

尽 管 Java 语 言 是 在 C++ 语 言 基 础 上 发 展 起 来 的, 但 是 有 别 于 C++,Java 是 一 种 纯 粹 的 面 向 对 象 语 言 (Object-oriented language) 在 像 Java 这 样 纯 粹 的 面 向 对 象 语 言 中, 所 有

mvc

epub83-1

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

untitled

提问袁小兵:

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

填 写 要 求 1. 以 word 文 档 格 式 如 实 填 写 各 项 2. 表 格 文 本 中 外 文 名 词 第 一 次 出 现 时, 要 写 清 全 称 和 缩 写, 再 次 出 现 时 可 以 使 用 缩 写 3. 本 表 栏 目 未 涵 盖 的 内 容, 需 要 说 明 的, 请 在

JAVA String常用APi

<4D F736F F D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

nooog

3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

社大規畫-生活藝能期末報告.doc

RxJava

1 LINUX IDE Emacs gcc gdb Emacs + gcc + gdb IDE Emacs IDE C Emacs Emacs IDE ICE Integrated Computing Environment Emacs Unix Linux Emacs Emacs Emacs Un

RunPC2_.doc

, 即 使 是 在 昏 暗 的 灯 光 下, 她 仍 然 可 以 那 么 耀 眼 我 没 有 地 方 去, 你 会 带 着 我 么 杜 晗 像 是 在 嘲 笑 一 般, 嘴 角 的 一 抹 冷 笑 有 着 不 适 合 这 个 年 龄 的 冷 酷 和 无 情, 看 着 江 华 的 眼 神 毫 无 温

2/14 Buffer I12, /* x=2, buffer = I 1 2 */ Buffer I243, /* x=34, buffer = I 2 43 */ x=56, buffer = I243 Buffer I243I265 code_int(int x, char *buffer)

PowerPoint Presentation

Microsoft PowerPoint - course2.ppt

Microsoft Word - Broker.doc

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C Project 30 C Project 3 60 Project 40

06 01 action JavaScript action jquery jquery AJAX CSS jquery CSS jquery HTML CSS jquery.css() getter setter.css('backgroundcolor') jquery CSS b

Microsoft PowerPoint - L17_Inheritance_v4.pptx

TC35短信发送程序设计

Microsoft PowerPoint - string_kruse [兼容模式]

C 1

電機工程系認可證照清單 /7/1

ebook39-5

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f

untitled

<ADB6ADB1C25EA8FAA6DB2D4D56432E706466>

C++ 程式設計

(Microsoft Word - \272\364\263q\245|\244A_ _\304\254\253\330\336\263__\272\353\302\262\263\370\247i.doc)

Microsoft Word - 物件導向編程精要.doc

Scott Effective C++ C++ C++ Roger Orr OR/2 ISO C++ Effective Modern C++ C++ C++ Scoot 42 Bart Vandewoestyne C++ C++ Scott Effective Modern C++ Damien

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检

全国计算机技术与软件专业技术资格(水平)考试

Transcription:

OOP with Java Yuanbin Wu cs@ecnu

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点

复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i; double d; 数据 (Fields) char c; void set(double x); double get(); 方法 (Methods) MyType a = new MyType(); int b = a.i; a.set(); a.get(); 创建对象 使用对象 More on String, Integer class 数组 初始化 int [ ]a = {1, 2, 3,4, 5; MyType [ ]a = new MyType[3]; MyType [ ]a = new MyType[ ] {new MyType(), new MyType(), new MyType(); //Lecture2 关于数组的动态初始化有误, 已更新 int i = a.length; int t = a[3]; 数组作为对象

复习 引用 (Reference) 对象的名字 受限指针 创建一个引用 引用间赋值 创建对象返回对象的引用 int [ ] a = new int[ ]{1,2,3; int [ ] b; b = a; b[0] = 4; System.out.println(a[0]); 不可变类型 (Immutable type) 一旦创建就不能改变 String s = Hello World ; System.out.println(s.toUpperCase()); System.out.println(s);

OOP with Java Java 操作符 Java 控制结构 静态方法 库与模块化编程

OOP with Java Java 操作符 Java 控制结构 静态方法 库与模块化编程

Java 操作符 Java 操作符 赋值操作 算术操作 自增自减操作 关系操作 逻辑操作 if-else 操作 位操作 String 连接操作 强制转换操作 sizeof 优先级

Java 操作符 操作符 (operator) a + b a!= b a && b 表达式 (expression) 常量, 变量, 函数, 操作符按照 '' 语法 '' 组成的 '' 语句 '' 表达式的值 (value of expression) 编程语言计算表达式后返回的值 表达式 函数 操作符 : 函数名 操作数 : 参数 表达式的值 : 返回值

Java 操作符 赋值操作 a = b; a = b = c; 表达式的值 赋值号 (=) 左边表达式的值

Java 操作符 算术操作 + 加法 (addition): a+1 - 减法 (subtraction): a-1 * 乘法 (multiplication): a*2 / 除法 (division): 7/8 % 取模 (modulus) 5.0%2.6 与赋值结合 +=, -=, *=, /=, %=

Java 操作符 正负操作符 +, - x = -a; x = a*-b + : 将 byte, short, char 转换为 int 自增自减操作 a++; a--; ++a; --a;

Java 操作符 关系操作 ==,!=, >, <, >=, <= 表达式的值为 boolean 1==1 : true 2 > 3: false

Java 操作符 判断是否相等 : == == Let's try 对基本类型 : 比较它们的值 对类的对象 : 比较引用

Java 操作符.equals() 方法 默认 : 比较引用 ( 与直接使用 == 相同 ) 可根据需求重写 equals() 来自哪里? 继承 所有类都默认是 Object 类的子类 Object 类包含.equals() 方法

Java 操作符 逻辑操作 && 与运算 (and) 或运算 (or)! 非运算 (not) 表达式的值为 boolean if (a == 1 b = 1) { 短路 (short-circuiting) if(1!= 1 && a++ = 2) if(1!= 1 a++ = 2)

Java 操作符 If-else 三目操作 a == b? 1 : 0

Java 操作符 位操作 & 位与操作 (bitwise and) 位或操作 (bitwise or) ~ 位否操作 (bitwise not) ^ 位异或操作 (bitwise exclusive or), XOR 与赋值结合 &=, =, ^=

Java 操作符 移位操作 (shift) 带符号移位 >>, << 不带符号移位 >>> char, byte, short 先转为 int 与赋值结合 >>=, <<=, >>>=

Java 操作符 String 连接操作 String s = Hello ; String r = World ; String t = s + r; String u = s; s += t; System.out.println(t); System.out.println(s); System.out.println(u); int x = 1; int y = 2; System.out.println( a + x + y); System.out.println( 'a' + x); ToString() 基本类型 类 Object 类方法 默认输出类名称, Hash code

Java 操作符 强制转换操作 基本类型 类 int a = (int)1.0f; 自动转换 : 当转换是安全的 ( 例如 int 转为 double) 显式转换 : 当转换将损失精度 ( 例如 double 转 int) boolean 类型不能强制转换 不允许强制转换...

Java 操作符 副作用 (side effects) 操作符的运算是否对外界有影响 有副作用 a = b, a++, a-- 无副作用 a+b, a == b, a >= b 判断是否有副作用 : 将表达式替换为表达式的值是否影响程序的执行

Java 操作符 sizeof Java 没有 sizeof 操作符 不需要知道类型的大小

Java 操作符 关于赋值操作 : int a = 1; int b = 2; a = b; a = a; 左值 lvalue 右值 rvalue

左值 (lvalue) 具有存储地址的表达式 右值 (rvalue) 没有存储地址的表达式 不能出现在赋值操作符左边 C 语言! 可修改左值 (modifiable lvalue) 并非所有左值都能出现在赋值操作符左边 不可修改左值 : const, 数组, 包含 const 成员的 struct/union 赋值操作 将 = 右边表达式的值放入 = 左边表达式的地址中 int a = 1; // a is a lvalue, 1 is a rvalue a = 2; // OK, since a has an address 1 = a; // ERROR, 1 doesn't have an address int const b = 2; // b is a non-modifiable lvalue int c[3] = {1, 2, 3; // Array is non-modifiable lvalue b = 3; // ERROR, non-modifiable lvalue int d[3] = {4, 5, 6; c = d; // ERROR, non-modifiable lvalue

左值与右值的转换 算术 / 关系 / 逻辑操作 : 取操作数的右值, 返回一个右值 取地址操作 & : 取左值表达式的地址, 返回一个右值 取值操作 * : 仅对指针 取指针的值, 返回一个左值 C 语言! int a = 1; // a is a lvalue, 1 is a rvalue int b = a + 1; // a+1 is a rvalue (a+1) = 2; // ERROR, (a+1) is a rvalue int *p = &a; *p = 3;

OOP with Java Java 操作符 Java 控制结构 静态方法 库与模块化编程

Java 控制结构 Java 控制结构 条件 循环 跳转

Java 控制结构 条件 If else if (boolean expression) { statements; else { statements;

Java 控制结构 循环 while, do-while, for while (boolean expression) { statements; do { statements; while (boolean expression); for(initialization; boolean expression; step){ statements;

Java 控制结构 循环 foreach int [ ]a = {1, 2, 3, 4, 5; for (int i : a) System.out.println(i);

Java 控制结构 跳转 return, break, continue switch break default

OOP with Java Java 操作符 Java 控制结构 静态方法 库与模块化编程

静态方法 操作符 控制语句 函数?

静态方法 MyType 定义类型 数据 方法 创建对象 new 调用对象的方法 m.set(), m.get() public class MyType { int i; double d; char c; void set(double x) { d = x; double get() { return d; public static void main(string [ ]args) { MyType m = new MyType(); MyType n = new MyType(); m.set(1); n.set(2); 问题 : 函数 get(), set() 与 main() 的区别?

静态方法 public class MyType { int i; double d; char c; void set(double x) { d = x; double get() { return d; public static void main(string [ ]args) { System.out.println( Hello );

静态方法 静态方法 (static methods) 不用创建对象既可被调用的方法 在定义时加 static 关键字 也称为 : 类方法 (class methods)

静态方法 例子 : public class StaticTest { static void display() { System.out.println( Hello ); public static void main(string [ ]args) { display(); StaticTest.display(); Prefer this one!

静态方法 public class StaticTest { double d; static void display() { System.out.println( Hello ); public static void main(string [ ]args) { display(); StaticTest.display(); StaticTest s = new StaticTest(); s.display(); 问题 : 替换为以下语句会发生什么? System.out.println(d);

静态方法 静态方法不依赖与类的实例化 ( 创建对象 ) 不能使用需要实例化后才分配空间的变量 / 函数

静态方法 静态数据 (static data) 类似于静态方法, 不依赖于类的实例化 也称为类数据 (class data) public class StaticTest { static int i = 1; static void display() { System.out.println( Hello ); public static void main(string [ ]args) { display(); StaticTest.display(); int a = StaticTest.i;

静态方法 静态数据类型 public class StaticTest { double d; static int i = 1; static void display() { System.out.println( Hello ); public static void main(string [ ]args) { display(); StaticTest.display(); StaticTest s = new StaticTest(); System.out.println(s.i); System.out.println(StaticTest.i)

静态方法 静态数据 在类的不同对象中共享 Let's try public class StaticTest { double d; static int i = 1; public static void main(string [ ]args) { StaticTest s = new StaticTest(); StaticTest t = new StaticTest(); t.d = 0.1; System.out.println( object data: + t.d + + s.d); StaticTest.i = 5; System.out.println( class data: + StaticTest.i + + s.i + + t.i);

静态方法 例子 : Math.sqrt() Integer.parseInt() Integer.MAX_VALUE main() MyType.java public static void main() public class MyType { int i; double d; char c; void set(double x) { d = x; double get() { return d; public static void main(string [ ]args) { MyType m = new MyType(); MyType n = new MyType(); m.set(1); n.set(2);

静态方法 参数传递 : 传值 (pass by value) 基本类型 类 / 数组 传入 引用的值 public class ArgumentTest { static void arrayaddone(int b[ ]) { for (int i = 0; i < b.length; ++i) b[i]++; static void intaddone(int y) { y++; public static void main(string [ ]args) { int x = 0; ArgumentTest.intAddOne(x); int [ ]a = {1, 2, 3, 4, 5; ArgumentTest.arrayAddOne(a);

OOP with Java Java 操作符 Java 控制结构 静态方法 库与模块化编程

库与模块化编程 我们已经可以做些什么? 运算符, 表达式 控制结构 函数 ( 静态 ) 定义类型, 使用对象 将程序放入多个.java 文件

库与模块化编程 使用其他.java 文件中的程序 public class MyType { int i; double d; char c; void set(double x) { d = x; double get() { return d; public static void main(string [ ]args) { MyType m = new MyType(); MyType n = new MyType(); m.set(1); n.set(2); MyType.java public class MyTest { public static void main(string [ ]args) { MyType k = new MyType(); k.set(3); System.out.println(k.get()); MyTest.java 编译 将 MyType.java MyTest.java 放在同一目录下 javac MyTest.java 问题 : 执行 java MyTest 和 java MyType 不同? 多个 main 函数?

public 关键字 库与模块化编程 public class MyType { int i; double d; char c; void set(double x) { d = x; double get() { return d; public class MyType { int i; double d; char c; public void set(double x) { d = x; public double get() { return d; 问题 : 1. set, get 加上 public 是否有影响? 2. 去掉第一行中的 public 是否有影响?

库与模块化编程 库 (Library) 一组功能相关的类, 为其他用户提供服务 用户程序 (Client) 使用库的程序 例子 : Integer, Math, MyType stdio.h

库与模块化编程 为什么使用不同的.java 文件 模块化编程 将任务分解成为简单, 更容易管理的子任务 优点 : 简单 易于 debug 代码重用 易维护