易截截图软件、单文件、免安装、纯绿色、仅160KB

Java类的初始化顺序

Java类的初始化顺序
  我把Java类的初始化顺序分为两部分。第一部分是类的初始化,第二部分是对象的初始化。
  在初始化之前JVM必须先把该类的字节码加载到内存中来。这时不管创不创建对象都会马上执行类的初始化:
  执行静态初始化表达式(如static int a = 10)和静态初始化块(即static{}中的内容),注意两者按在源代码中的先后顺序执行。
  当创建一个对象,就会执行对象的初始化:
  首先调用父类的构造函数。
  第二步执行初始化表达式(如int a = 10)和初始化块({}中的内容),同样按在源代码中的先后顺序执行。
  最后执行自身的构造函数。
  对于静态初始化表达式与初始化表达式,如果只是声明,没有初始化,则赋默认值。如int i;则i会被赋值为0。
  总结:
  1、 类初始化
  (1) 静态初始化表达式,静态初始化块
  2、对象初始化
  (1)父类的构造函数
  (2)初始化表达式,初始化块
  (3)自身的构造函数
  注意:初始化表达式可能不是准确的术语,但明白是指什么就行了。
  测试代码:
  代码
  package principle;
  public class InitializeTest {
  public static void main(String[] args) throws ClassNotFoundException{
  System.out.println("-----类初始化-----");
  Class.forName("principle.MyClass");
  System.out.println("\n" + "-----对象初始化-----");
  MyClass myClass = new MyClass();
  }
  }
  class MyClass extends Father{
  MyClass() {
  System.out.println("3.自身的构造函数");
  }
  static int staticInt = 5;    //如果放在static{}后面则编译不通过
  static {
  System.out.print("1.静态初始化表达式:staticInt=" + staticInt + "\t");
  System.out.println("静态初始化块");
  }
  int instanceInt;            //将会被赋默认值0
  {
  System.out.print("2.初始化表达式:instanceInt=" + instanceInt + "\t");
  System.out.println("初始化块");
  }
  }
  class Father {
  Father() {
  System.out.println("1.父类的构造函数");
  }
  }
  输出结果:
  -----类初始化-----
  1.静态初始化表达式:staticInt=5 静态初始化块
  -----


相关文档:

Java变量数据类型

变量:存储数据的基本单元;一个数据存储空间的表示.
基本数据类型(8种):
    byte(1)-->short(2)-->int(4)-->long(8)    float(4)-->double(8)   boolean(1)  char(2)
引用数据类型:
  
   String、数组、类、接口、对象 ......

Java中throw和throws的区别

系统自动抛出的异常
所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行。
语句抛出的异常
用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。
throw是语句抛出 ......

Java语言中关键字讲解(二)transient的用途

1.什么是序列化
对象的寿命通常随着生成该对象的程序的终止而终止。有时候,可 能需要 将 对象的状态保存下来,在需要时再将对象恢复。我们把对象的这种能记录自己的状态以便将来再生的能力 。叫作对象的持续性(persistence)。对象通过写出描述自己状态的数值来记录自己 ,这个过程叫对象的序列化(Serialization) 。序列化 ......

java中的sizeof


关键字: java sizeof
     在C/C++中,当我们想知道一个对象或者一个原始数据类型所占用的内存大小时,只需简单调用sizeof操作符即可,但是,在java中是没有相应的操作符或者方法来直接完成相应功能的。sizeof 在C/C++得到大量的运用,是程序员必不可少的工具之一,那么为什么java却不提供呢?要回 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号