除了说普通代码块,静态代码块,构造代码块的执行顺序外,还有静态方法,静态变量等,都放在一起的话,这个执行顺序,怎么确定。

我就实际弄个代码,看下执行顺序。

public class Line {
static {
System.out.println("静态代码块执行:loading line");
}

public static String s = getString();

private static String getString() {
System.out.println("给静态变量赋值的静态方法执行:loading line");
return "ss";
}

public static void test() {
System.out.println("普通静态方法执行:loading line");
}

public Line() {
System.out.println("构造方法执行:loading line");
}

{
System.out.println("构造代码块执行");
}
}


然后是main方法

/**
* 代码块执行顺序测试
* <p>
* Created by lxk on 2017/2/21
*/
public class CodeBlockTest {
public static void main(String[] args) {
System.out.println("主方法");
{
System.out.println("main方法中最开始的,普通代码块执行");
}
Line line = new Line();
System.out.println("...............");
Line line1 = new Line();
System.out.println("...............");
{
System.out.println("main方法中结尾事的,普通代码块执行");
}
}
}

看运行结果。



针对上面执行结果,对几个概念进行简单的描述。

普通代码块:

在方法或语句中出现的{}就称为普通代码块。
普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行”

构造代码块:

直接在类中定义且没有加static关键字的代码块称为{}构造代码块。
构造代码块在创建对象时被调用, 每次创建对象都会被调用,并且 构造代码块的执行次序优先于类构造函数
这个构造代码块的执行顺序不会因为方法所在位置而影响,我特意将他放在构造函数之后。

静态代码块:

在java中使用static关键字声明的代码块。
静态块用于初始化类,为类的属性初始化。 每个静态代码块只会执行一次
由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。
如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行"。(我这没作出test)
注意:
1 静态代码块不能存在于任何方法体内。
2 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。


更多相关文章

  1. 编写自己的代码库(javascript常用实例的实现与封装)[转]
  2. 一篇不错的Android Audio架构代码梳理总结
  3. demo_代码注册广播接受者_Service
  4. Android学习笔记--《第一行代码Android》273页代码解密
  5. Linux下 使用Repo和Git下载Android源代码并编译
  6. Java已经启动,但是返回的退出代码=13 eclipse [duplicate]
  7. MD5加密,java工具类 String 转变成MD5 String 详细代码,工具类And
  8. Android有用的代码片段
  9. Robotium用例通过代码自动解锁屏幕

随机推荐

  1. Android(安卓)Toast使用简介
  2. android中的数据库操作
  3. android新闻App源码、仿微信源码、地图音
  4. Ice Cream Sandwich系统将统一Android版
  5. (window)Android Studio安装以及Fetching
  6. android当中的xml没有代码提示功能解决办
  7. Android:TextView属性
  8. [Android 与 js 简单互调
  9. android shape控件的使用
  10. Android 软件安装方法介绍