new一个对象内部发生了什么
时间: 2023-09-06 07:04:46 浏览: 77
### 回答1:
"new" 一般指的是创建一个新的对象或实例。当你使用 "new" 关键字创建一个对象时,系统会为该对象分配内存并调用其构造函数来初始化该对象。具体来说,创建新对象的过程包括以下几个步骤:
1. 分配内存空间,即为对象分配足够的内存空间。
2. 初始化对象,即调用对象的构造函数来初始化其成员变量。
3. 返回对象的引用,即返回指向该对象的指针或引用。
因此,当你使用 "new" 关键字创建一个对象时,会在内存中分配新的空间,并在该空间中创建新的对象实例。这个对象的属性和方法会根据其构造函数进行初始化,并返回指向该对象的指针或引用,以便后续使用。
### 回答2:
在进行New操作时,会发生以下一系列的步骤:
1. 首先,会为该对象分配内存空间,以存储对象的所有属性和方法。这个内存区域被称为堆内存。
2. 接下来,会调用该对象的构造函数。构造函数是一个特殊的方法,用于初始化对象的属性和执行一些必要的操作。通过构造函数,可以设置对象的初始状态。
3. 在构造函数执行期间,会为对象的属性分配内存空间并初始化属性的值。这些属性可以是对象的实例变量,用于存储对象的状态和数据。
4. 如果构造函数中含有其他操作或逻辑,也会在这个阶段执行。
5. 构造函数执行完成后,会返回一个指向新创建对象的引用。这个引用可以用于在程序中使用和访问该对象。
总结来说,New操作会在内存中分配空间、调用构造函数来初始化对象的属性,并返回一个指向新创建对象的引用。这样,我们就可以通过这个引用来操作和访问该对象。对象的创建和初始化过程是将一个类实例化的重要步骤,使得我们可以灵活地使用对象的属性和方法来完成特定的任务。
### 回答3:
当使用"new"关键字创建一个对象时,内部发生了以下一系列的操作:
1. 内存分配:通过调用操作系统的内存分配函数,为对象在堆内存中分配一块足够的内存空间,以存储对象的实例变量。
2. 初始化对象头:分配的内存空间中的前部分被用来存储对象的头信息。这些信息包括对象的锁信息,标志位和其他与对象状态相关的元数据,这些数据是用于Java虚拟机管理和操作对象的重要信息。
3. 设置默认值:为实例变量设置默认初始值,例如数值类型默认为0,布尔类型默认为false,引用类型默认为null。
4. 执行构造函数:调用对象的构造函数来完成对象的初始化过程。在构造函数中,我们可以设置对象的初始状态,分配并初始化实例变量,执行其他任何必要的操作。
5. 返回对象引用:在构造函数执行完毕后,将对象的引用返回给调用者,使得我们可以通过该引用来访问和操作这个新创建的对象。
总结来说,执行"new"关键字时,程序会在堆内存中为对象分配内存空间,并初始化对象的头信息和实例变量的默认值,随后调用构造函数来完成对象的初始化,最后返回对象的引用供程序使用。