class demo1{
/**
* 局部代码块:局部位置(方法中),用于限定变量的生命周期;
* 构造代码块:在类的成员位置(与构造方法同级) 用{}括起来的代码。在构造方法执行之前执行;每实例化一次执行一次
* 作用:可以吧多个构造方法的共同代码放到一起,对对象进行初始化。(构造代码块在构造方法执行之前执行)
* 静态代码块:在类中的成员位置,用{}括起来的代码。用static修饰;
* 作用:一般对类进行初始化;
* 不过new多少次,只会执行一次;
*/
static{
String s="1:静态代码块";
System.out.println(s);
}
{
String s="1:构造代码块";
System.out.println(s);
}
public demo1(){
System.out.println("构造方法");
}
{
String s="2:构造代码块";
System.out.println(s);
}
static{
String s="2:静态代码块";
System.out.println(s);
}
public static void main(String[] args){
new demo1();
new demo1();
new demo1();
{
String s="1:局部代码块";
System.out.println(s);
}
{
String s="2:局部代码块";
System.out.println(s);
}
}
}
面试题:下面代码执行流程
class demo2{
static{
String s="1:静态代码块";
System.out.println(s);
}
{
String s="1:构造代码块";
System.out.println(s);
}
public demo2(){
System.out.println("构造方法");
}
{
String s="2:构造代码块";
System.out.println(s);
}
static{
String s="2:静态代码块";
System.out.println(s);
}
}
public class demo3{
static {
System.out.println("demo3:静态代码块1");
}
{
System.out.println(" demo3 构造代码块1");
}
public demo3(){
System.out.println("demo3 构造方法");
}
{
System.out.println(" demo3 构造代码块2");
}
static {
System.out.println("demo3:静态代码块2");
}
public static void main(String[] args){
new demo2();
{
String s="1:局部代码块";
System.out.println(s);
}
{
String s="2:局部代码块";
System.out.println(s);
}
}
}