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();
效果是一样的。这样写,就比较清楚了,有两个实体:一是对象引用变量,一是对象本身。
-
21个java基本知识点
本文主要是一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java。1.JVM相关(包括了各个版本的特性)对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很...
-
2017上半年计算机二级Java练习题及答案
计算机等级证书是我们找工作的敲门砖,现在越来越多人重视计算机等级考试。下面是本站小编为大家带来的2017上半年计算机二级Java练习题及答案,希望对大家的学习有帮助!一、单选题1、结构化程序设计主要强调的是______。A、程序的规模B、程序的易读性C、程序的执...
-
Java语法基础for语句练习
本文是本站小编搜索整理的关于Java语法基础for语句练习,供参考学习,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生考试网!控制语句——for练习语句的嵌套应用累加求和,计数器循环嵌套一、语句的嵌套应用语句嵌套形式。其实就是语句中...
-
Java技术怎么学习
对于很多只会C语言的初学者而言,面对java基础语法学习,反而感觉很难,其实其中最大的问题不是语法难,而是一种编程思想的转变。怎么学习才是正确的呢?下面是相关的知识,欢迎阅读。1.概述学过一段时间的同学一定会觉得Java学习最头疼的不是语法结构的繁杂,而是Java本身...