Java(十一)代码块

90 阅读3分钟

代码块这部分的只是有一些超前的地方,没有其他语言基础的同学可能是无法理解。

看不懂的话,就跳过吧,学习了后边的知识之后,再回来看这部分,也许能更好的理解她。

什么是代码块?

由一对花括号括起来的,就称为代码块

{

       代码

}

Java代码块主要有以下几个类型:

一:静态代码块

使用static关键字定义的构造代码块。

在项目启动就需要运行的代码,可以放在静态代码块中。

静态代码块只会在当.c1ass文件从本地磁盘加载到方法区中形成字节码文件对象的时候,静态代码块会随之执行

静态代码块的作用是给数据进行初始化,当数据只需要被初始化一次的时候,之后可以重复使用的时候,就可以使用静态代码块

   /**
* 静态代码块
     */
    static{
        System.out.println("进入了静态代码块~");
    }

二:构造代码块

在类中方法外定义的代码块。

构造代码块的作用是什么?

构造代码块是在创建对象的时候执行,并且是优先于构造方法先执行

可以将构造方法中的共性内容进行抽取,放入到构造代码块中,节省代码的编写

每创建一次对象,都会被调用一次。

    /**
     * 构造代码块
     */
    {
        System.out.println("进入了构造代码块~");
    }

 

三:构造函数

命名和类名完全一致

没有返回值,不需要用void关键字来修饰

不能被直接调用,必须通过new关键词创建对象的时候才能调用

定义一个类的时候,构造函数不是必须的

    /**
     * 构造函数代码块
     */
    public one()
    {
        System.out.println("进入了构造函数~");
    }

 

四:普通代码块(局部代码块)

在方法内定义的代码块

没调用一次方法,就会调用一次代码块

能够让变量更早的在内存中消失,节省内存空间

For循环其实就是一个局部代码块,在循环中定义的变量key就是只在这个代码块中生效。循环结束之后,变量key在内存中也随之消失。

使用循环来做代码块节省内存的例子有点超纲,但这个应该是最好理解的。

/**
     * 构造函数
     * @param args
     */
    public static void main(String[] args)
    {
        for(int x = 1; x < 3; x = x+1)
        // 下边的一对大括号中间,其实就是一个代码块
        {
            // 输出key值
            System.out.print("key值 : " + x );
            // 换行
            System.out.print("\n");
        }
        // 在循环外输出x变量是报错的。
        // System.out.println(x);
    }

 

最后,我们通过一个实例,来测试一下,各个代码块在程序执行的过程中执行的先后顺序:

public class one {
    /**
     * 静态代码块
     */
    static{
        System.out.println("进入了静态代码块~");
    }
 
    /**
     * 构造代码块
     */
    {
        System.out.println("进入了构造代码块~");
    }
 
    /**
     * 构造函数
     * @param args
     */
    public static void main(String[] args)
    {
        System.out.println("进入了构造函数~");
 
        // 第一次调用普通代码块
        (new one()).sayHello();
        System.out.println("---------------");
        // 第二次调用普通代码块
        (new one()).sayHello();
    }
 
    /**
     * 普证代码块
     */
    public void sayHello()
    {
        {
            System.out.println("进入了普证代码块");
        }
    }
}

 

输出:

进入了静态代码块~

进入了main函数~

进入了构造代码块~

进入了构造函数~

进入了普通代码块


进入了构造代码块~

进入了构造函数~

进入了普通代码块

 

通过上方代码执行的输出结果,我们可以发现:

首先进入静态代码块

再进入了main函数

再进入了构造代码块

再进入了构造函数

再进入了普通代码块

 

这里需要注意,静态代码块,main函数只在项目启动时执行一次。

构造代码块、构造函数、普通代码块 是实例化几个对象就调用几次。

 

以上大概就是代码块部分基本的理解,有好的建议,请在下方输入你的评论。