- 相关推荐
Java中对象和引用的具体区别
初学Java的人,可能在在很长一段时间里,对对象和引用的基本概念都是很模糊的,老是分不清楚两者的区别。下面,应届毕业生小编给你整理一些有关对象和引用的区别供有需要的人参考。
一、对象与引用的概念
首先小编先解释一条代码更你更快的了解对象和引用的概念区别。
Vehicle veh1 = new Vehicle();
通常把这条语句的动作称之为创建一个对象,其实,它包含了三个动作。
1)右边的“new Vehicle()”,即新建对象本身;
2)左边的“Vehicle veh1”创建了一个Vehicle类的引用变量或称对象引用变量。
所谓Vehicle类引用,就是以后可以用来指向Vehicle对象的对象引用。
3)“=”操作符使对象引用指向刚创建的那个Vehicle对象。
我们可以把这条语句拆成两部分:
Vehicle veh1;
veh1 = new Vehicle();
效果是一样的。这样写,就比较清楚了,有两个实体:一是对象引用变量,一是对象本身。
可以这么说,在Java里都是通过引用来操纵对象的。 这就是两者的区别。
二、对象和引用的具体区别
相互关联体现在:
1)当对象的引用变量指向对象时,他们两就联系起来,改变引用的属性,就会改变对象的属性;
2)如果同一个对象被多个引用变量引用的话,则这些引用变量将共同影响这个对象本身。
相互独立体现在:
3)一个对象可以被不同的引用变量操纵,同时一个引用变量也可以指向不同的对象,但是同一时刻只能指向一个对象;
4)从存储空间上来说,对象和引用也是独立的,对象一般存储在堆中,而引用存储在堆栈(存储速度更快)中。
三、小编举例
为了加深大家的理解,小编再举一个例子具体说明一下两者的区别。
class Vehicle {
int passengers;
int fuelcap;
int mpg;
}
有了这个模板,就可以用它来创建对象,Vehicle veh1 = new Vehicle();
通常把这条语句的动作称之为创建一个对象,其实,它包含了四个动作。
1)右边的“new Vehicle”,是以Vehicle类为模板,在堆空间里创建一个Vehicle类对象(也简称为Vehicle对象)。
2)末尾的()意味着,在对象创建后,立即调用Vehicle类的构造函数,对刚生成的对象进行初始化。构造函数是肯定有的。如果你没写,Java会给你补上一个默认的构造函数。
3)左边的“Vehicle veh1”创建了一个Vehicle类引用变量。所谓Vehicle类引用,就是以后可以用来指向Vehicle对象的对象引用。
4)“=”操作符使对象引用指向刚创建的那个Vehicle对象。
我们可以把这条语句拆成两部分:
Vehicle veh1;
veh1 = new Vehicle();
效果是一样的。这样写,就比较清楚了,有两个实体:一是对象引用变量,一是对象本身。
【Java中对象和引用的具体区别】相关文章:
Java中hashmap和hashtable的区别03-30
java中String和StringBuffer的区别03-18
浅谈Java中的弱引用04-03
java中i++和++i的区别04-02
关于java中堆和栈的区别04-03
浅谈理解Java中的弱引用04-02
Java中静态绑定和动态绑定的区别04-02
Java中定义与声明的区别03-19