java 类的变量 和 静态变量 的初始化

来源:互联网 发布:python api文档在哪有 编辑:程序博客网 时间:2024/04/27 02:10
import java.util.Scanner;/** * 练习 java 有关 类的数据成员初始化,包括 静态变量 和 静态函数 的操作 * @author yangfan32 * */public class MainClass {public static void main(String[] args) {System.out.println("Create New Tools() in main() ");new Tools();System.out.println("Create New Tools() in main() ");new Tools();}}// 只能存在一个公有类class Tools {Tool t1 = new Tool(1);static Tool t2 = new Tool(2);Tools(){System.out.println("在 Tools 的构造函数中");t4 = new Tool(44);}static Tool t3 = new Tool(3);Tool t4 = new Tool(4);static {}}class Tool {int id;Tool(int i){//System.out.println("在 Tool 的 构造函数中");this.id = i;System.out.println("Tool("+this.id+")");}}
结果

分析: 类先初始化 类中的静态变量,然后初始化其他变量,再进入类的构造函数。类的静态变量只会初始化一次。


静态初始化块


import java.util.Scanner;/** * 练习 java 有关 类的数据成员初始化,包括 静态变量 和 静态函数 的操作 *  * @author yangfan32 *  */public class MainClass {public static void main(String[] args) {System.out.println(" main() ");Tools.t3.show();}static Tools ts = new Tools();}// 只能存在一个公有类class Tools {static Tool t1 = new Tool(1);Tools() {System.out.println("在 Tools 的构造函数中");}static Tool t2 = new Tool(2);static {System.out.println("进入静态初始化块");t1 = new Tool(11);t2 = new Tool(22);t3 = new Tool(33);System.out.println("退出静态初始化块");}static Tool t3 = new Tool(3);}class Tool {int id;Tool(int i) {this.id = i;System.out.println("Tool(" + this.id + ")");}public void show() {System.out.println("show(" +this.id+ ")");}}
结果

分析:静态初始化块只会在第一次使用该类时执行。静态初始化块中的语句和声明静态变量时指定初值的动作会按照他们在类定义中出现的顺序。

如  静态变量 t3






原创粉丝点击