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

Similar documents
OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac)

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

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

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

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢

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

CC213

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

3.1 num = 3 ch = 'C' 2

新・解きながら学ぶJava

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

C 1

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

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

新版 明解C++入門編

C/C++程序设计 - 字符串与格式化输入/输出

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

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

无类继承.key

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

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

untitled

C/C++语言 - C/C++数据

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

FY.DOC

新版 明解C言語入門編

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

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

C

C C

untitled

新・解きながら学ぶC言語

CHAPTER 1

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

c_cpp

C/C++ - 文件IO

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

Microsoft Word - 01.DOC

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

02

Microsoft Word - 第3章.doc

新・明解C言語入門編『索引』

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

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

Microsoft Word - 新1-12.doc

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

python内存管理

CHAPTER VC#

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

C/C++ - 字符输入输出和字符确认

C++ 程式設計

C/C++ 语言 - 循环

CC213

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

《C语言程序设计》教材习题参考答案

chap07.key

Ps22Pdf

Chapter 9: Objects and Classes

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

Microsoft PowerPoint - course2.ppt

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

《C语言程序设计》第2版教材习题参考答案

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

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

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

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

Microsoft Word - CPE考生使用手冊 docx

概述

untitled

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

Microsoft Word - Mobile Trading User Manual-updated

Microsoft Word 電腦軟體設計.doc

WWW PHP Comments Literals Identifiers Keywords Variables Constants Data Types Operators & Expressions 2

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

C/C++ - 函数

Java

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

untitled

Guava学习之Resources

EJB-Programming-3.PDF

書本介紹


6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

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

C/C++ - 字符串与字符串函数

C

untitled

C/C++ - 结构体、共用体、枚举体

提问袁小兵:

没有幻灯片标题





Microsoft PowerPoint ShengYang Presentation Slides_240609

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

Microsoft Word - CIN-DLL.doc


Transcription:

OOP with Java Yuanbin Wu cs@ecnu

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

OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域

OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域

Java 类型 Java 类型 基本类型 (primitive types) 频繁使用 类 (class) 自定义 数组 (array)

Java 类型 复习 : 类型与对象 属于同一个类型的对象 每个人的手机, 手机 房间中不同的灯泡, 灯泡 int a = 1; 类型是对象将提供的服务的描述 面向对象编程的基本步骤 定义类型 创建属于该类型的对象 ( 实例化 ) 使用对象的服务

Java 类型 Java 类型 基本数据类型 (primitive types) 类 (class) 数组 (array)

Java 基本类型 1. 跨平台 2. unsigned

Java 基本类型 定义类型 创建对象 int a = 1, double d = 1.0; 使用对象 int b = a * 2;

Java 基本类型 boolean 布尔型 仅取两个值 : true, false 逻辑表达式 C: 非零即为真 if (1), if(2), if(-1) Java If(1), if(2), if(-1) if(true)

Java 基本类型 char C: 实际为整数 signed char: 有符号, 至少包含 [-127, 127] unsigned char: 无符号, 至少包含 [0, 255] Java: 16bit

Java 基本类型 基本类型的封装 (Wrapper) int: 基本类型 Integer: 类 提供更多与整数相关的功能

Java 基本类型 More on Java char (16 bit) ASCII Unicode 新的字符编码方式, 目前已使用超过 120,000 个 ( 是否能用 16bit 存储?) Utf-8: 一种 Unicode 的变长实现方式, 以 8bit 为单位增长, 与 ASCII 兼容 Utf-16: 一种 Unicode 的变长实现方式, 一个或两个 16bit. 前 16bit 能代表常用的 Unicode (basic multilingual plane) char: 16 位 仅能表示 Unicode 中的 basic multilingual plane char array, String Utf-16 字符数组 字符对象组成的数组 每个 unicode code point 可能有两个 16 bit ( 称为 unicode code unit).

Java 类型 Java 类型 基本类型 (primitive types) 类 (class) 数组 (array)

Java 类 定义 Java 类 class MyType { int i; double d; char c; void set(double x); double get(); } 数据 (Fields) 方法 (Methods)

Java 类 创建类的对象 malloc 构造函数 MyType a = new MyType(); 访问数据成员, 使用对象的方法 Let's try int b = a.i; a.set(); a.get();

Java 类 C 语言 struct typedef typedef MyType MyType; struct MyType { int i; double d; char c; void set(double x); double get(); } MyType m; m.i = 1; m.d = 1.0; m.c = 'a'; MyType* n = (MyType*) malloc(sizeof(mytype)); n->i = 1; n->d = 1.0; n ->c = 'a'; free(n);

Java 类 创建类的对象 使用对象的方法? 销毁对象 Java 自动销毁 MyType a = new MyType(); int b = a.i; a.set(); a.get();

Java 类 对比基本类型与类 基本类型 : int 类 : Integer String

Java 类 数据成员默认初始值 Primitive type Default boolean char byte short false '\u0000' (null) (byte)0 (short)0 int 0 long 0L float 0.0f double 0.0d

Java 类型 Java 类型 基本类型 (primitive types) 类 (class) 数组 (array)

数组 顺序存储对象 数组类型 int a[ ]; int [ ]a; MyType m[ ]; MyType [ ]m; 不指定长度

数组 初始化 静态初始化 int [ ]a = {1, 2, 3, 4, 5};

数组 初始化 动态初始化 1 int [ ]a = new int[5]; MyType [ ]m = new MyType[3];

数组 初始化 动态初始化 2 int [ ]a = new int[5] {1, 2, 3, 4, 5}; MyType [ ]a = new MyType[3] { new MyType(), new MyType(), new MyType() };

数组 数组元素的默认值 基本类型 默认值 类 Null Let's try

数组 二维数组 定义 int a[ ][ ]; Int [ ][ ]a; MyType m[ ][ ]; MyType [ ][ ]m;

数组 二维数组 静态初始化 int [ ][ ] a= { {1,2,3}, {4, 5, 6} };

数组 二维数组 动态初始化 1 int [ ][ ] a= new int[2][3]; MyType [ ][ ] m= new MyType[2][2];

数组 二维数组 动态初始化 2 int [ ][ ]a = new int[2][3]{ {1,2,3}, {4,5,6} }; MyType [ ][ ]m = new MyType[2][2]{ {new MyType(), new MyType()}, {new MyType(), new MyType()} }

数组 多维数组 int [ ][ ][ ] a= new int [2][3][3]; MyType [ ][ ][ ] m = new int[6][6][6];

数组 不规则数组 (ragged array) int [ ][ ] a= { {1, 2}, {3, 4, 5}, {7, 8, 9, 10}};

数组 数组 数组可以视为一个 类 数据成员 : length 数组的长度 (Let's try) int [ ][ ] a= { {1, 2}, {3, 4, 5}, {7, 8, 9, 10}}; int i = a.length; 方法成员 : [i] a[i] 返回数组的第 i 个元素

总结 Java 类型 基本类型 类 Int, char, float, double, boolean, long, short class MyType {int I; double d; double get(); } 数组

OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域

引用 以下程序的运行结果? int [ ] a = new int[3]{1,2,3}; int [ ] b; b = a; b[0] = 4; System.out.println(a[0]);

引用 引用 (Reference, 类型的引用 ) 对象的名字 同一个对象可以有不同的名字 创建一个应用 引用间赋值 创建对象返回对象的引用 int [ ] a = new int[3]{1,2,3}; int [ ] b; b = a; b[0] = 4; System.out.println(a[0]);

引用 引用 (Reference) MyType m = new MyType(); MyType n; n = m; n.set(1.0); System.out.println(m.get());

引用 指针? Java int [ ] a = new int[3]{1,2,3}; int [ ] b; b = a; b[0] = 4; System.out.println(a[0]); C int *a = (int *)malloc(sizeof(int) * 3); a[0] = 1;a[1] = 2; a[2] = 3; int *b = a; b[0] = 4; printf( %d\n, a[0]);

引用 Java 标准并没有指定引用应该如何实现 绝大多数 Java 内部使用指针实现引用 创建一个引用指针 引用间赋值指针 创建对象返回对象的引用指针 int [ ] a = new int[3]{1,2,3}; int [ ] b; b = a; b[0] = 4; System.out.println(a[0]);

引用 引用与指针的关系 引用是受限的指针 引用 不允许指针运算 : int a[] = {1, 2, 3}; a++; 不能强制转换 类的引用, 数组的引用 基本类型的引用 int a = 1; a 为普通变量, 并非 ' 指针 '

引用 引用的初始化 MyType m = new MyType(); MyType m = null; 默认初始化 类定义中的引用被默认初始化为 null Class A { MyType m; } 数组中元素的引用被默认初始化为 null MyType [ ]m = new MyType[3]; for (int i= 0; i < 3; ++i) System.out.println(m[i]);

OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域

不可变类型 不可变类型 (immutable) 类型的对象一旦创建就不能被改变 例子 String 类, Integer 类, Float 类... String s = Hello World ; System.out.println(s.toUpperCase()); System.out.println(s); 可变类型 (mutable) 例子 MyType, 数组 MyType m = new MyType(); System.out.println(s.get()); m.set(1.0); System.out.println(s.get()); int []a = {1, 2, 3}; System.out.println(a[0]); a[0] = 1 System.out.println(a[0]);

不可变类型 不可变类型的优点 简单 易用 安全

OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域

对象存储位置 对象在内存中的位置 C 语言 void func() { int x = 0;... } void func() { int *ptr = (int*)malloc(sizeof(int));... } 栈内存 ( 局部变量 ): 1. 自动分配 / 销毁 2. 由编译器完成 3. 又称 自动内存 堆内存 : 由程序员负责分配 / 销毁 当函数返回时?

对象存储位置 对象在内存中的位置 00000000 Code Heap Free FFFFFFFF Stack

对象存储位置 Java 基本类型 栈内存 类 堆内存 new malloc 不用显式回收 Java 虚拟机自动回收无效的内存 垃圾回收 (Garbage Collection)

OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域

作用域 作用域 大括号 : { } int x = 12; { int q = 96; } { } String s = 1234 ;

总结 Java 类型 基本类型, 类, 数组 引用 受限的指针 不可变类型 一旦创建对象则不能改变 对象存储位置 栈, 堆 作用域 { }