new 关键字
用途:
new 关键字可以给值类型和引用类型的变量做初始化。
值类型使用new 则在栈上初始化
如:int i= new int();
struct s = new struct();
引用类型使用new则在堆上初始化
如:class c = new class();
new一个对象流程:
- 在堆开辟空间,栈上进行内存空间指向。
- 在内存空间中创建对象。
- 为对象做初始化,为字段、属性等赋初值。
new一个对象和直接声明对象并赋值null的不同:
new一个对象:
会在栈和堆中开辟空间,并给对象的字段赋初值,字段有了内存分配,值类型为0,引用类型为null,null表示内存空间中什么数据都没有,只有一块内存空间。
直接声明对象并赋值null:
在堆中开辟了空间,但什么数据都没有。
实例化与初始化的区别:
实例化:指创建一个对象,为其在堆中分配内存空间。
初始化:为对象中的字段,属性等成员赋初值。