Java中的构造代码块

代码块

----a静态代码块

----b构造代码块

----c普通代码块

执行顺序:(优先级从高到低。)静态代码块>mian方法>构造代码块>构造方法。

a.静态代码块:

静态代码块在加载该类的时候执行,且只执行一次!

 1 class Test{
 2     public static void main(String args[])
 3 {
 4 Demo d1=new Demo();Demo d2=new Demo();
 5
 6 }
 7 }
 8
 9 class Demo{
10    static{
11 System.out.println("这是一个静态代码块,看我会执行几次");
12 }
13 }
14
15
16 //运行结果
17 //这是一个静态代码块,看我会执行几次

b.构造代码块,执行顺序大于构造方法

       b.1.java编译器编译生成一个java文件时,会把变量声明移动到一个类的最前端。

       b.2.java中的成员变量初始化其实都是在构造函数中执行的。

       b.3.java编译器编译时,会把构造代码块中的代码移到构造函数中执行,并且,原本构造函数中的方法是在最后执行的。(Demo2运行没有出错,证明了这点,也可以反编译)

       b.4.成员变量的显示初始化和构造代码块中的代码是按代码的先后顺序来执行的。(比较Demo3和Demo4)

//主函数public class Test{

	public static void main(String[] args) {

		Demo d=new Demo();
		System.out.println(d.i);
	}
}

//Demo1
//执行结果i=30000;
public class Demo {

  int i=10000;
  {
	  i=20000;
  }
  public Demo()
  {
	  i=30000;
  }
}

//Demo2
//执行结果i=30000;
public class Demo {

  {
	  i=20000;
  }
  public Demo()
  {
	  i=30000;
  }
 int i=10000;
}

//Demo3
//执行结果i=10000;
public class Demo {

  {
	  i=20000;
  }
  public Demo()
  {
	//  i=30000;
  }
 int i=10000;
}

//Demo4
//执行结果i=20000;
public class Demo {
  int i=10000;

  {
	  i=20000;
  }

  public Demo()
  {
	//  i=30000;
  }

}

普通代码块,作用不大,唯一的作用就是让里面的变量资源尽快被释放

//普通代码块public class Test{

    public static void main(String[] args) {
           {
              System.out.println("我是一个普通的代码块");
            }

    }}
时间: 2024-12-23 04:26:51

Java中的构造代码块的相关文章

java中c#中statc 静态调用不同之处、c#的静态构造函数和java中的构造代码块、静态代码块

1.java和c#静态成员调用的不同之处 static 表示静态的,也就是共享资源,它是在类加载的时候就创建了 java中   可以通过实例来调用,也可以通过类名.成员名来调用,但是一般最好使用类名.成员这个方式,因为静态成员是属于类的,并不是属于具体的对象 c#中     只能通过类名.成员调用,并不能 用实例来进行调用 2.c#的静态构造函数和java中的构造代码块.静态代码块 c# 静态构造函数的特点:        1)静态构造函数不需要手动调用,系统自动调用        2)静态构造

浅析Java中的构造代码块、静态代码块与构造方法

构造代码块.静态代码块与构造方法是三种不同的代码块,那么他们到底有什么区别呢? 一.简单认识一下构造代码块.静态代码块与构造方法 class A { //构造代码块 { System.out.println("构造代码块A"); } //静态代码块 static { System.out.println("静态代码块A"); } //构造方法 public A() { System.out.println("构造方法A"); } } 二.弄清三者

java中的静态代码块,构造代码块,构造函数,普通代码块

java中的静态代码块,构造代码块,构造函数,普通代码块 静态代码块: 格式: public class Test1{ static{ System.out.println("这是一个静态代码块");  } } 说明: 1.静态代码块在类加载时也就是项目启动时运行并且只运行一次相当于main函数,有多个静态代码块从上往下依次执行,他是一种主动运行的机制. 2.静态代码块不能存在于任何方法中 构造代码块 格式: public class Test2{ { System.out.print

Java中的静态代码块和构造代码块

最近一在回顾Java中的一些知识,这里跟大家一起学习一下静态代码块,和构造代码块. 首先,代码就是巴拉巴拉一些定义呀,赋值啊,运算的一些java代码,用两个大括号括起来,就变成了神奇的代码块 { a=3; } static{ b=4; } 就像上面那个样子. 括号加了static修饰就变成了静态代码块,大家记住哦,只要加了static这个东西只后,后面那个东东就是静态的,而且只能操作静态的东东. 比如静态方法,静态变量,静态指针,当然java里没有指针. 然后我用了一个小代码去理解这两个概念,上

java中的静态代码块、构造代码块、普通代码块和同步代码块总结

java中的4中代码块总结如下: * 加了static的是静态代码块,在类中写了一对{}是构造代码块,在方法中写了一对{}是普通代码块, * java中还有一种代码块是同步代码块,常用在多线程中, synchronized关键字, * 同步代码块格式是:synchronized(同步对象){} * 静态代码块 先于构造代码块 先于构造方法执行 * 静态代码块 先于普通代码块 先于构造方法执行 * 构造代码块和普通代码块按照程序逻辑顺序执行 package 面试题; class HelloA{ p

Java中的局部代码块、构造代码块、静态代码块

局部代码块: 作用:控制变量的生命周期: 在程序中,当我们已经使用完 x 后,并且在接下来的代码中,不会再用到x,那么就没必要让x 在内存中占用空间了,这用情况下,可以使用 局部代码块,将x及其所设计到的区域封装为局部代码块,他们在程序执行中顺序不变,只是在执行完成后消失. 表现形式,以代码体现如下: class TestDemo { public static void main(String[] args) { { int x = 9; System.out.println(x); } Sy

java中的四大代码块

java中四大代码块 构造代码块 普通代码块(非静态代码块) 静态代码块 同步代码块 它们的执行顺序: 分析:当执行new Child()时,它首先去看父类里面有没有静态代码块,如果有,它先去执行父类里面静态代码块里面的内容,当父类的静态代码块里面的内容执行完毕之后,接着去执行子类(自己这个类)里面的静态代码块,当子类的静态代码块执行完毕之后,它接着又去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法:父类的构造方法执行完毕之后,它接着

java之路 构造代码块注意事项

1 /* 2 构造代码块: 3 4 构造代码块的作用:给对象进行统一的初始化. 5 6 构造函数的作用: 给对应的对象进行初始化. 7 8 9 构造代码块的格式: 10 11 { 12 构造代码块 13 } 14 15 注意: 构造代码块的大括号必须位于成员 位置上. 16 17 18 代码块的类别: 19 1. 构造代码块. 20 2. 局部代码块. 大括号位于方法之内. 作用:缩短局部 变量 的生命周期,节省一点点内存. 21 3. 静态代码块 static 22 */ 23 24 clas

Java构造器,构造代码块,静态代码块的执行顺序

构造器 与类同名且没有返回值,用来初始化类属性: 构造器又分为无参构造器和有参构造器 1.1:无参构造器 public class Contruction{ //...属性... public Contruction(){}//无参构造器,不写,系统会自动添加 } 1.2:有参构造器 public class Contruction { private int i; public Contruction( int i){ /*有参构造器,如果你定义了一个有参数的构造器, 那么你在实例化对象的时候