[关闭]
@frank-shaw 2015-10-29T10:34:53.000000Z 字数 1065 阅读 4487

局部代码块 构造代码块 静态代码块

java.基础知识


局部代码块:

作用:控制变量的生命周期;

在程序中,当我们已经使用完 x 后,并且在接下来的代码中,不会再用到x,那么就没必要让x 在内存中占用空间了,这用情况下,可以使用 局部代码块,将x及其所设计到的区域封装为局部代码块,他们在程序执行中顺序不变,只是在执行完成后消失。

  1. class Demo1{
  2. public static void main(String[] args){
  3. //局部代码块
  4. {
  5. int x =0;
  6. system.out.println("存在过x = "+x);
  7. }
  8. ···//其他代码部分
  9. }
  10. }

构造代码块:

作用:它可以给所有对象进行初始化。
存在于:类中。

当类中的构造方法以重载的形式存在时,并且有共同成员变量或共同的方法时,可以通过构造代码块对其进行初始化;这样可以减少代码的重复!

和构造函数的区别:构造函数是给对应的对象进行针对性的初始化,而构造代码块则是对所有对象进行初始化。

  1. class Baby{
  2. String name;
  3. //构造代码块
  4. {
  5. system.out.sprintln("baby诞生啦~~~");
  6. }
  7. //构造函数1
  8. public Baby(){}
  9. //构造函数2
  10. public Baby(String name){
  11. this.name = name;
  12. }
  13. }

静态代码块:

特点:
1. 随着类的加载而执行,而且只执行一次。
2. 优先于主函数执行。
作用:给类进行初始化。

有些时候类不能够创建对象:当类中的方法都被静态化了,并且构造方法被private了,这个时候我们不能再将这个类实例化(创建对象),然而又想让类增加一些属性,就可以使用静态代码块。

  1. class Baby{
  2. String name;
  3. //静态代码块
  4. static{
  5. system.out.sprintln("baby类诞生啦~~~");
  6. }
  7. //构造代码块
  8. {
  9. system.out.sprintln("新baby诞生啦~~~");
  10. }
  11. //构造函数1
  12. public Baby(){}
  13. //构造函数2
  14. public Baby(String name){
  15. this.name = name;
  16. }
  17. }

值得注意的点

1.如果考虑到继承的情况,那么执行顺序变成:类初始化阶段,先执行最顶层父类的静态初始化块,依次向下,最后执行当前类静态初始化块;如果能够产生对象,在对象初始化阶段,先执行最顶层父类的初始化块,构造器,依次向下,最后执行当前类初始化块,构造函数。

2.如果有多个同类型的代码块,那么执行顺序是依照代码顺序从上到下。

3.某些类是不需要创建对象的,我们可以通过某些方式强制不允许该类创建对象:将构造函数私有化。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注