JAVA中初始化顺序复习
2012-07-23 11:15
274 查看
转自:http://www.cnblogs.com/loulijun/archive/2012/02/12/2348318.html
static final、static、final区别
static:静态,全局变量,类的对象共享一个静态变量,只初始化一次。
final:常量,如果是方法则不可覆盖,如果是类不可被继承,必须初始化时设置值,设置后就不能改了
static final:静态变量
初始化顺序如下:
父类静态变量(静态初始化话块)> 子类静态变量(静态初始化块)>父类普通变量(普通初始化块)>父类构造方法>父类普通方法
>子类普通变量(普通初始化块)>子类构造方法>子类普通方法
下面是一个例子就说明了这一切
运行结果:
Father:静态变量---1
Father:静态常量---2
Father:静态初始化块---3
Son:静态变量---1
Son:静态常量---2
Son:静态初始化块---3
Father:普通变量---4
Father:普通初始化块---5
Father:父类构造器---6
Son:普通变量---4
Son:普通初始化块---5
Son:子类构造器6
Son:普通方法---7
static final、static、final区别
static:静态,全局变量,类的对象共享一个静态变量,只初始化一次。
final:常量,如果是方法则不可覆盖,如果是类不可被继承,必须初始化时设置值,设置后就不能改了
static final:静态变量
初始化顺序如下:
父类静态变量(静态初始化话块)> 子类静态变量(静态初始化块)>父类普通变量(普通初始化块)>父类构造方法>父类普通方法
>子类普通变量(普通初始化块)>子类构造方法>子类普通方法
下面是一个例子就说明了这一切
package com.loulijun.test1; public class Test1 { public static void main(String args[]) { Son son = new Son(); son.say(); } } class Father { //static final 与 static 没有执行先后顺序,按照代码顺序从上而下执行 //静态变量 public static String str = initStr("Father:静态变量---1"); //静态常量 public static final int i = initfinal(2); //普通变量 public int j = init(4); static int initfinal(int i) { System.out.println("Father:静态常量---"+i); return i; } static int init(int j) { System.out.println("Father:普通变量---"+j); return j; } //静态初始化块 static { System.out.println("Father:静态初始化块---3"); } static String initStr(String str) { System.out.println(str); return str; } //初始化块 { System.out.println("Father:普通初始化块---5"); } //构造方法 public Father() { System.out.println("Father:父类构造器---6"); } public void say() { System.out.println("Father:普通方法---7"); } } class Son extends Father { //static final 与 static 没有执行先后顺序,按照代码顺序从上而下执行 //静态变量 public static String str = initStr("Son:静态变量---1"); //静态常量 public static final int i = initfinal(2); //普通变量 public int j = init(4); static int initfinal(int i) { System.out.println("Son:静态常量---"+i); return i; } static int init(int i) { System.out.println("Son:普通变量---"+i); return i; } //静态初始化块 static { System.out.println("Son:静态初始化块---3"); } static String initStr(String str) { System.out.println(str); return str; } //初始化块 { System.out.println("Son:普通初始化块---5"); } //构造方法 public Son() { System.out.println("Son:子类构造器6"); } public void say() { System.out.println("Son:普通方法---7"); } }
运行结果:
Father:静态变量---1
Father:静态常量---2
Father:静态初始化块---3
Son:静态变量---1
Son:静态常量---2
Son:静态初始化块---3
Father:普通变量---4
Father:普通初始化块---5
Father:父类构造器---6
Son:普通变量---4
Son:普通初始化块---5
Son:子类构造器6
Son:普通方法---7
相关文章推荐
- JAVA中初始化顺序复习
- 复习一下Java中继承关系的类的初始化顺序
- java基础复习 常用修饰符 初始化顺序
- java期末知识点复习——java初始化顺序
- JAVA中初始化顺序复习
- Java继承 学习 && 类初始化顺序
- 关于java中初始化顺序的总结及其势力代码!希望高手们可以帮助补充
- java的初始化块、静态初始化块、构造函数的执行顺序
- JAVA的初始化顺序
- java 程序的初始化顺序是怎样的?
- Java中类继承的初始化顺序
- Java学习笔记(1) 对象初始化顺序
- java 的初始化顺序
- 浅谈Java对象的初始化顺序
- Java中new类的时候初始化的顺序
- Java初始化顺序
- 简单测试java里一个对象的初始化是按怎样的顺序执行的
- Java类内变量初始化的顺序
- Java程序的初始化顺序
- java基础,静态变量,静态初始化块,初始化快,成员变量的初始化顺序