算法(第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对象以“引用”方式被传递

数组、类 --> 传引用 --> 改变其中元素/成员变量的值

*:这个必须理解!

原文地址:https://www.cnblogs.com/iguure/p/5995206.html