new一个Java对象时,初始化和实例化有什么区别?

时间:2022-07-08 09:22:21
new一个Java对象时,初始化和实例化有什么区别?各自做什么?

5 个解决方案

#1


实例化就是new,通过构造器开辟内存空间,生成一个对象实例。
初始化就是给已有的实例或者变量进行赋予初始值,不只针对于对象。

#2


实例化是初始化的其中一部分,初始化还包括类本身的加载,比如静态代码的执行和静态成员变量的初始化。
因为实例化就是new一个新的对象到堆内存空间,但静态化的代码就是类本身拥有的内存空间,被所有new的实例对象共享。

#3


还有,不管你new多少个对象,类的静态代码部分只执行一次,就是在初始化时。

#4


引用 2 楼 NewMoons 的回复:
实例化是初始化的其中一部分,初始化还包括类本身的加载,比如静态代码的执行和静态成员变量的初始化。
因为实例化就是new一个新的对象到堆内存空间,但静态化的代码就是类本身拥有的内存空间,被所有new的实例对象共享。




初始化还包括类本身的加载?????不是先类加载成功,才能创建对象吗?

#5


引用 4 楼 ljheee 的回复:
Quote: 引用 2 楼 NewMoons 的回复:

实例化是初始化的其中一部分,初始化还包括类本身的加载,比如静态代码的执行和静态成员变量的初始化。
因为实例化就是new一个新的对象到堆内存空间,但静态化的代码就是类本身拥有的内存空间,被所有new的实例对象共享。




初始化还包括类本身的加载?????不是先类加载成功,才能创建对象吗?


是说初始化有那几种,这个并没有冲突,就是说类的加载也是初始化的一种,初始化分很多种,比如说对象的初始化和类的初始化都属于初始化,静态代码块和静态成员变量都是在类加载的时候进行初始化赋值的。
最后的确是先加载类,才能创建对象,这个没有冲突。

#1


实例化就是new,通过构造器开辟内存空间,生成一个对象实例。
初始化就是给已有的实例或者变量进行赋予初始值,不只针对于对象。

#2


实例化是初始化的其中一部分,初始化还包括类本身的加载,比如静态代码的执行和静态成员变量的初始化。
因为实例化就是new一个新的对象到堆内存空间,但静态化的代码就是类本身拥有的内存空间,被所有new的实例对象共享。

#3


还有,不管你new多少个对象,类的静态代码部分只执行一次,就是在初始化时。

#4


引用 2 楼 NewMoons 的回复:
实例化是初始化的其中一部分,初始化还包括类本身的加载,比如静态代码的执行和静态成员变量的初始化。
因为实例化就是new一个新的对象到堆内存空间,但静态化的代码就是类本身拥有的内存空间,被所有new的实例对象共享。




初始化还包括类本身的加载?????不是先类加载成功,才能创建对象吗?

#5


引用 4 楼 ljheee 的回复:
Quote: 引用 2 楼 NewMoons 的回复:

实例化是初始化的其中一部分,初始化还包括类本身的加载,比如静态代码的执行和静态成员变量的初始化。
因为实例化就是new一个新的对象到堆内存空间,但静态化的代码就是类本身拥有的内存空间,被所有new的实例对象共享。




初始化还包括类本身的加载?????不是先类加载成功,才能创建对象吗?


是说初始化有那几种,这个并没有冲突,就是说类的加载也是初始化的一种,初始化分很多种,比如说对象的初始化和类的初始化都属于初始化,静态代码块和静态成员变量都是在类加载的时候进行初始化赋值的。
最后的确是先加载类,才能创建对象,这个没有冲突。