对象初始化一定有类加载,但是类加载不一定会对象初始化,静态方法不需要创建对象就能调用,这是因为静态方法属于类而不是对象。
在Java中,静态方法是属于类的方法,而不是属于特定的对象实例的方法。当类加载到内存中时,静态方法也会加载到内存中。因此,可以直接通过类名来调用静态方法,而不需要先创建类的实例。
(1)对象的初始化过程(创建对象的过程 例: P p = new P())
类加载:当程序第一次使用到某个类时,Java虚拟机会加载该类的字节码文件,并对类进行解析和验证。
分配内存
初始化默认值
执行构造器
返回对象的引用
通过上述对象初始化过程可以知道 类加载 和 对象初始化 是两个概念
对象初始化一定有类加载,但是类加载不一定会对象初始化
(2)静态方法不需要创建对象就能调用,这是因为静态方法属于类而不是对象。
在Java中,静态方法是属于类的方法,而不是属于特定的对象实例的方法。当类加载到内存中时,静态方法也会加载到内存中。因此,可以直接通过类名来调用静态方法,而不需要先创建类的实例。
静态方法通常用于执行通用的、与特定实例无关的操作,例如数学计算、工具方法等。
(3)类什么时候加载
类加载是由Java虚拟机(JVM)在运行时根据需要进行的操作。类会在下列情况下被加载:
首次创建类的实例:
静态方法/静态变量访问:如果直接引用了类的静态成员(如静态方法或静态变量),JVM会加载并初始化该类。这时只有类的静态成员被加载,而不会创建类的实例。
类被反射调用:
(4)关于普通方法的使用
在Java中,类加载的过程包括加载、连接(验证、准备和解析)和初始化。在此过程中,类的普通方法(非静态方法)并不会被直接加载。
类的普通方法是属于类的实例的方法,只有在创建对象实例时才会在内存中为对象实例分配相应的内存空间,并将方法的代码加载到该实例的方法区中。当对象实例化后,可以通过对象来访问和调用类的普通方法。
————————————————
版权声明:本文为CSDN博主「free_virtue」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/free_virtue/article/details/131773997