Java对象引用:你以为握住了对象?不过是堆里的一根吊绳
2026/8/24 4:10:50 网站建设 项目流程

1.什么是对象?

“万物皆对象”, 此乃JAVA于设计起始阶段的理念当中的一个, 所谓“对象”, 依照通俗的表述而言便是“某一个类(class)的一个实例()”, 通常是处于堆里存储着的。

2.什么是引用?

在JAVA里的引用, 跟C语言当中的指针相同, 都是操控对象的标识符, 是依据特殊语法的间接表示, 一般存于速度更快的堆栈之中。

3.代码分析:

定义类:

class {

Int age

name

创建类对象:

lisi = new ();

下面分析这句创建对象的语句,总共包含4个动作:

(1)处于右边位置的那个“new () ”, 它是以类作为模板, 进而去创建一个类的对象, 也就是那个对象。

(2)表示在末尾的(), 是当对象被创建之后, 会马上调用类的构造函数(不管是自定义的还是系统默认的), 进而对该对象实施初始化。

(3)左边的那个被称作“lisi”的, 创建了一个类引用变量, 这个变量是用来指向对象的, 而所指对象又具有对象引用。

(4)“=”意味着一个传递地址的环节, 也就是把右边创建那儿新生成的对象“new ()”的地址传送到左边的引用变量“lisi”, 进而让“引用”指向了“对象”。

下面将创建对象的语句拆分成更清晰的两部分:

lisi;//引用变量部分

lisi = new (); //对象部分

对象是在堆内存里创建的, 它没有名字, 没办法直接去访问以及表示, 因此要用引用变量来进行间接的访问还有表示。

延伸讨论:

情况一:

若代码仅执行了开头部分, 鉴于未针对任一对象进行指向, 如此一来, 引用变量 lisi 便会呈现 null 值。

情况二:

再创建一个引用变量:

= lisi ;

第二句表明, 将引用lisi里所存有的那个对象的地址, 复制给予引用, 于是引用也指向了该对象。

情况三:

在创建一个新的()变量

= ();

表示引用,指向了新的变量。

综上:

(1)一个对象引用可以指向0个或1个对象;

(2)一个对象可以有N个引用指向它。

情况四:

lisi = ;

这时, lisi并非再指向初始的那个对象, 偏偏却如同那样也指向了第二个被创建出来的对象。如此一来, 这时头一个被创建的对象就会被归入垃圾回收所要处理的对象范畴。对象跟引用之间的关系就会持续一直到对象被回收。

情况五:

如果创建的对象没有引用变量也是合法的。

调用.out.方法将空字符串打印出来, 在这个操作完成之后, 该对象就会被当作可回收对象, 被列入到回收序列行列。

延伸思考:

Java当中全都是依据值来传递参数, 在参数如果是对象这个情形下, 那么就类似引用的那种传递方式。

class Test

{ int i,j;

void (Test a)

{ Test b = new Test();

b.i = 1;

b.j = 2;

a = b;

void (Test a )

{ a.i = 1;

a.j = 2;

void main( argv)

{ Test t= new Test();

t.i = 5;

t.j = 6;

输出,(“t点i等于”加上t的i, “t点j等于”加上t的j);这里要注意是5, 6!

t.(t);

.out.(把"t.i="与t.i连接起来, 再把"t.j="与t.j连接起来);//5,6,a和t都指向了一个对象, 而在中s又指向了另一个对象, 所以对象t不变!

t.(t);

输出("t.i ="加上t.i加上" t.j="加上t.j);//1,2。

有关 JAVA 对象引用, 还涉及对象赋值, 参考自csdn官方网站。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询