1、代码块分类
1/1 在某个方法内,或某个语句内,出现一对大括号,大括号内的就是代码块,可用于限定变量的作用域
1/2 构造代码块(定义在类体中)
1/2/2 在实例化对象时执行,构造代码块和构造方法同时存在时,优先执行构造代码块,再执行构造方法。其作用同构造方法,用于初始化数据成员,或做一些先期的工作
1/2/3 构造代码块虽然和构造方法作用相同,但是构造代码块不能传递参数,而构造方法可以
1/3 静态代码块(定义在类体中)
1/3/1 在代码块前加static关键字。
1/3/2 当第一次实例化此类对象时,会被执行一次,之后将不再被执行。
1/3/3 构造方法、普通代码块、静态代码块、方法代码块同时存在是的执行顺序:
静态代码块-->普通代码块-->构造方法-->方法内的代码块
1/3/4 静态代码块只能访问静态成员
classDaiMaKuai
{
publicstatic void main(String[] args)
{
Testtest = new Test();
test.fun();
System.out.println("****************************");
Testtest2 = new Test();
test2.fun();
System.out.println("****************************");
Testtest3 = new Test();
test3.fun();
}
}
classTest
{
inti;
Stringstr;
//构造代码块优先于构造方法执行
Test(){
i= 60;
str= "Hi World!";
System.out.println(i+ " " + str);
}
{
//代码块可用于初始化成员变量,或者执行一些初期工作
i= 10;
str= "HelloWorld!";
System.out.println(i+ " " + str);
}
static{
System.out.println("静态代码块");
}
publicvoid fun(){
{
//此处不能再使用this使用成员变量
/*this.i= i;
this.Str= str;*/
inti = 23;
Stringstr = "ABCDEF";
System.out.println(i+ " " + str);
}
}
}
静态代码块
10HelloWorld!
60Hi World!
23ABCDEF
****************************
10HelloWorld!
60Hi World!
23ABCDEF
****************************
10HelloWorld!
60Hi World!
23ABCDEF