第4章类、对象和方法
了解类的基础知识、了解如何创建类、理解如何给引用变量赋值、创建方法,返回值,并使用形参,使用return关键字、从方法返回值、向方法添加形参,使用构造函数,创建带形参的构造函数。
这一章也是比较基础的,主要收获搞清楚new运算符和引用,并学习了Java垃圾回收。
如何创建对象
下面这行代码声明了一个名为minivan的Vehicle类型的变量。
Vehicle minivan = new Vehicle();
该声明完成两个功能。首先,它声明一个名为minivan的Vehicle类型的变量。该变量有定义对象,它是一个可以引用对象的变量。其次声明创建了对象的一个实际的副本,并把对象的引用赋值给了minivan。new运算符为对象分配内存,并返回一个对它的引用。该引用有new分配的对象在内存中的地址。然后,把引用存储在变量中。因此,在Java中,必须动态分配所有的类对象。
把上面的代码拆开来写:
Vehicle minivan;
minivan = new Vehicle();
第一行把nimivan声明为Vehicle类型对象的引用。nimivan是一个可以引用对象的变量,但是它本身不是对象。因此,minivan不引用对象。
第二行创建了一个新的Vehicle对象,并把它的引用赋值给了minivan。
new运算符可以用于创建任何类类型的对象。new运算符返回对新创建对象的引用。
引用变量和赋值
Vehicle car1 = new Vehicle();
Vehicle car2 = car1;
car1和car2引用相同的对象。但是car1和car2是没有关系的。对car2的赋值只是改变了car2所引用的对象而已。
void方法的返回方式
void方法的返回方式有两种,到达右花括号或者执行return语句。
注意void方法中可以写这样的return语句的。
public static void display(){
int i=3;
if (i>=1){
System.out.println(i);
i--;
}else return;
}
垃圾回收
Java的垃圾回收机制会自动回收对象,透明的在后台操作。具体工作方式为:当不存在对某对象的引用时,该对象就被认定为没有存在的必要了,它所占用的内存就要被释放,被回收的内存可以用于以后的分配。
使用finalize()方法来演示垃圾回收和终止。
protected void finalize()
在对象最后被垃圾回收器销毁之前调用它。
public class FDemo {
int x;
FDemo(int i){
x=i;
}
protected void finalize(){
System.out.println("Finalizing "+x);
}
void generator(int i){
FDemo o = new FDemo(i);
}
}
public class Finalize {
public static void main(String[] args){
int count;
FDemo ob = new FDemo(0);
for (count=1;count<1000000;count++){
ob.generator(count);
}
}
}
创建和销毁1000000个对象