一些基础知识由于长时间没有接触,感觉淡忘了。建个可以保存在网上的知识收集文章,可以将不同时间零散回顾的一些同类知识类收集到一起。关于类静态变量和静态代码块的知识点收集:
- 继承情况下,首先是从顶层父类的静态变量和代码块开始执行,依次向下。同一个类中,执行的顺序是依照静态变量和静态代码在类中的编码顺序执行,变量和代码块无任何优先级之分。全部继承树中的类静态变量和代码块都初始化完毕后,开始从顶层父类执行非静态的类变量和类代码块初始化,执行顺序同静态,然后紧接着是执行构造函数,完毕后才向下,执行子类的类变量、代码块和构造函数。
- 非静态内部类中不能定义类静态代码块和非final的类静态变量;静态内部类,可以声明非final的静态变量和静态代码块。
- 因为类加载存在2种方式:预加载(pre-loading)和按需加载(load-on-demand),所以类中的静态变量和代码块何时执行也受这2种方式的直接影响,不加载时不可能会被执行。
- 隐式(implicit)和显式类加载(explicit):显式加载中的forName(String name, boolean initialize,ClassLoader loader)方法,当initialize=true时,会在执行类加载后立刻运行静态代码和变量。当initialize=false时,类加载后不会立即初始化静态代码和变量,直到第一次new
或者通过反射取值
的时候才会初始化静态代码块和变量。使用loadclass方法加载类时,同initialize=false时的forname。
- 未完。。。待续。。。
分享到:
相关推荐
静态变量在类加载时就已经初始化完毕,而Spring Bean的初始化通常发生在应用程序启动过程中,两者的时间点不同步。因此,直接在静态变量上使用`@Value`会导致注入失败,并且在编译或运行时出现警告或错误信息。 ###...
变量类型和内存管理 变量类型是编程语言中非常重要的一个概念,...我们可以看到,全局变量、静态变量、局部变量和堆区中分配的变量都是程序中常用的变量类型,它们之间的区别和联系都是程序员需要了解的重要知识点。
在iOS开发中,Block、局部变量、全局变量和静态变量(`static`)是编程中常见的概念,它们各自有自己的特点和用途,同时在特定情况下,它们之间也存在一定的联系。让我们详细探讨一下这些知识点。 首先,Block是...
本文将详细介绍 Java 代码块与静态代码块加载顺序的相关知识点,并提供实例代码来帮助读者更好地理解。 一、Java 代码块 Java 代码块是指在类中使用大括号 `{}` 包围的代码块,这些代码块可以出现在类的任何位置,...
- 非静态变量通常用于临时存储在函数或子程序内部使用的数据,它们的作用范围仅限于定义它们的代码块。 - 静态变量则常用于需要在函数或子程序多次调用之间保持数据的情况,比如计数、累计值或状态记录。 总结来...
下面我们将深入探讨静态方法、静态变量以及静态类等相关的知识点。 1. 静态方法 静态方法是与类关联,而不是与类的实例关联的方法。这意味着我们不需要创建类的实例就可以调用静态方法。它们在内存中只有一份,且在...
ANSWER: 静态变量和静态初始化块的初始化顺序是最高的,因此 Father 类中的静态变量和静态初始化块将首先被初始化,接着是 Son 类中的静态变量和静态初始化块。然后是变量和初始化块,最后是构造器。 以下是一个...
静态代码块常用来初始化静态变量,确保在类的任何实例创建之前,这些变量已经被正确设置。例如: ```java class MyClass { static int counter = 0; static { counter++; System.out.println("Static block ...
以下是对标题、描述和标签中涉及知识点的详细解释: 1. **静态变量**: 静态变量,也被称为类变量,是使用`static`关键字声明的。它们不属于类的实例,而是属于类本身。这意味着所有类的实例共享同一个静态变量的...
以上内容涵盖了Java编程中的关键知识点,特别是内部类的分类及其特点,以及`StringBuffer`的`reverse()`方法的用法。理解并熟练运用这些概念对于编写高效、清晰的Java代码至关重要。在实际开发中,内部类常用于实现...
### Java语言基础入门教程知识点详解 #### 第9章 深度了解变量和方法 **一、变量的分类** 变量是编程中存储数据的基本单元。根据变量所处的位置和作用域的不同,Java中的变量可以分为两大类:成员变量和局部变量...
这个顺序很重要,因为一旦涉及到静态成员变量的赋值或者静态代码块的执行顺序,就可能影响程序的行为和结果。理解这一点对于编程时预测程序的行为,避免一些潜在的错误是很有帮助的。 例如,假设有一个子类继承了...
对于静态变量和静态初始化块,以及非静态变量和非静态初始化块的顺序,它们并不总是严格按照定义的顺序执行。如果静态变量的初始化依赖于静态初始化块中的代码,或者非静态变量的初始化依赖于非静态初始化块,那么...
ChildrenClass继承自ParentClass,并且也有静态变量、非静态变量、静态代码块、非静态代码块和构造方法。 在执行new ChildrenClass()时,代码块执行顺序如下: 1. 父类静态成员变量 2. 父类静态代码块 3. 子类静态...
首先,我们来详细了解这些知识点。 **作用域(Scope)**: 作用域指的是变量或函数在程序中可见的范围。C语言中有三种主要的作用域: 1. **全局作用域(Global Scope)**:全局变量是在函数外部定义的,可以被程序...
静态代码块通常用于初始化类级别的静态变量。值得注意的是,静态代码块不能存在于任何方法体内,也不能直接访问非静态实例变量和方法,需要通过类的实例对象来访问。在类中有多个静态代码块时,它们会按照定义的顺序...
方法定义是类中实现特定功能的代码块,包括类的方法和构造方法等。 2. 执行 `Person p = new Person();` 语句时,系统会在堆内存中为 `Person` 对象分配空间,存储实例变量,同时在栈内存中为引用变量 `p` 分配空间...
这段代码展示了两个类:`Parent` 和 `SubClass`,它们分别有自己的静态变量、实例变量、静态初始化块、初始化块和构造器。当我们创建 `SubClass` 的对象时,我们看到的输出顺序如下: 1. **父类的静态变量和静态...
### JAVA学习知识点详解 #### 一、类的定义与使用 在Java中,类是面向对象编程的基础单元,用于封装数据和操作这些数据的方法。通过类可以定义对象的行为和属性。 **1. This代词** `this`关键字是Java中的一个...
在Java编程语言中,ClassLoader是核心组件之一,它负责加载类到JVM(Java虚拟机)中。...通过学习这些知识点,开发者可以更好地优化代码、设计更健壮的系统,并解决与类加载和初始化相关的复杂问题。