/*
代码块:
1.它可以定义在某个方法内(局部代码块),也可以定义在类体中(构造代码块);
2.当它定义在类体中时,当每次实例化此类的对象时,会被执行;
如果此类同时有构造方法,那么"先执行代码块","后执行构造方法";
3.代码的作用同构造方法,一般用于做一些初始化的工作。例如:初始化成员变量;
虽然同构造方法的作用一样,但代码块不能接收参数。所以它没有构造方法使用灵活;
4.静态代码块:
1).在代码块之前添加static关键字;
2).它在第一次实例化此类的对象时,或者第一次访问类中的静态成员时,只执行一次,之后再实例化此类对象时将不再被执行;
3).如果一个类同时存在"代码块","构造方法","静态代码块",执行顺序:
1.静态代码块;(第一次实例化此类对象时会被执行一次)
2.代码块;
3.构造方法;
4).静态代码块一般用于初始化静态成员;
注意:如果静态代码块访问静态成员变量,那么此变量一定定义在静态代码块之前。否则编译错误;
*/
class Student
{
Student(){
System.out.println("构造方法......");
}
{
System.out.println("代码块......");
}
static int num = 10;
static{
System.out.println("静态代码块...... num = " + num);
}
void show(){
System.out.println("show()");
}
}
class Demo
{
public static void main(String[] args)
{
/*
Student stu = new Student();
// stu.show();
System.out.println("--------------------");
Student stu2 = new Student();
System.out.println("--------------------");
Student stu3 = new Student();
*/
//如果只访问静态成员变量,静态代码块是否被执行?会被执行;
System.out.println(Student.num);
}
}
|
|