java中的对象、引用
对象: 在java中有着万事万物皆对象的说法,但在此处的对象指的是实例对象。
引用: 通常来说java程序中的变量名(或常量名)即是“引用”。引用中储存着实例对象的内存地址或者变量“值”。
public class test{
public static void main(String [] args){
People peo=new People();
int num=4;}
}
此处的new People()代码创建了一个实例对象,而peo则是这个实例对象的引用,peo中储存着实例对象的内存地址,可以通过peo来调用实例对象中的属性或方法。
同时,num也是一个引用,其中储存着变量值4。
实例对象与引用的关系: 一个引用指向1个或0个实例变量,而一个实例变量可以有个引用,一旦没有引用指向实例变量,该实例变量就会变成内存垃圾,从而被清理掉。
//首先创造一个类
public class People{
String name;
}
public class test{
public static void main(String [] args){
People peo1,peo2,peo3;//此时这三个引用没有指向任何一个实例对象
peo1=new People();//创建一个实例对象,并让peo1指向它
peo1.name="张三";//此时就可以通过引用来对实例对象的name属性赋值
poe2=poe1;
peo3=peo2;//让引用peo2.peo3都指向这个实例变量
System.out.println(peo1.name);
System.out.println(peo2.name);
System.out.println(peo3.name);
//打印结果应该都是“张三”,因为这个三个引用指向同一对象}
People poe4=new People();
peo4.name="李四";//创建一个新的people实例,poe4是它的引用,并把它的name赋值为李四;
System.out.println(peo4.name);//打印结果为“李四”
peo4=peo3;//将peo4指向name为“张三”的实例对象
System.out.println(peo4.name);//打印结果为张三“”
//由于name为"李四"的实例变量没有任何引用,所以它已经被销毁了
}
如图: