在大多数编程语言中,特别是像Java、C#这样的面向对象编程语言中,创建对象通常使用new
关键字。这个关键字用于实例化一个类的实例,即创建一个对象。例如,在Java中,如果你有一个名为Person
的类,你可以这样创建一个Person
对象:
Person person = new Person();
这里,new Person()
部分调用了Person
类的构造函数来创建Person
类的一个新实例,而Person person
声明了一个Person
类型的变量(即对象引用)来引用这个新创建的对象。
对象实体与对象引用的不同
-
对象实体(Object Instance):对象实体是实际存储数据的区域,它根据类的定义来分配内存,并包含类的所有字段(属性)的实际值。对象实体是存储在堆内存中的。
-
对象引用(Object Reference):对象引用是一个变量,它存储了对象实体在内存中的地址(或引用)。通过这个引用,程序可以访问和操作对象实体的数据和方法。在Java中,所有非基本数据类型(比如类、接口等)的变量都是对象引用。对象引用通常存储在栈内存中,而它们所指向的对象实体则存储在堆内存中。
简单来说,对象引用是访问对象实体的“门把手”或“指针”。你可以有多个对象引用指向同一个对象实体,但每个对象实体在内存中只有一个实例。
示例
Person person1 = new Person(); // 创建一个Person对象,person1是对这个对象的引用
Person person2 = person1; // person2现在也是指向同一个Person对象的引用
person1.setName("Alice"); // 通过person1引用修改对象的数据
System.out.println(person2.getName()); // 通过person2引用访问修改后的数据,输出"Alice"
在这个例子中,person1
和person2
都是指向同一个Person
对象实体的引用。通过任何一个引用修改对象的状态,都会影响到通过另一个引用看到的对象状态。