繁体   English   中英

JVM如何处理参考变量?

[英]How JVM treats reference variables?

只想知道此语句是否正确:

对于这些代码行:

Person Bob = new Person("Bob W.", 30);
System.out.println(Bob.name);

创建了一个对象人,并将其内存地址或一种引用发送给引用变量Bob。 接下来,当我们调用“ Bob.name”时,JVM将查看Bob持有的“地址”,然后去查看Person对象。 然后JVM查看Bob的名字并打印出来!

谢谢!

Java中的所有对象都是通过其引用来访问的(不同于原始访问!)。 变量bob是对Person类实例的引用。 实例的内存分配/处理将由JVM处理,并且只要存在对该实例的强引用(即Person bob = new ...声明对Person bob = new ...实例的强引用),JVM就会使实例数据保持活动状态。创建的Person实例)。

创建一个Object Person,并将其内存地址或某种引用发送给Bob(引用变量)

说“创建了Person对象的实例”会更正确,但是是的,Java中用于对象的所有变量都是引用变量。 调用new将返回对创建实例的引用。 可以有许多参考变量指向单个实例。 例如,在下面的代码片段中,我们可以有两个引用指向一个实例:

Person bob = new Person("Bob W.", 30);
Person bob2 = bob;

接下来,当我们调用“ Bob.name”时,JVM将查看Bob持有的“地址”,然后去查看Person对象。

究竟。 编译代码后,JVM字节码将使用指令getfield访问name字段。 该指令需要对象引用和字段引用。 在这种情况下, bob.name将使用bob作为objectref并使用Person#name作为fieldref

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM