首页 > 代码库 > 算法(第4版)-1.2.1 使用抽象数据类型
算法(第4版)-1.2.1 使用抽象数据类型
总结:本小节是关于抽象数据类型的综述,包括是什么、为什么、怎么办。
重点:
1. 研究同一个问题的不同算法的主要原因:它们的性能特点不同。
2. API:通过列出所有构造函数和实例方法(及操作)并简要描述它们的功用,说明抽象数据类型的行为。
3. Java中的所有数据类型都会继承toString()方法来返回用String表示的该类型的值。Java会在用+运算符将任意数据类型的值和String值连接时调用该方法。
可以重写toString()方法。必须声明为public String toString(),不能漏掉前面的public。
4. 每当用例调用了new(),系统都会:
· 为新的对象分配内存空间
· 调用构造函数初始化对象中的值
· 返回该对象的一个引用
5.
Counter heads = new Counter("heads");
↓ ↓
将变量和对象的引 调用构造函数
用关联的声明语句 来创建一个对象
6. 在用例代码中区分静态方法和非静态(实例)方法:静态方法调用的开头是类名(按习惯为大写),而非静态方法调用的开头总是对象名(按习惯为小写)。
7. Java将参数值的一个副本从调用端传递给了方法,这种方式称为按值传递。这种方式的一个重要后果是方法无法改变调用端变量的值。对于原始数据类型来说,这种策略正是我们所期望的(两个变量互相独立),但每当使用引用类型作为参数是我们创建的都是别名,所以就必须小心。换句话说,这种约定将会传递引用的值(复制引用),也就是传递对象的引用。例如,如果我们传递了一个指向Counter类型的对象的引用,那么方法虽然无法改变原始的引用(比如将它指向另一个Counter对象),但它能够改变该对象的值,比如通过该引用调用increment()方法。
小结:
八种原始数据类型 --> 传值 --> 不改变原值
String --> 传引用 --> 不改变原值 (Java String对象以“引用”方式被传递)
数组、类 --> 传引用 --> 改变其中元素/成员变量的值
*:这个必须理解!
算法(第4版)-1.2.1 使用抽象数据类型