Java(十一)代码块

简介: Java(十一)代码块

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


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


什么是代码块?


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


{


      代码


}


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函数只在项目启动时执行一次。


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

 


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


目录
相关文章
|
6月前
|
Arthas Java 中间件
如何优雅的在java中统计代码块耗时
如何优雅的在java中统计代码块耗时
83 1
|
1月前
|
Java 编译器
【一步一步了解Java系列】:子类继承以及代码块的初始化
【一步一步了解Java系列】:子类继承以及代码块的初始化
22 3
|
3月前
|
Java 程序员 API
从代码中寻找平衡:’java代码块和具体的代码应用
Java 8 引入的 Lambda 表达式是一项革命性特性,使编写简洁、灵活且易维护的代码成为可能。Lambda 表达式作为一种匿名函数,支持任意数量参数和返回值,其基本语法为 `(parameters) -&gt; expression` 或 `(parameters) -&gt; { statements; }`。
36 0
|
3月前
|
Java
【Java】代码块
【Java】代码块
|
5月前
|
Java
Java中代码块区别及代码示例
Java中代码块区别及代码示例
30 0
|
5月前
|
Java C++
Java 基础内容(代码块)
Java 基础内容(代码块)
21 0
|
5月前
|
Java 编译器
Java中4种代码块:普通代码块,静态代码块,同步代码块,构造代码块
Java中4种代码块:普通代码块,静态代码块,同步代码块,构造代码块
229 0
|
5月前
|
Java
java代码块和具体的代码应用
java代码块和具体的代码应用
31 0
|
6月前
|
Java
【JAVA学习之路 | 基础篇】类的成员--代码块
【JAVA学习之路 | 基础篇】类的成员--代码块
|
5月前
|
Java
Java基础8-一文读懂Java 代码块和执行顺序(二)
Java基础8-一文读懂Java 代码块和执行顺序(二)
63 0