background image

7                     odds[n] = new int[n + 1]; 
8             } 
9                 
10             for (int n = 0; n < 10; ++n) {
11                 for (int k = 0; k < n + 1; ++k)
12                     odds[n][k] = n * k;
13             }
14             //注:C/C++

            

代码部分需要自行释放分配的内存。

15             for (int n = 0; n < 10; ++n) {
16                 if (n == 0)
17                     delete odds[n];
18                 else
19                     delete [] odds[n];
20             }
21             delete [] odds;
22         }
二、对象与类:
  1. Java 对象实例的存储方式:
  所有的 Java 对象实例都是通过 new 的方式创建的,如 Employee employee = 
new Employee()。而此时创建的 employee 对象实例,实际是指向 Employee 对象的
一 个 实 例 的 引 用 , 主 要 体 现 为 实 例 之 间 基 于 等 号 的 赋 值 , 如 : employee = 
employee2; 赋值后两个变量将指向同一个 Employee 对象实例。Java 处理对象变量的
方式和 C++中的引用比较类似,但是还是存在一定的差异,首先 C++不存在空引用,
既引用变量定义时也必须被同时声明其所引用的对象实例,再者就是引用一旦定义时初
始化后就不能再被重新赋值了。因此这里可以将 Java 的对象变量看做 C++中的对象指针,
如:BirthdayDate d; /*Java*/ 

 

等同于 BirthdayDate* d; /*C++*/。

  与 Java 对象实例声明的方式相同,C++中的对象指针也是通过 new 的方式进行初
始化的,如 BirthdayDate* d = new BirthdayDate. 同样可以将 C++中的对象指针赋
值为 NULL,也可以将其重新赋值指向另外一个对象实例。与 Java 相同,通过 new 操作
符创建的对象实例是存储在堆中的,不同的是,Java 的对象在创建后,无需开发人员在
去关注该对象实例需要合适被释放,所有的操作均有 Java 虚拟机中提供的垃圾回收机制
自动完成。而 C++中的该类对象,则需要开发人员通过调用 delete 操作符来自行完成释
放,如果忘记释放将会产生内存泄露。在 C++中,不仅可以将对象存储在堆上,同样也
可以定义并存储的栈上,如 BrithdayDate d; 该对象实例不需要手工释放,在栈退出时
将自动释放该对象的存储空间,同时也会调用该对象的析构函数。
  2. Java 对象方法的显式参数和隐式参数:
1     public class Employee {
2         public void raiseSalary(double byPercent) {
3             double raise = salary + byPercent / 100;
4             salary += raise;
5         }
6         private double salary;
7     }
  raiseSalary 是 Employee 类的一个成员方法,该方法是由两个参数构成,一个是