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

局部代码块:

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

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

表现形式,以代码体现如下:

    class TestDemo
    {
        public static void main(String[] args)
        {
            {
                int x = 9;
                System.out.println(x);
            }  

            System.out.println("Hello World !");
        }
    }  

构造代码块:

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

class Person
{
    private String name;
    private int age;

    {
        System.out.println("cons code run !");

    } 

    Person() // 给对应的对象进行初始化
    {
        System.out.println("Person Now:RUN !");
        System.out.println("eat————");
    }

    Person (String name , int age)
    {
        this.name = name ;
        this.age= age;
        System.out.println(this.name + "————" + this.age);
        System.out.println("eat————");
    }

}
class ConsCodeDemo
{
    public static void main(String[] args)
    {
        Person p = new Person();
        Person p1 = new Person("LiSi" , 23);
    }
}

我们可以看到类Person中 重载的构造方法中有共同的代码System.out.println("eat————");我们可以将他封装进构造代码块,用来给各种进行初始化。

优化后,代码体现为:

class Person
{
    private String name;
    private int age;

    {
        System.out.println("cons code run !");
        eat();

    } 

    Person() // 给对应的对象进行初始化
    {
        System.out.println("Person Now:RUN !");
    }

    Person (String name , int age)
    {
        this.name = name ;
        this.age= age;
        System.out.println(this.name + "————" + this.age);
    }
    public void eat()
    {
        System.out.println("eat————");
    }

}
class ConsCodeDemo
{
    public static void main(String[] args)
    {
        Person p = new Person();
        Person p1 = new Person("LiSi" , 23);
    }
}

静态代码块:

特点:

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

当类中的方法都被静态了化,并且构造方法被private了,这是我们不能,在将这个类实例化,然而又想让类增加一些属性,就可以使用静态代码块:

表现形式,以代码体现如下:

class StaticCode
{
    static
    {
        System.out.println("A");
    }
    public void show()
    {
        System.out.println("Hello World !");
    }
}
class StaticCodeDemo
{
    static
    {
        System.out.println("B");
    }
    public static void main(String[] args)
    {
        new StaticCode().show();
    }
    static
    {
        System.out.println("C");
    }
}
时间: 2024-10-23 06:29:05

Java中的局部代码块、构造代码块、静态代码块的相关文章

关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用

http://blog.csdn.net/5iasp/article/details/37054171 文章标题:关于JAVA中事件分发和监听机制实现的代码实例 文章地址: http://blog.csdn.net/5iasp/article/details/37054171 作者: javaboy2012Email:[email protected]qq:    1046011462 一.场景假设 假设有博客系统中需要实现如下功能: 系统中用户发布文章,修改文章,删除文章时,需要一些相关的操作

java中try catch finally注意事项,finally在代码中什么时候运行

1.在java里函数抛出异常是需要在函数上定义的,除了runtimeException外 2.java中finally运行的位置在函数return前,其他的代码后.函数会运算完所有执行的代码,包括return里面的表达式,只是在return操作前去执行finally里面的代码.实例如下面的代码: public class Test{ public int add(int a,int b){ try { return a+b; } catch (Exception e) { System.out.

代码逻辑题之继承-静态代码块-main方法执行顺序

前提知识: (暂未发布)面向对象继承相关知识 (暂未发布)static与静态代码块 JVM入门之main方式详解 (暂未发布)JVM加载类的顺序 public class ParentMainTest { static int x; static { x++; System.out.println("ParentMainTest_static..." + x); } public static void main(String[] args) { new SonMainTest(6);

请运行TestStaticInitializeBlock.java示例,观察输出结果,总结出“静态初始化块的执行顺序”。

class Root{ static{ System.out.println("Root的静态初始化块"); } { System.out.println("Root的普通初始化块"); } public Root() { System.out.println("Root的无参数的构造器"); }}class Mid extends Root{ static{ System.out.println("Mid的静态初始化块");

Java中23种设计模式--超快速入门及举例代码

在网上看了一些设计模式的文章后,感觉还是印象不太深刻,决定好好记录记录. 原文地址:http://blog.csdn.net/doymm2008/article/details/13288067 注:本文代码基本都有很多没有初始化等等问题,主要是为了减少代码量,达到一眼就能了解大概情况的目的. java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式. 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,

Java中的数组操作进阶,别问我为什么,代码诠释一切!

我不是针对某个人,我说的是在座的所有人都是渣渣! package com.mi.array; import java.util.Arrays; /** * System.arraycopy(i, 0, j, 0, i.length);这种复制会覆盖目标数组元素 * 数组的copy * @author admin * */ public class CopyArray { public static void main(String[] args) { int[] i =new int[7]; i

Java中,局部内部类

局部内部类 A:局部内部类可以直接访问外部类的成员. B:局部内部类在局部位置可以创建内部类对象,通过内部类对象调用内部类方法,来使用局部内部类功能. C:局部内部类访问局部变量,局部变量必须加final修饰.为什么呢? 因为局部变量会随着方法的调用完毕而消失,这个时候,局部对象并没有立马从堆内存中消失, 局部对象还要使用这个局部变量.为了让数据还能继续被使用,就用fianl修饰局部变量, 这样,在堆内存里面存储的其实是一个常量值.通过反编译工具可以看一下. 通过反编译工具我们看到了,加入fin

java中静态代码块(static{...}),局部代码块(方法中{...}),构造代码块(类中{...})区别。

1.局部代码块: 格式:在方法中{局部代码块执行语句} 局部代码块,又叫普通代码块.它是作用在方法中的代码块. 作用:是控制变量的生命周期. 在程序中当我们定义完成一个局部变量x之后,并且在接下来的代码中,不想再用到它时,那么就没必要让x在内存中继续占用空间.因此就有了局部代码块. 2.构造代码块: 格式:在类中{构造代码块执行语句} 作用:就是给所有对象进行初始化. 注意几点: 1)每次创建对象他都会执行. 2)构造代码快是优于构造函数执行. 3)构造代码块与构造函数的区别是:构造代码块是给所

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{