Java中的引用分为符号引用和值引用两种类型。
符号引用指的是一种字符串形式的引用,用于表示类、方法、字段等元素。在字节码中,符号引用被用来描述被引用元素的名称、类型、所属类等信息。在程序运行时,虚拟机需要将符号引用转换为实际的内存地址。
//符号引用 class Test{ void print(){ System.out.println("Hello World!"); } }
值引用是指直接引用对象的值,用于表示对象在内存中的地址或实际内容。在程序运行时,引用被用来访问对象和调用方法。
//值引用 public class Test{ public static void main(String[] args){ String str = new String("Hello World!"); System.out.print(str); } }
Java中的变量分为基本类型和引用类型,基本类型的变量保存值本身,而引用类型的变量保存的是对象的地址。在引用类型中,传递变量时传递的是对象的引用,而不是对象本身。因此,对于引用类型的变量,其赋值和传递也可分为符号引用和值引用两种形式。
//符号引用 class Test{ String str; Test(String s){ str = s; } } public class Main{ public static void main(String[] args){ Test t1 = new Test("Hello"); Test t2 = t1; System.out.print(t1.str + " " + t2.str); t2.str = "World"; System.out.print(t1.str + " " + t2.str); } } //值引用 class Test{ String str; Test(String s){ str = s; } } public class Main{ public static void main(String[] args){ Test t1 = new Test("Hello"); Test t2 = new Test(t1.str); System.out.print(t1.str + " " + t2.str); t2.str = "World"; System.out.print(t1.str + " " + t2.str); } }
总的来说,Java中的引用除了表示对象的地址或实际内容外,还包括符号引用和值引用两种类型。在变量的赋值和传递时,要注意选择符号引用和值引用两种不同的方式。