一.引用变量的特点
- 对象是通过对象引用变量来访问的,该变量包含了对对象的引用。
- 假设我们自己定义一个类Circle,这个类是一种引用类型。该类类型的变量都可以引用该类的一个实例。
- 从表面上看,对象引用变量种似乎存放了一个对象;但是事实上,它只是存放了对该对象的引用。
二.基本类型变量和引用类型变量的区别
每个变量都代表一个保存了存储值的内存位置。声明一个变量时,就是在告诉编译器这个变量可以存放什么类型的值。
对于基本类型变量:
- 在内存中存储的是一个基本类型值。
- 可以在栈中直接分配内存
- 例如 int a=1; 变量a的值就是int值1;
对于引用类型变量:
- 对应内存所存储的值是一个引用,是对象的存储地址。
- 对象的引用在栈中,对象实际存放在堆中。
- 例如 Circle circle = new Circle(9)【参数表示半径】; 变量circle 的值保存的是一个引用,它指明这个Circle对象的内容存储在内存的什么位置。
三.基本类型变量和引用类型变量的赋值问题
1. 基本类型:将一个对对象的实际值赋给另一个变量。
i=1;
j=2;
j = i; 就是将基本类型变量 i 的内容复制给基本类型变量 j。
2. 引用类型:将一个变量的引用赋给另一个变量
c1= new Circle(9);
c2= new Circle(6);
c2=c1; 就是将c2的引用赋给c1,赋值之后,变量c2和c1指向同一个对象。这个时候c1以前的引用对象不再有用,因此,现在它就称为垃圾。垃圾会占用内存空间。Java运行系统会检测垃圾并自动回收它所占据的空间,这个过程称为垃圾回收。
【注意:如果你不再需要某个对象,可以显式地给该对象的引用变量赋值为null。 如果该对象没有被任何引用变量所引用,Java虚拟机会自动回收它所占据的空间。】