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

一、局部代码块:

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

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

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

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

二、静态代码块:

特点:

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");
    }
}

 

三、构造代码块 

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

public class Dev {  
    static {  
        System.out.println("静态代码块");  
    }  
    {  
        System.out.println("构造代码块");  
    }  
  
    public Dev() {  
        System.out.println("无参构造方法");  
    }  
  
    public Dev(String name) {  
        System.out.println("有参数的构造方法");  
    }  
} 

静态代码块会先执行,并且只执行一次

接着是构造代码块执行(构造代码块在构造方法之前执行,并且每创建一次对象,它就会执行一次。而构造方法只执行一次。)

构造代码块的功能:(可以把不同构造方法中相同的共性的东西写在它里面)。例如:比如不论任何机型的电脑都有开机这个功能,此时我们就可以把这个功能定义 在构造代码块内。

执行顺序:成员变量初始化 ==》静态代码块==》构造代码块==》构造函数

 

四、static(静态)

需求:描述一下传智学生类。  都是中国人....

目前存在的问题: 所有的学生都是中国 的,有n个学生就会有n份中国的 数据存内存中,这样会浪费内存。

目前方案: 把“中国”这个数据移动 到数据共享区中,共享这个数据给所有的Student对象使用即可。

问题2: 如何才能把这个数据移动 到数据共享区中共享呢?

解决方案: 只需要使用static修饰该数据即可。

 

静态的成员变量只会在数据共享区中维护一份,而非静态成员变量的数据会在每个对象中都维护一份的。。

 注意: 

       1. 非静态成员变量不能使用类名直接访问,要使用对象访问.

       2. 千万不要为了访问方便而使用static修饰。一定要数据真正是需要被共享的时候才使用static修饰。

120943_PSvJ_3546857.png

 

转载于:https://my.oschina.net/orange666/blog/1490282

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值