- 浏览: 9832 次
最新评论
public class ExA { static { System.out.println("父类--静态代码块"); } public ExA() { System.out.println("父类--构造函数"); } { System.out.println("父类--非静态代码块"); } public static void main(String[] args) { new ExB(); } } class ExB extends ExA { static { System.out.println("子类--静态代码块"); } { System.out.println("子类--非静态代码块"); } public ExB() { System.out.println("子类--构造函数"); } } 执行结果 ===== 父类--静态代码块 子类--静态代码块 父类--非静态代码块 父类--构造函数 子类--非静态代码块 子类--构造函数 可是静态代码块真的会一定在非静态代码块之前执行吗? 下面这段代码 public class ExA { private static ExA a = new ExA(); static { System.out.println("父类--静态代码块"); } public ExA() { System.out.println("父类--构造函数"); } { System.out.println("父类--非静态代码块"); } public static void main(String[] args) { new ExB(); } } class ExB extends ExA { private static ExB b = new ExB(); static { System.out.println("子类--静态代码块"); } { System.out.println("子类--非静态代码块"); } public ExB() { System.out.println("子类--构造函数"); } } 执行结果 ===== 父类--非静态代码块 父类--构造函数 父类--静态代码块 父类--非静态代码块 父类--构造函数 子类--非静态代码块 子类--构造函数 子类--静态代码块 父类--非静态代码块 父类--构造函数 子类--非静态代码块 子类--构造函数 ===== 可以发现非静态代码块并不是一定在静态代码块之后执行的。 我认为此时private static ExA a = new ExA()是静态变量。而java里面静态变量与静态代码块是按代码先后顺序执行。所以就导致非静态代码块在静态代码块之前执行。
发表评论
-
java SpringMVC
2014-01-21 17:02 0package com.cweb.system.commo ... -
JDBC 建立连接公共操作类(静态方式与单例方式)
2013-08-30 00:31 0package com.ighost.jdbc; im ... -
jdbc连接数据库(单例模式)
2013-08-30 00:30 0... -
【JDBC单例】和【C3P0连接池基本用法】的对比
2013-08-30 00:25 0最近需要从一张表中查询大量数据,做了如下实验: 平台: ... -
cglib与xstream结合构造webservice的xml格式的入参返参的动态生成
2013-08-30 00:20 0cglib与xstream结合构造webservice的xm ... -
JNI原理
2013-08-30 00:15 0NI是JAVA标准平台中的一个重要功能,它弥补了JAVA的与 ... -
java 与 FTP
2013-08-30 00:14 0import java.io.ByteArrayInputS ... -
JNI原理
2013-08-30 00:11 0NI是JAVA标准平台中的一个重要功能,它弥补了JAVA的 ... -
JNI例子
2013-08-30 00:07 791JAVA可以通过JNI接口访问本地的动态连接库,从而扩展JAV ... -
java 静态块 代码块 静态变量 实例变量 构造
2013-08-30 00:06 1065package job; public clas ... -
java 连接 DB 总汇合
2013-08-30 00:02 7061、Oracle8/8i/9i数据库(thin模式) C ... -
JAVA 中的四种解析XML方式
2013-08-30 00:01 806解析XML XML现在已经成为一种通用的数据交换格式,平台的 ... -
JAVA 解析 XML 的 四种技术
2013-08-24 02:52 6941 解析XML XML现在已经成为一种通用的数据交换格 ... -
单例模式 和 线程安全
2013-08-20 21:51 834// 1.单例分两种: // ... -
java解析XML dom方式
2013-08-20 21:46 855/** * @param args ... -
servlet产生验证码
2013-08-20 21:42 626package com.mweb.user.servlet; ...
相关推荐
静态代码块与实例代码块(非静态代码块)的主要区别在于它们的执行时机以及作用范围。 - **执行时机**:静态代码块在类加载时执行,而实例代码块则是在创建对象时执行。 - **作用范围**:静态代码块作用于整个类的...
在多级继承关系中,静态代码块按照类的加载顺序执行,先加载的类先执行其静态代码块。 例如,在给定的代码中: ```java public class A { static { System.out.print(1); } public A() { System.out.print(2)...
### Java 类中静态域、块,非静态域、块,构造函数的初始化顺序 #### 一、概述 在 Java 编程语言中,类的初始化顺序对于理解程序的行为至关重要。特别是当涉及到静态域(静态变量)、非静态域(实例变量)、静态块...
java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...
例如,在给定的示例中,静态代码块在程序启动时首先执行,然后是`main`方法,接着是构造代码块(每次创建对象时),最后是构造函数。如果类中还有其他类,如类`A`,那么`A`的静态代码块会在`structure`类的`main`...
下面我们将详细探讨Java中代码块的执行顺序,包括静态属性、非静态属性、静态代码块、非静态代码块以及构造函数。 首先,让我们回顾一下结论: 1. 当创建一个类的实例时,首先会执行类中的静态属性和静态代码块,...
而类初始化则是指在类首次被使用时,JVM执行的一系列初始化操作,包括静态变量赋值、静态代码块执行等。 根据题目提供的内容,我们可以总结出Java类构造执行的详细步骤,这些步骤确保了类的正确初始化以及对象的...
2. 对象创建时,先执行类中的非静态代码块,再调用构造函数。 通过上述分析,我们可以清楚地看到`static`关键字在Java中是如何被运用的,及其在变量、方法和代码块管理上的独特优势。理解这些概念,对于编写高效、...
它的执行顺序早于类的非静态初始化块和构造函数。当类第一次被加载时,静态块按照它们在代码中的顺序依次执行。 下面是一个简单的静态块示例,展示了如何使用静态块初始化静态变量: ```java public class ...
- 构造函数的执行顺序大致为:先分配静态成员的内存空间,然后执行静态成员初始化,接着执行静态构造函数;之后分配对象实例的内存空间,执行实例成员初始化,最后执行实例构造函数。 #### 三、静态成员与实例成员...
例如,如果在子类的静态代码块中依赖了父类的非静态字段,可能会导致错误,因为此时父类的实例还未被创建。此外,如果在构造代码块或构造函数中对字段进行了初始化,而字段已经在声明时被初始化,那么这两个初始化...
// 非静态代码块 // ... } public Test3() { // 构造函数 // ... } } ``` 了解这四种代码块的使用方式和执行时机对于Java程序员来说是基础且重要的,它们可以帮助优化代码结构,提高代码效率,并确保在多...
- 详细的先后顺序:父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造函数、子类非静态变量、子类非静态代码块、子类构造函数 7. Java 代码块执行顺序: ...
总之,Java代码的初始化顺序是类加载的必然过程,涉及到静态和实例初始化块、构造函数、成员变量初始化以及继承关系的影响。这个demo是学习和理解这些概念的重要工具,通过实际操作可以加深对Java内存管理和对象生命...
- **类加载**:首先执行静态变量和静态代码块的初始化。 - **实例化**:接着执行成员变量的初始化,然后是构造代码块和构造方法。 类的执行顺序总结如下: 1. 静态变量的初始化 2. 静态代码块的执行 3. 成员变量...
3. **基类非静态成员初始化**:当创建一个子类对象时,会首先调用基类的构造函数来初始化基类的非静态成员变量。 4. **子类非静态成员初始化**:接着是子类的非静态成员变量初始化。 5. **基类构造函数调用**:通过`...
当一个类的实例被创建时,非静态自由块的代码会被插入到构造函数之前执行。这意味着,每次创建一个类的新对象,对应的非静态自由块就会被执行一次。例如,在类`Father`的非静态自由块中,`System.out.println(...
2. **构造代码块和静态代码块**:第二题展示了构造代码块和静态代码块的执行顺序。静态代码块只在类加载时执行一次,而构造代码块则在每次创建对象时执行。在`StudentDemo`类中,静态代码块在外包的初始化阶段执行,...
1. **静态代码块与静态成员**:静态代码块只在类加载时执行一次,并且优先于任何对象的创建执行。静态成员也具有类似的特点,即与类而非对象关联。 2. **继承关系中的构造函数执行顺序**:在创建子类对象时,会先...
在 Java 中,静态变量的初始化过程可以被分为三个阶段:静态初始化、非静态初始化和执行构造函数。静态初始化是指在类加载时对静态变量的初始化。非静态初始化是指在实例创建时对实例变量的初始化。执行构造函数是指...