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. 自定义Annotation

    来源:http://blog.csdn.net/lifetragedy/article/details/7394910 概念篇 来看一个最简单的annotation示例 @Target(Element ...

  2. 自己动手写CPU之第六阶段(2)——移动操作指令实现思路

    将陆续上传本人写的新书<自己动手写CPU>(尚未出版),今天是第21篇,我尽量每周四篇 6.2 移动操作指令实现思路 6.2.1 实现思路 这6条移动操作指令能够分为两类:一类是不涉及特殊 ...

  3. flex 错误信息类型及解决方法

    总结一些经常出现的异常信息及处理方法(会一直持续更新): 异常1: 写actionscript3.0时遇到了错误.报错为:Error #2044: 未处理的 ioError:. text=Error ...

  4. jQuery上传插件Uploadify 3.2在.NET下的详细例子

    项目中要使用Uploadify 3.2来实现图片上传并生成缩略通的功能,特此记下来,以供各位参考! Uploadify下载地址:http://www.uploadify.com/download/ 下 ...

  5. wordpress博客近期变慢之解决(fonts.google.com)

    近期发现站点訪问速度变慢.博客文章打开速度特慢,也没改动过东西. 并且近期发现google的服务非常多訪问都打不开或是变慢. 于是知道可能是那"伟大东西"在作坏事了. 症状: 网页 ...

  6. Android 权限添加

    在AndroidMainFest.xml中加上以下代码就行了 添加WiFi以及访问网络的权限: <uses-permission android:name="android.permi ...

  7. Java的wait(), notify()和notifyAll()使用心得(转)

    本篇文章是对java的 wait(),notify(),notifyAll()进行了详细的分析介绍,需要的朋友参考下wait(),notify()和notifyAll()都是java.lang.Obj ...

  8. 用C设计,用C++编码

          昨天晚上看到刘江的blog又补充了好几大段,今天早上又看到云风的人肉trackback,果然还是这种话题引人关注. 云风先是提了一下所谓C++带来的思想包袱(文言文曰“心智包袱”)问题,然 ...

  9. DevExpress控件中LayoutControl的使用

    原文:DevExpress控件中LayoutControl的使用 C#开发中,软件布局设计,主要用TableLayoutPanel能很好地支持缩放功能,对自身的Label.TextBox等控件支持的很 ...

  10. 重新想象 Windows 8 Store Apps (17) - 控件基础: Measure, Arrange, GeneralTransform, VisualTree

    原文:重新想象 Windows 8 Store Apps (17) - 控件基础: Measure, Arrange, GeneralTransform, VisualTree [源码下载] 重新想象 ...