一、前言:
Java的数据类型有两种:一种是基本数据类型,一种是引用类型。Java变量分为局部变量、成员变量(实例变量)、静态变量(类变量)。
二、变量必须拥有类型和名称。
三、对象的声明、创建与赋值有3个步骤
此变量的类型是Dog,变量的名称是myDog。
①声明一个引用变量。要求Java虚拟机分配空间给引用变量,并将此变量命名为myDog。此引用变量将永远被固定为Dog类型。
②创建对象:要求Java虚拟机分配堆空间给新建立的Dog对象。
③连接对象和引用:将新的Dog赋值给myDog这个引用变量。
四、在堆上的生活
(一)、
Book b = new Book();
Book c = new Book();
声明两个Book的引用变量并创建两个Book对象,然后将Book对象赋值给引用变量。现在这两个Book对象生活在堆上。
引用数:2 对象数:2
(二)、
Book d = c;
声明新的Book引用变量,但不创建新的Book对象。而是将变量c的引用赋给变量d,这意味着c的字节组合拷贝给变量d(c和d都引用相同的对象)。
引用数:3
对象数:2
(三)、
c = b ;
把变量b的引用赋值给变量c。这意味着变量b的字节组合被拷贝一份给c(b与c两者都引用相同的对象)(一个变量至多对应一个对象。一个对象可以对应多个变量)。
引用数:3
对象数:2
五、堆上的 生与死
(一)、
(二)、
b = c;
把变量c的值赋给变量b。b和c引用相同的对象。对象1将被垃圾回收机制收集。
引用数:2
对象数:2
被抛弃对象数:1
(三)、
c = null;
将null值赋给c。这代表着c不再引用任何对象,但还是个可以被指定引用 其他Book的引用变量。
作用中的引用数:1
null引用数:1
可存取对象数:1
被抛弃对象数:1