Java变量方法初始化顺序

面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,

构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的
结果。这实际上是在考查我们对于继承情况下类的初始化顺序的了解。 
我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序以此是 
(静态变量、静态初始化块)>(变量、初始化块)>构造器。 
我们也可以通过下面的测试代码来验证这一点:

父类--静态变量 父类--静态初始化块 子类--静态变量 子类--静态初始化块 父类--变量 父类--初始化块 父类--构造器 子类--变量
*
子类--初始化块 子类--构造器

Java变量方法初始化顺序,布布扣,bubuko.com

时间: 2024-10-02 07:01:57

Java变量方法初始化顺序的相关文章

java类的初始化顺序

java类的初始化顺序 (2008-10-21 13:30:15) 转载▼ 标签: java 初始化 继承初始化 it 分类: Java 对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序依次是(静态变量.静态初始化块)>(变量.初始化块)>构造器.我们也可以通过下面的测试代码来验证这一点: public class InitialOrderTest { // 静态变量 public static String staticField = "静态变量";

【java】程序初始化顺序

实例化对象时,对象所在类的所有成员变量要先进行初始化,所有类成员完成初始化后,才会调用对象所在类的构造函数创建对象. 初始化顺序的三个原则: (1)静态优先于非静态 无论是对象还是变量,静态的初始化顺序都要优先于非静态,而且静态对象或者变量只初始化一次,而非静态对象或变量可能初始化多次 (2)父类优先于子类 (3)无论变量定义怎样散布于方法中,成员变量的初始化顺序与变量定义的顺序相同,并且在任何方法(包括构造函数)被调用之前先初始化 执行顺序: 父类静态变量 --> 父类静态代码块 --> 子

Java中的初始化顺序(静态成员、静态初始化块,普通成员、普通初始化块、构造函数)

本文链接    http://blog.csdn.net/xiaodongrush/article/details/29170099 参考文章     http://my.oschina.net/leoson/blog/103251 1. 一个类中的初始化顺序 (静态变量.静态初始化块)=>(变量.初始化块.构造器). 2. 两个具有继承关系类的初始化顺序 父类的(静态变量.静态初始化块)=> 子类的(静态变量.静态初始化块)=> 父类的(变量.初始化块.构造器)=> 子类的(变量

java类内容初始化顺序

在java类中一般有:成员变量.静态变量.成员方法.静态方法.构造方法.那么这几个的初始化顺序是什么呢? 初始化的先后顺序是:静态变量(类load进内存就初始化)------静态代码块(类load进内存就初始化)--------成员变量(对象初始化时)------------初始化块------------构造函数 测试程序如下: package com.evan; /* * 初始化顺序测试 */ public class InitialOrderTest { public static Str

C++成员变量的初始化顺序问题

转载自:http://www.cnblogs.com/lidabo/p/3790606.html ,感谢作者! 问题来源: 由于面试题中,考官出了一道简单的程序输出结果值的题:如下, class A { private: int n1; int n2; public: A():n2(0),n1(n2+2){} void Print(){ cout << "n1:" << n1 << ", n2: " << n2 <

[百度空间] [原]再谈静态变量的初始化顺序

有一段时间我被静态变量的初始化顺序搞的焦头烂额,因为我用了singleton的懒惰初始化(lazy initialization)方式,即不需要显式创建singleton,在getsignleton的时候自动创建,并且在最后销毁对象..比如singleton使用了内存分配对象,如果这个对象先于singleton析构(后于singleton构造),那么singleton析构的时候内存分配器已经不存在了.最后发现我忽略了effctive C++的条款47,看来很多细节还是不是很深入的领悟. 关于其中

Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)(转)

大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的结果.这实际上是在考查我们对于继承情况下类的初始化顺序的了解. 我们大家都知道,对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序以此是(静态变量.静态初始化块)>(变量.初始化块)>构造器.我们也可以通过下面的测试代码来验证这一点: Java代码 p

Java中类的初始化顺序

对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序依次是(静态变量.静态初始化块)>(变量.初始化块)>构造器.我们也可以通过下面的测试代码来验证这一点: public class InitialOrderTest {// 静态变量public static String staticField = "静态变量";// 变量public String field = "变量";// 静态初始化块static {System.out.pr

[java] java中的初始化顺序

先看程序: 1 package init_cls; 2 3 class A{ 4 5 {System.out.println("i am in the class A!");} 6 static { System.out.println("static is the class A");} 7 } 8 public class init_cls { 9 {System.out.println("i am in the init_cls");} 1