zoukankan      html  css  js  c++  java
  • 各种代码块的作用和区别

    原文链接:https://blog.csdn.net/qq_41679818/article/details/93188324

    代码块概述
    在Java中,使用{}大括号括起来的代码被称为代码块。

    根据其位置和声明的不同,代码块可以分为:

    局部代码块(普通代码块):控制变量的生命周期,提高内存利用率
    构造代码块:可以给所有对象进行初始化
    静态代码块:对静态属性、类进行初始化,并且只执行一次。
    同步代码块(多线程讲解)。


    构造代码块

    在类中直接定义没有任何修饰符、前缀、后缀的代码块即为构造代码块。

    特点:

           new一个对象的时候总是先执行构造代码,再执行构造函数。 

           有一点需要注意构造代码不是在构造函数之前运行的,它是依托构造函数执行的。

           正是由于构造代码块有这几个特性,所以它常用于如下场景:

     作用:

             可以给所有对象进行初始化

    代码示例:

    public class demo1 {
        public static void main(String[] args) {
            Test test = new Test(3);  //构造代码块会在构造函数被调用时执行, 且在这个例子中比"this.id=id;"语句先执行,作用是给对象统一初始化数据;
            System.out.println(test);
        }
    }
    class Test{
        int id;
        String name;
        {
            this.id= 5;
            this.name = "测试";
            System.out.println("这是构造代码块");
        }
        public Test(int id)
        {
            this.id = id;
        }
     
        public String toString()
        {
            return "name: "+this.name +"  ,   "+"id: "+ this.id ;
        }

    运行结果:

    静态代码块

    静态代码块就是用static修饰的用{}括起来的代码段

    特点:

    它是随着类的加载而执行,只执行一次,优先于构造函数
    静态代码块其实就是给类初始化的,而构造代码块是给对象初始化的。
    一个类中可以有多个静态代码块
    作用:

             对静态属性进行初始化

    注意:

              1.静态代码块不能存在于任何方法体内。

              2 .静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。

    代码示例:

    public class demo01 {
        public static void main(String[] args) {
     
            Test t=new Test();
        }
    }
    class Test{
        {
            System.out.println("构造代码块");
        }
        public Test(){
            System.out.println("我是构造方法");
        }
        static {
            System.out.println("我是静态代码块");
        }
    }

    运行结果:

    局部代码块

     位置在方法内部

    作用:

             用于限定变量的生命周期,及早释放变量,提高内存利用率。

    public void show(){
           {
             System.out.println("局部代码块运行!");
           }
    }



  • 相关阅读:
    day 66 crm(3) 自创组件stark界面展示数据
    day 65 crm(2) admin源码解析,以及简单的仿造admin组件
    用 Python+nginx+django 打造在线家庭影院
    django -admin 源码解析
    day 64 crm项目(1) admin组件的初识别以及应用
    云链接 接口不允许 情况 解决方法 mysql Host is not allowed to connect to this MySQL server解决方法
    day 56 linux的安装python3 ,虚拟环境,mysql ,redis
    day55 linux 基础以及系统优化
    Codeforces 989 P循环节01构造 ABCD连通块构造 思维对云遮月参考系坐标轴转换
    Codeforces 990 调和级数路灯贪心暴力 DFS生成树两子树差调水 GCD树连通块暴力
  • 原文地址:https://www.cnblogs.com/lvchengda/p/12761987.html
Copyright © 2011-2022 走看看