您的位置:首页 > 编程语言 > Java开发

Java中static{}块、{}块和普通代码块的研究

2015-10-19 21:16 465 查看

1、普通代码块

普通代码块就是在方法或者是在语句中用{}定义的代码块

普通代码块和方法中其它语句的执行顺序与其出现的顺序一致:即先出现先执行。

package com.wrh.codeblock;

public class CommonCodeBlock {

public static void main(String[] args) {
//普通代码块的研究

{
System.out.println("方法中的普通代码块1");
}

System.out.println("主方法非代码块{}修饰的语句");
{
System.out.println("方法中的普通代码块2");
}
}

}
/*
* 运行结果如下:
方法中的普通代码块1
主方法非代码块{}修饰的语句
方法中的普通代码块2
* */


2、自由代码块

package com.wrh.codeblock;
//自由代码块的研究
//自由代码块就是在类中用{}定义的代码块
//执行顺序在new对象调用构造方法之前执行。但如果在一个类中有几个自由代码块,则其执行顺序与其出现的顺序一致:即先出现先执行。
//且每新建一个对象,都会执行一次。
public class freedomCodeBlock {
{
System.out.println("自由代码块2被运行");//故意将2写在前面
}
public freedomCodeBlock(){
System.out.println("构造函数被执行");
}
{
System.out.println("自由代码块1被执行");
}
public static void main(String[] args) {
System.out.println("main 方法中在创建对象前的第一条语句被执行");
new freedomCodeBlock();
new freedomCodeBlock();
}

}
/*
* 运行结果如下
main 方法中在创建对象前的第一条语句被执行
自由代码块2被运行
自由代码块1被执行
构造函数被执行
自由代码块2被运行
自由代码块1被执行
构造函数被执行
* */


3、static代码块

静态代码块是在类中这样定义的:static{},即是在自由代码块前面用static修饰的

package com.wrh.codeblock;
//静态代码块的研究
//
//静态代码块的是在JVM进行类加载时被执行的,且只执行一次。即其执行时间是最早最早的。
//如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行"。
//注意:1 静态代码块不能存在于任何方法体内。
//2 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。
public class StaticCodeBlock {
static{
System.out.println("静态代码块--------1-------被执行");
}
{
System.out.println("自由代码块-----1-----被执行");
}
static{
System.out.println("静态代码块--------2-------被执行");
}
public StaticCodeBlock(){
System.out.println("构造函数被执行");
}
{
System.out.println("自由代码块-----2-----被执行");
}
public static void main(String[] args) {
System.out.println(" main 方法中在new对象之前的第一条语句被执行。");
new StaticCodeBlock();
new StaticCodeBlock();
}

}

/*
*运行结果如下:
静态代码块--------1-------被执行
静态代码块--------2-------被执行
main 方法中在new对象之前的第一条语句被执行。
自由代码块-----1-----被执行
自由代码块-----2-----被执行
构造函数被执行
自由代码块-----1-----被执行
自由代码块-----2-----被执行
构造函数被执行
* */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: