为了进一步理解类的初始化过程,这里有必要进一步区分一下类的实例化(类实例)和类的对象实例化(对象实例),我们通常所说的实例化都是指对象实例化。
我们可以把类的使用简单分为三个过程:类加载,类实例化,对象实例化。
类的加载:由Java虚拟机根据需求将要用的类加载到内存中,让类的代码处于可用状态;对于解释型虚拟机来说,这个代码就直接可解释执行,而对于采用即时编译(JIT)技术来说,虚拟机一般会在方法第1次调用时将字节码编译成目标机器语言,而且是要多少编译多少。类的加载在一个程序运行期间一般只执行一次。
类实例化:其实实例化主要是为成员变量分配空间,代码本身当然无所谓实例化,都是公共的。类之所以要实例化主要是因为类可以拥有静态变量的缘故,必须为类的这些静态成员分配空间,并执行这些静态成员变量的初始化操作;类的实例化在一个程序运行期间,也只执行一次;另外需要注意的是类的加载可以从本地执行,也可以从远程获取,因为类的代码本质上来说也是一些数据(字符序列)。
对象实例化:类是一些具有共同特征和行为的对象的静态描述(一种数据类型),对象实例化就是将类作为模子为每个对象分配具体的内存空间形成独立的实体;当然,这里的分配空间主要是针对成员变量,成员方法都是些代码,是所有对象共有的,因此并不需要重新分配空间来保存一份代码的复制品。
上面的上个过程,后面的过程执行都需要前面的过程已经执行过。
对于类A来说,如果类A没有被加载,那么A.class的调用会导致类的加载,但不会导致类实例化。而Class.forName("A")的调用,不仅会执行类加载,还会执行类实例化。其实这个方法还有一个重载方法,可以指明是否进行类实例化,而且还可以指定是本地加载还是远程加载(利用ClassLoader)。
分享到:
相关推荐
本知识点的标题为“Java学习笔记(必看经典)”,意味着所整理的内容是针对Java初学者的一系列核心概念和原理的总结。 首先,面向对象编程是Java语言的核心,它与传统的面向过程编程有显著的不同。面向对象编程强调的...
Java 学习笔记 本资源摘要信息涵盖了 Java 编程语言的基础知识,着重于面向对象编程(OOP)的概念和实现。下面是该资源的详细知识点: 1. 面向对象编程(OOP)的基本概念: * 对象: everything is an object...
### Java学习笔记知识点总结 #### 第一章:Java语言入门 - **1.1 Java的诞生** Java由Sun Microsystems公司于1995年推出的一种可移植、面向对象的编程语言。最初的设计目标是为消费电子产品提供一种通用编程语言...
构造器用于初始化新创建的对象,代码块可以是实例初始化块或静态初始化块,内部类可以是成员内部类、局部内部类、匿名内部类等。 【封装、继承和多态】 封装是将数据和操作数据的方法绑定在一起,保护数据不被随意...
### Java学习笔记知识点详解 #### 一、类变量与成员变量的区别 - **类变量**:也称为静态变量,使用`static`关键字声明。在整个类的生命周期中只有一个副本,无论创建多少个对象,该变量的副本都只有一份。例如,...
JAVA学习笔记涵盖了Java编程语言中多个核心概念和特性。通过讲解this关键字、继承、static关键字和代码块、final关键字、多态、方法重写、抽象类与接口、封装与隐藏、垃圾回收、类组合、包装类、对象处理、类成员、...
4. **构造方法**:构造方法用于初始化对象,没有返回值,其名称与类名相同。构造方法在创建对象时自动调用,用于设置初始状态。 #### 结论 Java的面向对象编程提供了强大的工具和概念,帮助开发者构建复杂而灵活的...
### Java学习笔记经典知识点解析 #### 一、面向对象编程基础 **面向对象**是一种重要的编程范式,它改变了传统的面向过程的编程思路,强调通过对象来组织代码,提高代码的复用性和维护性。 **面向对象的核心概念*...
- **成员变量初始化**:所有类级别的成员变量(即非局部变量)在使用前都会被自动初始化为默认值,例如数值类型为0,布尔类型为`false`,对象引用为`null`。 - **局部变量初始化**:与成员变量不同,局部变量不会被...
【良葛格Java学习笔记】 本笔记主要涵盖了Java编程语言的核心概念和技术,旨在帮助初学者以及有一定基础的开发者深入理解并掌握Java。Java作为一种广泛应用于企业级应用开发、移动开发(尤其是Android)以及大数据...
Java是一种广泛使用的面向...总的来说,Java学习笔记应该涵盖从基础知识到高级特性的全面内容,适合初学者和有一定基础的开发者作为参考。通过不断实践和学习,可以逐步掌握Java编程的精髓,成为一名熟练的Java开发者。
【标题】"java读书笔记笔记笔记笔记笔记笔记" 暗示了这是一份关于Java编程语言的学习笔记,可能包含了作者在阅读Java相关书籍时所做的重要记录和理解。笔记通常涵盖了语言的基础概念、核心特性、类与对象、内存管理...
5.3. 初始化数组 5-10 5.4. 多维数组 5-10 5.5. 数组拷贝 5-10 6. 五•对象和类 6-11 6.1. 面向对象与面向过程 6-11 6.2. 对象的概念 6-12 6.3. 成员变量和局部变量 6-12 6.4. 成员方法 6-12 6.5. This关键字 6-13 ...
《Java学习笔记源代码(第6版)-林信良》是针对初学者精心编写的Java编程学习资源,包含了丰富的示例代码,旨在帮助新手快速掌握Java编程基础。本资源的核心在于通过实践来驱动理论学习,使学习者能够在实际操作中...