只想知道这个语句是否正确:
对于这些代码行:
Person Bob = new Person("Bob W.", 30);
System.out.println(Bob.name);
创建一个Object Person,并将其内存地址或某种引用发送给引用变量Bob。接下来,当我们调用"Bob.name"时,JVM会查看Bob持有的"地址",然后转到那里查看Person对象。然后JVM查看Bob的名字并打印出来!
谢谢!
Java中的所有对象都是通过它们的引用访问的(不同于基元访问!(。变量bob
是对Person
类的实例的引用。实例的内存分配/处置将由JVM处理,只要存在对该实例的强引用(即Person bob = new ...
声明对新创建的Person
实例的强参考(,实例数据就会由JVM保持活动状态。
创建一个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
。