代码块分类:
1.普通代码块
2.构造代码块
3.静态代码块
4.同步代码块
代码块不能独立运行,须要依赖于其他配置,格式是:{ //代码块 }。
1.普通代码块
普通代码块,在方法名后(或方法体内)用一对"{}"括起来的数据块,并通过方法调用。
package cn.com.daimakuai;
/**
* PuTongDaiMaiKuai
*2017-2-13上午9:27:02
*@描述:普通代码块
*/
public class PuTongDaiMaiKuai {
public static void main(String[] args) {
/**"{}"括起来的普通代码块;这里的变量x=100作用范围从"{"开始"}"结束,所以与下面的变量x=200互不影响,
* 如果将下面的变量放在普通代码前面将编译错误,因为main的代码块范围比较大
*/
{
int x = 100;
System.out.println("普通代码块:"+x);
}
int x = 200;
System.out.println("main方法:"+x);
}
/**
* 结果输出:
普通代码块:100
main方法:200
*/
}
2.构造代码块
构造代码块:在类中直接定义的,没有任何前缀、后缀以及修饰符的代码块。
构造代码块和构造方法一样都是在对象生成时被调用,但调用时机比构造方法早,所以构造代码块可以用来初始化成员变量。如果一个类中有多个构造方法,这些构造方法都需要初始化成员变量,那么可以把每个构造方法中相同的代码部分抽取出来,集中一起放在构造代码块中,利用构造代码块来初始化共有的成员变量,减少重复代码。
package cn.com.daimakuai;
/**
* ConstroctDaimakuai
* @2017-2-13上午10:02:55
* @描述:构造代码块
*/
public class ConstroctDaimakuai {
public static void main(String[] args) {
Person p1 = new Person();
System.out.println("*******************");
Person p2 = new Person("mimi");
}
}
// Person类
class Person {
private int x;
private String name;
// 构造代码块
{
System.out.println("构造代码块执行-------");
// 对类的成员变量x进行初始化,如果不放置在代码块中,要达到同样效果,需要分别出现在2个构造方法中。
x = 100;
}
// 无参构造方法
Person() {
System.out.println("构造方法执行-------");
name = "mimi";
show();
}
// 有参构造方法
Person(String name) {
System.out.println("构造方法执行-------");
this.name = name;
show();
}
/**
* show方法
*/
private void show() {
System.out.println("welcome!" + name);
System.out.println("x=" + x);
}
/**结果输出:
构造代码块执行-------
构造方法执行-------
welcome!mimi
x=100
*******************
构造代码块执行-------
构造方法执行-------
welcome!mimi
x=100
*/
}
3.静态代码块
静态代码块:static修饰并用"{}括起来的代码块。
特点:用来初始化静态成员变量,最先执行(随着类的加载而加载),只执行一次。
package cn.com.daimakuai;
/**
* Staticdaimakuai
*2017-2-13上午10:45:49
*@描述:静态代码块
*/
public class Staticdaimakuai {
public static void main(String[] args) {
System.out.println("main方法执行-------");
System.out.println("***创建第1个对象***");
new Staticdaimakuai();
System.out.println("***创建第2个对象***");
new Staticdaimakuai();
System.out.println("***创建第3个对象***");
new Staticdaimakuai();
}
//静态代码块
static{
System.out.println("静态代码块执行-------");
}
//构造方法
Staticdaimakuai(){
System.out.println("构造方法执行------");
}
//构造代码块
{
System.out.println("构造代码块执行------");
}
/** 结果输出:
静态代码块执行-------
main方法执行-------
***创建第1个对象***
构造代码块执行------
构造方法执行------
***创建第2个对象***
构造代码块执行------
构造方法执行------
***创建第3个对象***
构造代码块执行------
构造方法执行------
*/
}
4.同步代码块
同步代码块:运用在多线程方面。