1.没有对象的构造

public class Test {    

	public static int k = 0;
public static int n = 99; public static int i = print("i");
static {
print("静态块");
} {
print("构造块");
}
public int j = print("j"); public Test(String str) {
System.out.println((++k) + ":" + str + " i=" + i + " n=" + n);
++i;
++n;
} public static int print(String str) {
System.out.println((++k) + ":" + str + " i=" + i +" n=" + n);
++n;
return ++i;
} public static void main(String[] strings) { } }

在载入类的时候构造静态变量和静态代码块。

顺序依照定义的顺序。

结果为:

1:i i=0 n=99

2:静态块 i=1 n=100

2.main函数中构造对象

public class Test {    

	public static int k = 0;
public static int n = 99; public static int i = print("i");
static {
print("静态块");
} {
print("构造块");
}
public int j = print("j"); public Test(String str) {
System.out.println((++k) + ":" + str + " i=" + i + " n=" + n);
++i;
++n;
} public static int print(String str) {
System.out.println((++k) + ":" + str + " i=" + i +" n=" + n);
++n;
return ++i;
} public static void main(String[] strings) {
Test t = new Test("init");
} }

前两条同上。

在构造对象时,先构造对象里的非static变量,再调用构造函数。

非static类的变量按定义的顺序构造。

结果为:

1:i i=0 n=99

2:静态块 i=1 n=100

3:构造块 i=2 n=101

4:j i=3 n=102

5:init i=4 n=103

3.类中含static对象

public class Test {    

	public static int k = 0;
public static int n = 99;
public static Test t1 = new Test("t1"); public static int i = print("i");
static {
print("静态块");
} {
print("构造块");
}
public int j = print("j"); public static Test t2 = new Test("t2"); public Test(String str) {
System.out.println((++k) + ":" + str + " i=" + i + " n=" + n);
++i;
++n;
} public static int print(String str) {
System.out.println((++k) + ":" + str + " i=" + i +" n=" + n);
++n;
return ++i;
} public static void main(String[] strings) {
Test t = new Test("init");
} }

static类型变量、对象、代码块按定义的顺序构造。

构造static对象时候。由于是构造对象所以同2所述,先构造非static变量,在调用构造函数。

结果:

1:构造块 i=0 n=99

2:j i=1 n=100

3:t1 i=2 n=101

4:i i=3 n=102

5:静态块 i=4 n=103

6:构造块 i=5 n=104

7:j i=6 n=105

8:t2 i=7 n=106

9:构造块 i=8 n=107

10:j i=9 n=108

11:init i=10 n=109

4.static变量初始化

public class Test {    

	public static int k = 0;     

	public static Test t1 = new Test("t1");       

	public static int i = print("i");
public static int n = 99;
static {
print("静态块");
} {
print("构造块");
}
public int j = print("j"); public static Test t2 = new Test("t2"); public Test(String str) {
System.out.println((++k) + ":" + str + " i=" + i + " n=" + n);
++i;
++n;
} public static int print(String str) {
System.out.println((++k) + ":" + str + " i=" + i +" n=" + n);
++n;
return ++i;
} public static void main(String[] strings) {
Test t = new Test("init");
} }

先默认初始化再进行赋值。

结果:

1:构造块 i=0 n=0

2:j i=1 n=1

3:t1 i=2 n=2

4:i i=3 n=3

5:静态块 i=4 n=99

6:积木 i=5 n=100

7:j i=6 n=101

8:t2 i=7 n=102

9:积木 i=8 n=103

10:j i=9 n=104

11:init i=10 n=105

Java一流的施工顺序的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 打造Linux三流娱乐环境,二流办公环境,一流Java开发环境

    写这篇文章的目的首先是为让自己以后再装linux环境时候,不用再通宵google+百度,做个备忘录,其次,给新入Linux环境的同学分享一点个人经验,再高尚点的动机也算是想做为开源技术的传播布道者.我 ...

  3. Java学习-序列化

    参考资料: http://www.2cto.com/kf/201405/305380.html http://www.cnblogs.com/xdp-gacl/p/3777987.html   序列化 ...

  4. 推荐一篇关于java 学习的文章,感觉写的很不错

    ---恢复内容开始---    很多网友问我学习Java有没有什么捷径,我说"无他,唯手熟尔".但是我却很愿意将自己学习的一些经验写出来,以便后来者少走弯路,帮助别人是最大的快乐嘛 ...

  5. java.io.Serializable 序列化接口

    什么是序列化.反序列化? Serialization(序列化)是一种将对象以一连串的字节描述的过程: 反序列化deserialization是一种将这些字节重建成一个对象的过程. 序列化通俗一点说就是 ...

  6. 2016-2017-2 《Java程序设计》预备作业2总结

    2016-2017-2 <Java程序设计>预备作业2总结 古希腊学者普罗塔戈说过:「头脑不是一个要被填满的容器,而是一束需要被点燃的火把.」 在对计算机系的学生情况的调查中,我说: 最近 ...

  7. 2016-2017-2 《Java程序设计》预备作业1 总结

    2016-2017-2 <Java程序设计>预备作业1 总结 预备作业01:你期望的师生关系是什么见https://edu.cnblogs.com/campus/besti/2016-20 ...

  8. 招聘前端、Java后端开发、测试、Mysql DBA

    公司介绍: http://www.lagou.com/gongsi/43095.html http://www.yamichu.com 简历发到: zhuye@yamichu.com 招聘职位: JA ...

  9. Java中的Serializable接口transient关键字,及字节、字符、对象IO

    1.什么是序列化和反序列化Serialization是一种将对象转为为字节流的过程:deserialization是将字节流恢复为对象的过程. 2.什么情况下需要序列化a)当你想把的内存中的对象保存到 ...

随机推荐

  1. 一步一步学android之事件篇——单选按钮监听事件

    在平常使用软件的时候,我们经常会碰见一些选择题,例如选择性别的时候,在男和女之间选,前面说过这个情况要用RadioGroup组件,那么点击了之后我们该怎么获取到选择的那个值呢,这就是今天要说的OnCh ...

  2. SE 2014年4月17日

    描述BGP路由属性 MED.首选值 的特点 MED相当于IGP协议中的度量值,在其他条件相同时,当本自治系统有多条到达外部自治系统的链路时,MED值小的路由优选.MED属性只能在两个自治系统间传递. ...

  3. Python用Tkinter的Frame实现眼睛护士的倒计时黑色屏幕

    import Tkinter,time class MyFrame(Tkinter.Frame): def __init__(self): Tkinter.Frame.__init__(self) s ...

  4. hdu5046(重复覆盖+二分)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5046 题意:要在n个城市里建造不超过k个机场覆盖所有城市,问机场城市之间最大距离最小为多少. 分析:二 ...

  5. 【HDU】4888 Redraw Beautiful Drawings 网络流【推断解是否唯一】

    传送门:pid=4888">[HDU]4888 Redraw Beautiful Drawings 题目分析: 比赛的时候看出是个网络流,可是没有敲出来.各种反面样例推倒自己(究其原因 ...

  6. Cloudera hadoop-2.3.0-cdh5.1.0 在Centos 6.5 下的安装

    安装前准备 1.  虚拟机3个.安装Centos 6.5, 内存设置为4GB 2.  配置yum源为163(不配置,在安装软件时,慢的要死) 3. 关闭防火墙( iptables).disabled ...

  7. Kruskal(克鲁斯卡尔)

    设有一个有n个顶点的连通网N={V,E},最初先构造一个只有n个顶点, 没有边的非 连通图 T={V, E}, 图中每个顶点自成一个连通分量. 当在E中选到一条具有最小权值的边时,若该边的两个顶点落在 ...

  8. Windows Phone开发(39):漫谈关键帧动画上篇

    原文:Windows Phone开发(39):漫谈关键帧动画上篇 尽管前面介绍的几种动画会让觉得很好玩了,但是,不知道你是否发现,在前面说到的一系列XXXAnimation中,都有一个共同点,那就是仅 ...

  9. Leetcode 3Sum Closet

    二手和3Sum像几乎相同的想法.二进制搜索.关键修剪.但是,在修剪做出很多错误. 然后还有一个更加速了原来的想法O(n^2). #include<iostream> #include &l ...

  10. REDGATE又一好用的脚本工具ScriptsManager1.3

    原文:REDGATE又一好用的脚本工具ScriptsManager1.3 REDGATE又一好用的脚本工具ScriptsManager1.3 先说明一下:这个工具是免费的 下载地址:http://ww ...