您现在的位置是:群英 > 开发技术 > 编程语言
Java代码块的分类是什么,具有什么特征
Admin发表于 2022-09-17 17:28:00620 次浏览
这篇文章给大家分享的是“Java代码块的分类是什么,具有什么特征”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“Java代码块的分类是什么,具有什么特征”吧。


什么是代码块

java中被 {} 括起来的代码这部分被称为代码块

代码块的分类

普通代码块(本地代码块)
构造块(实例代码块)
静态块
同步代码块 

本片文章就先讲普通代码块,构造快和静态块。而同步代码块一般在多线程种用到,后面写到多线程的时候会说同步代码块,在这就不多说了。代码块还是很简答的,但是有一些要注意的点希望大家记住,接下来我会通过普通代码块,构造快和静态块一起对比来讲解。

普通代码块

普通代码块就是用{}括起来的代码,这部分就是普通代码块,也称本地代码块。举个例子,看下面这段代码:

public class Test {
    public static void main(String[] args) {
        {
            System.out.println("这是普通代码块");
        }
    }
}

主函数中,输出 “这是普通代码块”这个部分是被{}括起来的部分,并且它的前面没有任何限制条件,这部分就是 普通代码块。当然这种代码块没什么太大的意义,因为没有限制条件,加不加{}它都会执行,所以平时不加{}也可以。

构造块(实例代码块)

实例代码块一般定义在类的内部,方法的外部。看下面这段代码:

class blocks{
    public int a;
    {
        this.a = 1;
        System.out.println("这是实例代码块");
    }
public class Test {
    public static void main(String[] args) {
    }
}

而实例代码块和普通代码块非常像,只是位置不同而已,还有一点,实例代码块可以为普通的成员变量进行赋值。

静态代码块

静态成员变量也就是被static修饰的变量的初始化分为两种:就地初始化 和 静态代码块初始化。

就地初始化就是在创建变量的时候就给它进行了赋值。接下来我们来看一下静态代码块初始化,

先来了解一下什么是静态代码块,看一下下面的代码:

class blocks{
    static int a ;
    static {
        a = 1;//对静态的成员变量进行赋值
        System.out.println("这是静态代码块");
    }
}
public class Test {
    public static void main(String[] args) {
    }
}

静态代码块就是在普通代码块的前面加了一个static,这就是静态代码块。而我可以在静态代码块里面对静态成员变量进行赋值,静态代码块只能为静态的成员变量进行赋值。

代码块的一些特性

静态代码块不管生成多少个对象,其只会执行一次

如果有多个静态或实例代码块,看定义的顺序

如果没有实例化对象,只会执行静态的

静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的

如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次合并

实例代码块只有在创建对象时才会执行

在这给大家讲解一下代码块的特性,看一下下面这段代码:

class Blocks {
    public int a;
    static int b;
    public double c;
    public Blocks(){
        System.out.println("这是一个不带参数的构造方法");
    }
    {
        this.a = 1;
        System.out.println("这是实例代码块");
    }
    static {
        b = 1;
        System.out.println("这是静态代码块");
    }
}
public class Test {
    public static void main(String[] args) {
        Blocks blocks = new Blocks();
    }
}

我们都知道我们在主函数中创建对象的时候,编译器会调用构造方法,也就是public Blocks这个函数会被执行。那么这段代码的运行结果是什么?是只执行构造方法?还 是从上到下顺序执行?

答案是**静态代码块先执行,然后是实例代码块,最后是构造方法。**运行结果如图所示:

不只是这样,静态代码块在整个程序中,运行且只运行一次。看下面这张图:

这里我在上面代码的基础上又创建了一个对象,除了静态代码块,其它都是执行了两次。剩下的还有一些结论,大家记一下就可以了。


以上就是关于Java代码块的分类是什么,具有什么特征的介绍啦,需要的朋友可以参考上述内容,希望对大家有帮助,欢迎关注群英网络,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: java
相关信息推荐
2021-11-04 17:40:40 
摘要:这篇文章给大家分享的是PHP http请求超时的情况的解决方案,对大家解决http请求超时的问题有一定的搬小编觉得挺实用的,因此分享给大家做个参考,文中示例代码介绍的非常详细,感兴趣的朋友接下来一起跟随小编看看吧。
2022-02-07 18:19:30 
摘要:这篇文章给大家分享的是mybatis一级缓存与二级缓存的相关内容。一些朋友不是很了解两者的区别,因此这篇就给大家来介绍一下。一般来说,Mabits默认开启一级缓存,而Mybatis默认是没有开启二级缓存的,接下来就跟随小编一起了解看看吧。
2022-09-06 17:51:21 
摘要:怎么利用Object()函数创建对象?下面本篇文章给大家介绍一下Object()构造函数创建对象的方法(附其他三种创建对象的方法),希望对大家有所帮助!
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部