- java 中的整型和boolean不通用
int x = 1; while (x) {} 这是错误的
- 创建对象
需要两个类, 一个是操作类例如 Dog, 另外一个是测试类, 带有main函数.
- main()的两种用途
-
测试真正的类
-
启动你的Java程序
- 垃圾收集
注意:此处的 c, d 分别在两块内存单元里, 只是他们的指向是相同的, 即 这是两个指针变量, 这两个指针变量的值是相同的, 但是它们俩本身
的指针(地址)是不同的.
另外:
- 数组是对象 (只要是对象, 就会存在于堆内存中)
数组变量实际上就是指针,
int[] nums; // 1步, 创建指针
nums = new int[7]; // 2步, 在堆内存中分配空间, 并将 nums指针指向该内存区域
nums[0] = 6; // 3步, 可以使用该区域了, 可以直接使用了. 6 就是一块实实在在的内存区.
对象数组中, 数组中保存的内容是对象的指针(引用), 而并非真正的对象.
Dog[] pets; // 1步, 创建指针
pets = new Dog[7]; // 2步, 在堆内存中分配空间, 并将pets指向该内存区域, 但是每个元素中存放的是指针, 该指针目前是野指针.
pets[0] = new Dog(); // 3步, 在堆内存再分配空间来保存 Dog对象, 此时的 pets[0]中的指针(引用)指向该Dog对象的内存单元.
// 所以, 对象数组其实就是 2 级指针. 然后才找到实实在在的内存区域.
pets[0].break(); // 使用内容, 由此可见, pets 本身是不可能指向实实在在的内存区的.
注意: 对象数组在创建完以后, 还需要对每个数组成员再创建对象, 否则该数组成员就是野指针.