易截截图软件、单文件、免安装、纯绿色、仅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中throw和throws的区别

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

java 文件操作

1.
BufferedReader in = new BufferedReader(new FileReader("远程文件"));
in.readLine() ;
l  使用 Java 操作文本文件的方法详解
http://java.ccidnet.com/art/3737/20041108/523627_1.html
l    FileReader 是什么类?和 FileInputStream 有什么不同???     
ht ......

Java语言中的关键字讲解(三)volatile的用途

关于volatile
我们知道,在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。
这在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下
volatile关键字的使用变得非常重 ......

Java中类的生命周期

  Java虚拟机管理类和对象的生命周期;
(1)类的生命周期从类被加载,连接,初始化开始,到类被卸载结束;
(2)类处于生命周期时,它的二进制数据位于运行时方法区内,在堆区还有一个相应的描述类的Class类的对象;
(3)只有当类处于生命周期中时,Java程序才能够使用它。
1.Java虚拟机及程序的生命周期
(1) ......

【奋斗第二天】菜鸟学Java之我的面向对象观续

昨天写了用面向对象的思想去分析一个实际的问题,呵呵,那么今天就就类和对象做一个详细的讨论。
昨天说了在CS中人物可能是一个抽象类或一个接口,而各种各样的人物就是继承或实现了这个接口,而说到这里我们还在讨论类,还没有涉及到对象,那么什么时候产生的对象呢?那是咱登陆了CS后选择了一个人物,然后再我们选好的同 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号