与值类型不同,引用类型不会直接存储其值。相反,它将存储存储值的地址 。这意味着引用类型包含指向另一个保存数据的存储位置的指针。引用类型为String,数组,类和委托。
片段1
jshell> class Animal { ...> } | created class Animal jshell> Animal dog = new Animal(); dog ==> Animal@73846619
我n个下面的代码片段,两个新的动物对象是在堆上创建的。它们的存储位置(引用)存储在引用变量dog 和cat中。在Java中,所有类都是引用类型。除原始变量实例外,所有实例或对象都存储在堆中。对对象的引用存储在诸如dog 和cat的引用变量中。
jshell> class Animal { ...> int id; ...> public Animal(int id) { ...> this.id = id; ...> } ...> } | created class Animal jshell> Animal dog = new Animal(10); dog ==> Animal@6adede5 jshell> Animal cat = new Animal(20); cat ==> Animal@5025a98f
我n中的下面的代码段,“ J = ”复制的“I”到“J”值。之后,当“ j”的值改变时,“ I”不受影响。通过使用原始变量,比较它们的值。
jshell> int i = 5; i ==> 5 jshell> int j; j ==> 0 jshell> j = i; j ==> 5 jshell> j = 10; j ==> 10 jshell> i; i ==> 5 jshell> i == j; $11 ==> false jshell> j = 5; j ==> 5 jshell> i == j; $13 ==> true