java变量的加载顺序

学习编程思想

 1 package com.test.java.classs;
 2
 3 /**
 4  * Created by Administrator on 2015/12/7.
 5  * 在类的内部,变量定义的顺序决定了初始化的顺序。
 6  * 变量会在任何方法(包含构造器)被调用之前得到初始化
 7  */
 8 public class Variable {
 9     public static void main(String[] args) {
10         House house = new House();
11         house.f();
12     }
13
14 }
15
16 class Window{
17     public Window(int n) {
18         System.out.println("window-"+n);
19     }
20 }
21
22 class House{
23     //1
24     Window w1 = new Window(1);
25
26     public House() {
27         //4
28         System.out.println("house()");
29         //5
30         w4 = new Window(44);
31         //6
32         Window w2 = new Window(2);
33     }
34     //2
35     Window w3 = new Window(3);
36     void f(){
37         System.out.println("f()");
38     }
39     //3
40     Window w4 = new Window(4);
41
42 }

结果:

window-1
window-3
window-4
house()
window-44
window-2
f()

时间: 2024-11-15 07:28:03

java变量的加载顺序的相关文章

JAVA类的加载顺序

JAVA类的加载顺序 JAVA中类的初始化规则是:先初始化static成员变量和static块,再初始化non-static成员变量和non-static块,最后初始化构造函数. 例1: package demo; /** * 此类主要介绍java类的加载顺序 * */ public class TestOrder { public static int k = 0; public static TestOrder t1 = new TestOrder("t1"); public st

java 中类的加载顺序(转)

1.虚拟机在首次加载Java类时,会对静态初始化块.静态成员变量.静态方法进行一次初始化 2.只有在调用new方法时才会创建类的实例 3.类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始化块部分,然后是父类的构造方法:再执行本类继承的子类的初始化块,最后是子类的构造方法 4.类实例销毁时候,首先销毁子类部分,再销毁父类部分 public class Parent { public static int t = parentStaticMethod2(); { System.out.

JAVA Web.xml 加载顺序

web.xml加载过程(步骤): 1.启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param> 2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文. 3.容器将<context-param></context-param>转化为键值对,

java中类的加载顺序介绍(ClassLoader)

转自:http://blog.csdn.net/eff666/article/details/52203406 1.ClassNotFoundExcetpion  我们在开发中,经常可以遇见java.lang.ClassNotFoundExcetpion这个异常,今天我就来总结一下这个问题.对于这个异常,它实质涉及到了java技术体系中的类加载.Java的类加载机制是技术体系中比较核心的部分,虽然它和我们直接打交道不多,但是对其背后的机理有一定理解有助于我们排查程序中出现的类加载失败等技术问题.

java 中类的加载顺序

1.虚拟机在首次加载Java类时,会对静态初始化块.静态成员变量.静态方法进行一次初始化 2.只有在调用new方法时才会创建类的实例 3.类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始化块部分,然后是父类的构造方法:再执行本类继承的子类的初始化块,最后是子类的构造方法 4.类实例销毁时候,首先销毁子类部分,再销毁父类部分 public class Parent { public static int t = parentStaticMethod2(); { System.out.

java类的加载顺序和实例化顺序(Demo程序)

一.main函数中实例化对象 父类 package com.learn; public class Father { //静态变量 public static int num_1 = 1; //静态代码块 static { //判断静态变量和静态代码块的执行顺序 System.out.println("Father类的静态变量" + num_1); System.out.println("Father类的静态代码块"); } //普通变量 public int nu

java 类属性的加载顺序(带有继承关系的)

工作有三年之久了,突然感觉带有继承关系.父子俩既有静态变量又有成员变量的情况,变量的加载顺序很容易混淆,今晚写了个例子,总算是把关系搞清楚了 例子中,父类既有普遍的成员变量,也有static变量,也有static代码块,在父类的构造器前后都有static变量及普通变量,让我们看看初始化子类的时候会发生什么吧 先提供完整代码: LoadSequence.java public class LoadSequence { public static void main(String[] args) {

java类的加载与初始化总结

1.触发类加载的原因(主动调用与被动调用): 六种主动调用: 1).创建类的实例(new操作.反射.cloning.反序列化) 2).调用类的静态方法 3).使用或对类/接口的static属性赋值(不包括static final的与在编译期确定的常量表达式(包括常量.字符串常量)) 4).调用API中的反射方法,Class.forName()等. 5).子类被初始化 6).被设定为JVM启动时的启动类(含main方法的主类) 其它都为被动引用:被动引用不会触发类的初始化操作(只会加载.链接),如

Java 类的实例变量初始化的过程 静态块、非静态块、构造函数的加载顺序

Java 类的实例变量初始化的过程 静态块.非静态块.构造函数的加载顺序 先看一道Java面试题: 1 public class Baset { 2 private String baseName = "base"; 3 // 构造方法 4 public Baset() { 5 callName(); 6 } 7 // 成员方法 8 public void callName() { 9 // TODO Auto-generated method stub 10 System.out.p