与值类型不同,引用类型不直接存储其值。相反,它将存储值存储的地址。这意味着引用类型包含一个指向另一个内存位置的指针,该位置保存数据。引用类型包括string、数组、类和委托。
在下面的代码片段中,当我们创建一个animal的新实例时,它可以被创建在堆内存上。 new animal()在堆上创建一个对象。 animal@73846619,该对象存储在地址73846619的堆上。
代码片段-1jshell> class animal { ...> }| created class animaljshell> animal dog = new animal();dog ==> animal@73846619
在下面的代码片段中,两个新的animal对象在堆上创建。它们的内存位置(引用)存储在引用变量dog和cat中。在java中,所有的类都是引用类型。除了原始变量实例外,所有实例或对象都存储在堆上。对象的引用存储在像dog和cat这样的引用变量中。
代码片段-2jshell> class animal { ...> int id; ...> public animal(int id) { ...> this.id = id; ...> } ...> }| created class animaljshell> animal dog = new animal(10);dog ==> animal@6adede5jshell> animal cat = new animal(20);cat ==> animal@5025a98f
i在下面的代码片段中,“j = i 将“i”的值复制到“j”中。之后,当“j”的值改变时,“i”不受影响。通过使用原始变量,比较它们的值。
snippet-3jshell> int i = 5;i ==> 5jshell> int j;j ==> 0jshell> j = i;j ==> 5jshell> j = 10;j ==> 10jshell> i;i ==> 5jshell> i == j;$11 ==> falsejshell> j = 5;j ==> 5jshell> i == j;$13 ==> true
以上就是在java 9中如何在jshell中声明引用类型?的详细内容。
